Save widgets in WidgetRepository coroutine scope

This commit is contained in:
MM20 2022-02-07 11:18:31 +01:00
parent 5c104f76ee
commit fb407afe21
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
2 changed files with 11 additions and 13 deletions

View File

@ -3,14 +3,12 @@ package de.mm20.launcher2.ui.launcher.widgets
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.liveData
import androidx.lifecycle.viewModelScope
import de.mm20.launcher2.widgets.Widget
import de.mm20.launcher2.widgets.WidgetRepository
import kotlinx.coroutines.launch
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
class WidgetsVM: ViewModel(), KoinComponent {
class WidgetsVM : ViewModel(), KoinComponent {
private val widgetRepository: WidgetRepository by inject()
val isEditMode = MutableLiveData(false)
@ -24,12 +22,10 @@ class WidgetsVM: ViewModel(), KoinComponent {
}
fun saveWidgets(widgets: List<Widget>) {
viewModelScope.launch {
widgetRepository.saveWidgets(widgets)
}
widgetRepository.saveWidgets(widgets)
}
fun getInternalWidgets() : List<Widget> {
fun getInternalWidgets(): List<Widget> {
return widgetRepository.getInternalWidgets()
}
}

View File

@ -3,15 +3,15 @@ package de.mm20.launcher2.widgets
import android.content.Context
import de.mm20.launcher2.widgets.R
import de.mm20.launcher2.database.AppDatabase
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.withContext
import kotlinx.coroutines.*
import java.util.concurrent.Executors
class WidgetRepository(
val context: Context
) {
private val scope = CoroutineScope(Job() + Dispatchers.Default)
suspend fun getWidgets(): List<Widget> {
return withContext(Dispatchers.IO) {
AppDatabase.getInstance(context).widgetDao().getWidgets().map { Widget(it) }
@ -27,9 +27,11 @@ class WidgetRepository(
}
suspend fun saveWidgets(widgets: List<Widget>) {
withContext(Dispatchers.IO) {
AppDatabase.getInstance(context).widgetDao().updateWidgets(widgets.mapIndexed { i, widget -> widget.toDatabaseEntity(i) })
fun saveWidgets(widgets: List<Widget>) {
scope.launch {
withContext(Dispatchers.IO) {
AppDatabase.getInstance(context).widgetDao().updateWidgets(widgets.mapIndexed { i, widget -> widget.toDatabaseEntity(i) })
}
}
}
}