Skip to content
This repository has been archived by the owner on May 16, 2024. It is now read-only.

Commit

Permalink
Merge pull request #14 from nodes-android/feature/new_nstack_translation
Browse files Browse the repository at this point in the history
Feature/new nstack translation
  • Loading branch information
vovahost committed May 30, 2018
2 parents 137eadc + c6e96c1 commit 8217bcc
Show file tree
Hide file tree
Showing 12 changed files with 128 additions and 97 deletions.
52 changes: 38 additions & 14 deletions app/build.gradle
Expand Up @@ -13,20 +13,20 @@ translation {
}

android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
compileSdkVersion 27
buildToolsVersion '27.0.3'
flavorDimensions "default"

defaultConfig {
applicationId "dk.nodes.template"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "0.0.1"
targetSdkVersion 27
versionCode 2
versionName "0.0.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

manifestPlaceholders = [
appId: translation.appId,
appId : translation.appId,
apiKey: translation.apiKey
]
}
Expand Down Expand Up @@ -94,15 +94,31 @@ repositories {
}

dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
def kotlinx_coroutines_version = '0.19.1',
support_library_version = '27.1.1',
constraint_layout_version = '1.1.0',
dagger_version = "2.11",
lifecycle_version = "1.1.1",
hockey_sdk_version = "5.1.0",
timber_version = "4.6.0",
junit_version = '4.12',
espresso_core_version = '3.0.1',
mockito_version = '2.7.22',
nodes_nstack_kotlin_version = '2.1.0',
nodes_arch_version = '1.1.8',

rx_android_version = '2.0.2',

retrofit_version = "2.3.0",
okhttp_version = "3.9.0",
store_version = "3.0.0-beta"

fileTree(dir: "libs", include: ["*.jar"])
androidTestImplementation("com.android.support.test.espresso:espresso-core:$espresso_core_version", {
exclude group: "com.android.support", module: "support-annotations"
})

// uncomment me if using multidex
// implementation "com.android.support:multidex:$multidex_version"

implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinx_coroutines_version"
Expand All @@ -119,8 +135,8 @@ dependencies {
implementation "net.hockeyapp.android:HockeySDK:$hockey_sdk_version"
implementation "com.jakewharton.timber:timber:$timber_version"

implementation ("com.squareup.retrofit2:retrofit:$retrofit_version")
implementation ("com.squareup.retrofit2:converter-gson:$retrofit_version") {
implementation("com.squareup.retrofit2:retrofit:$retrofit_version")
implementation("com.squareup.retrofit2:converter-gson:$retrofit_version") {
exclude module: "retrofit:$retrofit_version"
}
implementation "com.squareup.okhttp3:okhttp:$okhttp_version"
Expand All @@ -130,7 +146,7 @@ dependencies {

implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"

implementation "io.reactivex.rxjava2:rxandroid:$rxandroid_version"
implementation "io.reactivex.rxjava2:rxandroid:$rx_android_version"
implementation "com.nytimes.android:store-kotlin3:$store_version"
implementation "com.nytimes.android:middleware3:$store_version"
implementation "com.nytimes.android:filesystem3:$store_version"
Expand All @@ -146,4 +162,12 @@ dependencies {
androidTestImplementation "com.android.support.test.espresso:espresso-core:$espresso_core_version"
androidTestImplementation("com.android.support.test.espresso:espresso-intents:$espresso_core_version")
androidTestImplementation "com.android.support.test.espresso:espresso-contrib:$espresso_core_version"


// The following section is only used to force the latest version to resolve conflicts
implementation "android.arch.core:common:$lifecycle_version"
implementation "android.arch.core:runtime:$lifecycle_version"
implementation "android.arch.lifecycle:livedata-core:$lifecycle_version"
implementation "android.arch.lifecycle:runtime:$lifecycle_version"
implementation "android.arch.lifecycle:common:$lifecycle_version"
}
1 change: 1 addition & 0 deletions app/src/main/assets/all_translations.json
@@ -0,0 +1 @@
{"en-GB":{"default":{"ok":"Ok","cancel":"__cancel","no":"__no","yes":"__yes","retry":"__retry","edit":"__edit","save":"__save","back":"__back","settings":"__settings","later":"__later","next":"__next","previous":"__previous","skip":"__skip"},"versionControl":{"updateHeader":"New version is out, please update","forceHeader":"New version is out, you have to update!","negativeBtn":"Cancel","positiveBtn":"Update","newInVersionHeader":"New in this version","okBtn":"Ok"},"rateReminder":{"title":"Rate the app","body":"We can see you like the application. Would you like to rate it?","yesBtn":"Yes","laterBtn":"Later","noBtn":"No"},"error":{"authenticationError":"__authenticationError","connectionError":"__connectionError","errorTitle":"__errorTitle","unknownError":"__unknownError"}},"es-ES":{"default":{"ok":"Ok","cancel":"__cancel","no":"__no","yes":"__yes","retry":"__retry","edit":"__edit","save":"__save","back":"__back","settings":"__settings","later":"__later","next":"__next","previous":"__previous","skip":"__skip"},"versionControl":{"updateHeader":"Nueva version disponible, por favor actualiza","forceHeader":"Nueva version disponible, tienes que actualizar!","negativeBtn":"Cancelar","positiveBtn":"Actualizar","newInVersionHeader":"Nuevo en esta version","okBtn":"Ok"},"rateReminder":{"title":"Valora la app","body":"Vemos que te gusta la aplicaci\u00f3n.\r\nQuieres valorarla?","yesBtn":"Si","laterBtn":"Despu\u00e9s","noBtn":"No"},"error":{"authenticationError":"__authenticationError","connectionError":"__connectionError","errorTitle":"__errorTitle","unknownError":"__unknownError"}},"da-DK":{"default":{"ok":"Ok","cancel":"Annuller","no":"Nej","yes":"Ja","retry":"Pr\u00f8v igen","edit":"Rediger","save":"Gem","back":"Tilbage","settings":"Indstillinger","later":"Senere","next":"N\u00e6ste","previous":"Forrige","skip":"Spring over"},"versionControl":{"updateHeader":"Ny version er ude","forceHeader":"Ny version er ude, du skal opdatere!","negativeBtn":"Annuller","positiveBtn":"Opdater","newInVersionHeader":"Nyt i denne version","okBtn":"Ok"},"rateReminder":{"title":"__title","body":"__body","yesBtn":"__yesBtn","laterBtn":"__laterBtn","noBtn":"__noBtn"},"error":{"authenticationError":"Login er udl\u00f8bet, login venligst ind igen.","connectionError":"Ingen eller d\u00e5rlig forbindelse, pr\u00f8v igen.","errorTitle":"Fejl","unknownError":"Ukendt fejl, pr\u00f8v igen."}}}
8 changes: 5 additions & 3 deletions app/src/main/java/dk/nodes/template/App.kt
@@ -1,7 +1,6 @@
package dk.nodes.template

import android.app.Application
import android.util.Log
import dk.nodes.nstack.kotlin.NStack
import dk.nodes.template.domain.models.Translation
import dk.nodes.template.injection.components.AppComponent
Expand Down Expand Up @@ -31,9 +30,12 @@ class App : Application()

appComponent.inject(this)

NStack.setLogFunction { tag, msg -> Log.e(tag, msg) }
NStack.setTranslationClass(Translation::class.java)
setupNstack()
}

private fun setupNstack() {
NStack.translationClass = Translation::class.java
NStack.init(this)
}

// uncomment me if multidex
Expand Down
Expand Up @@ -3,7 +3,6 @@
/**
* Created by nstack.io gradle translation plugin
* Built from Accept Header: da-DK
* Generated: Thu May 25 01:49:14 CEST 2017
*/

public class Translation {
Expand Down
Expand Up @@ -5,7 +5,7 @@ import com.google.gson.GsonBuilder
import dagger.Module
import dagger.Provides
import dk.nodes.arch.domain.injection.scopes.AppScope
import dk.nodes.nstack.providers.NMetaInterceptor
import dk.nodes.nstack.kotlin.providers.NMetaInterceptor
import dk.nodes.template.BuildConfig
import dk.nodes.template.network.rest.Api
import dk.nodes.template.network.rest.util.BufferedSourceConverterFactory
Expand Down Expand Up @@ -66,7 +66,7 @@ class RestModule {
.connectTimeout(45, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.addInterceptor(NMetaInterceptor(BuildConfig.FLAVOR))
.addInterceptor(NMetaInterceptor(BuildConfig.BUILD_TYPE))

if (BuildConfig.DEBUG) {
val logging = okhttp3.logging.HttpLoggingInterceptor()
Expand Down
Expand Up @@ -17,6 +17,7 @@ import okio.BufferedSource
* Created by bison on 24-06-2017.
*/
class StorePostRepository(val api: Api, val gson: Gson, val context: Context) : PostRepository {

val postStore: Store<List<Post>, Int> by lazy {
StoreBuilder.parsedWithKey<Int, BufferedSource, List<Post>>()
.fetcher { key -> api.getPostsBuffered() }
Expand Down
@@ -1,17 +1,24 @@
package dk.nodes.template.presentation.base

import android.content.Context
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import dk.nodes.arch.presentation.base.BaseView
import dk.nodes.nstack.kotlin.inflater.NStackBaseContext

abstract class BaseActivity : AppCompatActivity(), BaseView {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

//Make sure all of our dependencies get injected
injectDependencies()
}

override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(NStackBaseContext(newBase))
}

override fun onStart() {
super.onStart()

Expand Down
Expand Up @@ -5,21 +5,22 @@ import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.util.Log
import dk.nodes.nstack.kotlin.NStack
import dk.nodes.nstack.kotlin.UpdateType
import dk.nodes.nstack.kotlin.models.AppUpdateState
import dk.nodes.template.App
import dk.nodes.template.R
import dk.nodes.template.domain.models.Post
import dk.nodes.template.domain.models.Translation
import dk.nodes.template.injection.components.DaggerPresentationComponent
import dk.nodes.template.presentation.base.BaseActivity
import dk.nodes.template.injection.components.PresentationComponent
import dk.nodes.template.injection.modules.PresentationModule
import dk.nodes.template.presentation.base.BaseActivity
import kotlinx.android.synthetic.main.activity_main.*
import timber.log.Timber
import javax.inject.Inject

class MainActivity : BaseActivity(), MainContract.View {
val component: PresentationComponent by lazy {

private val component: PresentationComponent by lazy {
DaggerPresentationComponent.builder()
.appComponent((application as App).appComponent)
.presentationModule(PresentationModule())
Expand All @@ -40,21 +41,28 @@ class MainActivity : BaseActivity(), MainContract.View {

//textview = findViewById(R.id.textview) as TextView
textview.text = Translation.defaultSection.settings
NStack.translate(this@MainActivity)

NStack.appOpen({ success -> Log.e("debug", "appopen success = $success") })
setupNstack()
}

NStack.versionControl(this@MainActivity, { type, builder ->
when (type) {
UpdateType.UPDATE -> builder?.show()
UpdateType.FORCE_UPDATE -> {
//builder?.setOnDismissListener { finish() }
//builder?.show()
private fun setupNstack() {
NStack.onAppUpdateListener = { appUpdate ->
when (appUpdate.state) {
AppUpdateState.NONE -> {
// Do nothing because there is no update
}
AppUpdateState.UPDATE -> {
// Show a user a dialog that is dismissible
}
AppUpdateState.FORCE -> {
// Show the user an undismissable dialog
}
else -> {
AppUpdateState.CHANGELOG -> {
// Show change log (Not yet implemented because its never used)
}
}
})
}
NStack.appOpen({ success -> Log.e("debug", "appopen success = $success") })
}


Expand Down Expand Up @@ -82,13 +90,6 @@ class MainActivity : BaseActivity(), MainContract.View {
})
}


override fun onResume() {
super.onResume()
NStack.translate(this@MainActivity)
}


override fun showPosts(posts: List<Post>) {
for (post in posts) {
Timber.e(post.toString())
Expand Down
25 changes: 15 additions & 10 deletions app/src/main/res/layout/activity_main.xml
@@ -1,8 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:nstack="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:orientation="vertical"
tools:ignore="MissingPrefix">

<LinearLayout
android:layout_width="match_parent"
Expand All @@ -19,14 +23,15 @@
android:layout_marginRight="20dp"
android:layout_weight="1"
android:text="..."
android:textSize="14sp" />
android:textSize="14sp"/>

<Button
android:id="@+id/saveButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SAVE"
android:textSize="12sp" />
tools:text="SAVE"
android:textSize="12sp"
nstack:text="default_save"/>
</LinearLayout>

<TextView
Expand All @@ -37,14 +42,14 @@
android:gravity="center"
android:text="..."
android:textColor="#ff3737"
android:textSize="14sp" />
android:textSize="14sp"/>


<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="16dp"
android:background="#e2e2e2" />
android:background="#e2e2e2"/>


<LinearLayout
Expand All @@ -60,15 +65,15 @@
android:layout_height="wrap_content"
android:layout_weight="0"
android:text="Open AlertDialog"
android:textSize="12sp" />
android:textSize="12sp"/>

<Button
android:id="@+id/buttonOpenActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:text="Open new Activity"
android:textSize="12sp" />
android:textSize="12sp"/>

</LinearLayout>

Expand All @@ -77,6 +82,6 @@
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="16dp"
android:background="#e2e2e2" />
android:background="#e2e2e2"/>

</LinearLayout>
30 changes: 30 additions & 0 deletions app/src/main/res/values/nstack_keys.xml
@@ -0,0 +1,30 @@
<resources>
<string name='nstack_default_ok' formatted='false'>default_ok</string>
<string name='nstack_default_cancel' formatted='false'>default_cancel</string>
<string name='nstack_default_no' formatted='false'>default_no</string>
<string name='nstack_default_yes' formatted='false'>default_yes</string>
<string name='nstack_default_retry' formatted='false'>default_retry</string>
<string name='nstack_default_edit' formatted='false'>default_edit</string>
<string name='nstack_default_save' formatted='false'>default_save</string>
<string name='nstack_default_back' formatted='false'>default_back</string>
<string name='nstack_default_settings' formatted='false'>default_settings</string>
<string name='nstack_default_later' formatted='false'>default_later</string>
<string name='nstack_default_next' formatted='false'>default_next</string>
<string name='nstack_default_previous' formatted='false'>default_previous</string>
<string name='nstack_default_skip' formatted='false'>default_skip</string>
<string name='nstack_versionControl_updateHeader' formatted='false'>versionControl_updateHeader</string>
<string name='nstack_versionControl_forceHeader' formatted='false'>versionControl_forceHeader</string>
<string name='nstack_versionControl_negativeBtn' formatted='false'>versionControl_negativeBtn</string>
<string name='nstack_versionControl_positiveBtn' formatted='false'>versionControl_positiveBtn</string>
<string name='nstack_versionControl_newInVersionHeader' formatted='false'>versionControl_newInVersionHeader</string>
<string name='nstack_versionControl_okBtn' formatted='false'>versionControl_okBtn</string>
<string name='nstack_rateReminder_title' formatted='false'>rateReminder_title</string>
<string name='nstack_rateReminder_body' formatted='false'>rateReminder_body</string>
<string name='nstack_rateReminder_yesBtn' formatted='false'>rateReminder_yesBtn</string>
<string name='nstack_rateReminder_laterBtn' formatted='false'>rateReminder_laterBtn</string>
<string name='nstack_rateReminder_noBtn' formatted='false'>rateReminder_noBtn</string>
<string name='nstack_error_authenticationError' formatted='false'>error_authenticationError</string>
<string name='nstack_error_connectionError' formatted='false'>error_connectionError</string>
<string name='nstack_error_errorTitle' formatted='false'>error_errorTitle</string>
<string name='nstack_error_unknownError' formatted='false'>error_unknownError</string>
</resources>

0 comments on commit 8217bcc

Please sign in to comment.