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
@@ -46,6 +46,8 @@ dependencies {
implementation(libs.materialcomponents)
implementation(libs.koin.android)
implementation(project(":weather"))
implementation(project(":calendar"))
implementation(project(":music"))
@@ -0,0 +1,10 @@
package de.mm20.launcher2.widgets
import org.koin.android.ext.koin.androidContext
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module
val widgetsModule = module {
single { WidgetRepository(androidContext()) }
viewModel { WidgetViewModel(get(), get()) }
}
@@ -8,7 +8,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.withContext
import java.util.concurrent.Executors
internal class WidgetRepository(
class WidgetRepository(
val context: Context
) {
@@ -1,18 +1,17 @@
package de.mm20.launcher2.widgets
import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import de.mm20.launcher2.calendar.CalendarRepository
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class WidgetViewModel(app: Application) : AndroidViewModel(app) {
class WidgetViewModel(
private val widgetRepository: WidgetRepository,
private val calendarRepository: CalendarRepository
) : ViewModel() {
private val widgetRepository: WidgetRepository by lazy {
WidgetRepository(app)
}
suspend fun getWidgets(): List<Widget> {
return withContext(viewModelScope.coroutineContext + Dispatchers.IO) {
@@ -30,10 +29,6 @@ class WidgetViewModel(app: Application) : AndroidViewModel(app) {
return widgetRepository.getInternalWidgets()
}
private val calendarRepository: CalendarRepository by lazy {
CalendarRepository.getInstance(app)
}
fun requestCalendarUpdate() {
calendarRepository.requestCalendarUpdate()
}