Loading gradle.properties +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ androidCompileSdkVersion=27 androidBuildToolsVersion=27.0.3 androidSupportLibraryVersion=27.0.2 timberVersion=4.5.1 koinVersion=0.9.1 robolectricVersion=3.7.1 junitVersion=4.12 Loading k9mail/build.gradle +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ dependencies { implementation 'com.xwray:groupie:2.0.3' implementation 'com.xwray:groupie-kotlin-android-extensions:2.0.3' implementation "org.jetbrains.anko:anko-coroutines:0.10.4" implementation "org.koin:koin-android-architecture:${koinVersion}" androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' Loading @@ -50,6 +51,7 @@ dependencies { testImplementation "com.google.truth:truth:${truthVersion}" testImplementation "org.mockito:mockito-core:${mockitoVersion}" testImplementation "org.jdom:jdom2:2.0.6" testImplementation "org.koin:koin-test:${koinVersion}" } android { Loading k9mail/src/main/java/com/fsck/k9/DI.kt 0 → 100644 +43 −0 Original line number Diff line number Diff line package com.fsck.k9 import android.app.Application import com.fsck.k9.ui.settings.settingsUiModule import org.koin.Koin import org.koin.KoinContext import org.koin.android.ext.koin.with import org.koin.android.logger.AndroidLogger import org.koin.core.parameter.Parameters import org.koin.dsl.module.applicationContext import org.koin.log.EmptyLogger import org.koin.standalone.StandAloneContext object DI { private val mainModule = applicationContext { bean { Preferences.getPreferences(get()) } } val appModules = listOf( mainModule, settingsUiModule ) @JvmStatic fun start(application: Application) { @Suppress("ConstantConditionIf") Koin.logger = if (BuildConfig.DEBUG) AndroidLogger() else EmptyLogger() StandAloneContext.startKoin(appModules) with application } @JvmOverloads @JvmStatic fun <T : Any> get(clazz: Class<T>, name: String = "", parameters: Parameters = { emptyMap() }): T { val koinContext = StandAloneContext.koinContext as KoinContext val kClass = clazz.kotlin return if (name.isEmpty()) { koinContext.resolveInstance(kClass, parameters) { koinContext.beanRegistry.searchAll(kClass) } } else { koinContext.resolveInstance(kClass, parameters) { koinContext.beanRegistry.searchByName(name) } } } } k9mail/src/main/java/com/fsck/k9/K9.java +1 −0 Original line number Diff line number Diff line Loading @@ -530,6 +530,7 @@ public class K9 extends Application { super.onCreate(); app = this; DI.start(this); Globals.setContext(this); K9MailLib.setDebugStatus(new K9MailLib.DebugStatus() { Loading k9mail/src/main/java/com/fsck/k9/ui/account/AccountsLiveData.kt +6 −7 Original line number Diff line number Diff line package com.fsck.k9.ui.account import android.arch.lifecycle.LiveData import android.content.Context import com.fsck.k9.Account import com.fsck.k9.Preferences import kotlinx.coroutines.experimental.android.UI import kotlinx.coroutines.experimental.launch import org.jetbrains.anko.coroutines.experimental.bg class AccountsLiveData(context: Context) : LiveData<List<Account>>() { class AccountsLiveData(val preferences: Preferences) : LiveData<List<Account>>() { init { loadAccountsAsync(context) loadAccountsAsync() } private fun loadAccountsAsync(context: Context) { private fun loadAccountsAsync() { launch(UI) { val accounts = bg { loadAccounts(context) loadAccounts() } value = accounts.await() } } private fun loadAccounts(context: Context): List<Account> { return Preferences.getPreferences(context).accounts private fun loadAccounts(): List<Account> { return preferences.accounts } } Loading
gradle.properties +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ androidCompileSdkVersion=27 androidBuildToolsVersion=27.0.3 androidSupportLibraryVersion=27.0.2 timberVersion=4.5.1 koinVersion=0.9.1 robolectricVersion=3.7.1 junitVersion=4.12 Loading
k9mail/build.gradle +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ dependencies { implementation 'com.xwray:groupie:2.0.3' implementation 'com.xwray:groupie-kotlin-android-extensions:2.0.3' implementation "org.jetbrains.anko:anko-coroutines:0.10.4" implementation "org.koin:koin-android-architecture:${koinVersion}" androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' Loading @@ -50,6 +51,7 @@ dependencies { testImplementation "com.google.truth:truth:${truthVersion}" testImplementation "org.mockito:mockito-core:${mockitoVersion}" testImplementation "org.jdom:jdom2:2.0.6" testImplementation "org.koin:koin-test:${koinVersion}" } android { Loading
k9mail/src/main/java/com/fsck/k9/DI.kt 0 → 100644 +43 −0 Original line number Diff line number Diff line package com.fsck.k9 import android.app.Application import com.fsck.k9.ui.settings.settingsUiModule import org.koin.Koin import org.koin.KoinContext import org.koin.android.ext.koin.with import org.koin.android.logger.AndroidLogger import org.koin.core.parameter.Parameters import org.koin.dsl.module.applicationContext import org.koin.log.EmptyLogger import org.koin.standalone.StandAloneContext object DI { private val mainModule = applicationContext { bean { Preferences.getPreferences(get()) } } val appModules = listOf( mainModule, settingsUiModule ) @JvmStatic fun start(application: Application) { @Suppress("ConstantConditionIf") Koin.logger = if (BuildConfig.DEBUG) AndroidLogger() else EmptyLogger() StandAloneContext.startKoin(appModules) with application } @JvmOverloads @JvmStatic fun <T : Any> get(clazz: Class<T>, name: String = "", parameters: Parameters = { emptyMap() }): T { val koinContext = StandAloneContext.koinContext as KoinContext val kClass = clazz.kotlin return if (name.isEmpty()) { koinContext.resolveInstance(kClass, parameters) { koinContext.beanRegistry.searchAll(kClass) } } else { koinContext.resolveInstance(kClass, parameters) { koinContext.beanRegistry.searchByName(name) } } } }
k9mail/src/main/java/com/fsck/k9/K9.java +1 −0 Original line number Diff line number Diff line Loading @@ -530,6 +530,7 @@ public class K9 extends Application { super.onCreate(); app = this; DI.start(this); Globals.setContext(this); K9MailLib.setDebugStatus(new K9MailLib.DebugStatus() { Loading
k9mail/src/main/java/com/fsck/k9/ui/account/AccountsLiveData.kt +6 −7 Original line number Diff line number Diff line package com.fsck.k9.ui.account import android.arch.lifecycle.LiveData import android.content.Context import com.fsck.k9.Account import com.fsck.k9.Preferences import kotlinx.coroutines.experimental.android.UI import kotlinx.coroutines.experimental.launch import org.jetbrains.anko.coroutines.experimental.bg class AccountsLiveData(context: Context) : LiveData<List<Account>>() { class AccountsLiveData(val preferences: Preferences) : LiveData<List<Account>>() { init { loadAccountsAsync(context) loadAccountsAsync() } private fun loadAccountsAsync(context: Context) { private fun loadAccountsAsync() { launch(UI) { val accounts = bg { loadAccounts(context) loadAccounts() } value = accounts.await() } } private fun loadAccounts(context: Context): List<Account> { return Preferences.getPreferences(context).accounts private fun loadAccounts(): List<Account> { return preferences.accounts } }