Use dependency injection for most singletons
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user