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

View File

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