Use dependency injection for most singletons

This commit is contained in:
MM20
2021-10-10 12:15:54 +02:00
parent 023bb2cbb1
commit 087d4fd455
144 changed files with 1789 additions and 1277 deletions
+2
View File
@@ -42,6 +42,8 @@ dependencies {
implementation(libs.bundles.androidx.lifecycle)
implementation(libs.koin.android)
implementation(project(":preferences"))
implementation(project(":currencies"))
implementation(project(":search"))
@@ -0,0 +1,12 @@
package de.mm20.launcher2.unitconverter
import de.mm20.launcher2.currencies.CurrencyRepository
import org.koin.android.ext.koin.androidContext
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
val unitConverterModule = module {
single { CurrencyRepository(androidContext()) }
single { UnitConverterRepository(androidContext()) }
viewModel { UnitConverterViewModel(get()) }
}
@@ -6,25 +6,11 @@ import de.mm20.launcher2.currencies.CurrencyRepository
import de.mm20.launcher2.search.BaseSearchableRepository
import de.mm20.launcher2.search.data.UnitConverter
class UnitConverterRepository private constructor(val context: Context) : BaseSearchableRepository() {
init {
CurrencyRepository.getInstance(context)
}
class UnitConverterRepository(val context: Context) : BaseSearchableRepository() {
val unitConverter = MutableLiveData<UnitConverter?>()
override suspend fun search(query: String) {
unitConverter.value = UnitConverter.search(context, query)
}
companion object {
private lateinit var instance : UnitConverterRepository
fun getInstance(context: Context) : UnitConverterRepository {
if(!::instance.isInitialized) instance = UnitConverterRepository(context.applicationContext)
return instance
}
}
}
@@ -1,8 +1,9 @@
package de.mm20.launcher2.unitconverter
import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.ViewModel
class UnitConverterViewModel(app: Application): AndroidViewModel(app) {
val unitConverter = UnitConverterRepository.getInstance(app).unitConverter
class UnitConverterViewModel(
unitConverterRepository: UnitConverterRepository
): ViewModel() {
val unitConverter = unitConverterRepository.unitConverter
}
@@ -3,7 +3,6 @@ package de.mm20.launcher2.unitconverter.converters
import android.content.Context
import android.icu.text.PluralRules
import android.icu.util.Currency
import android.os.Build
import de.mm20.launcher2.currencies.CurrencyRepository
import de.mm20.launcher2.search.data.CurrencyUnitConverter
import de.mm20.launcher2.search.data.UnitConverter
@@ -13,12 +12,14 @@ import java.text.DecimalFormat
import java.util.Locale
import java.util.Currency as JCurrency
import kotlin.math.abs
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
class CurrencyConverter(context: Context) : Converter() {
class CurrencyConverter(context: Context) : Converter(), KoinComponent {
override val dimension: Dimension = Dimension.Currency
val repository = CurrencyRepository.getInstance(context)
val repository: CurrencyRepository by inject()
private val topCurrencies = arrayOf("USD", "EUR", "JPY", "GBP", "AUD")