From fb407afe216570eb10b682572e8e1a8d7f0c4982 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:18:31 +0100 Subject: [PATCH] Save widgets in WidgetRepository coroutine scope --- .../launcher2/ui/launcher/widgets/WidgetsVM.kt | 10 +++------- .../de/mm20/launcher2/widgets/WidgetRepository.kt | 14 ++++++++------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetsVM.kt b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetsVM.kt index 70f9ad2e..39693231 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetsVM.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetsVM.kt @@ -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) { - viewModelScope.launch { - widgetRepository.saveWidgets(widgets) - } + widgetRepository.saveWidgets(widgets) } - fun getInternalWidgets() : List { + fun getInternalWidgets(): List { return widgetRepository.getInternalWidgets() } } \ No newline at end of file diff --git a/widgets/src/main/java/de/mm20/launcher2/widgets/WidgetRepository.kt b/widgets/src/main/java/de/mm20/launcher2/widgets/WidgetRepository.kt index 65e3de6e..9d08cb96 100644 --- a/widgets/src/main/java/de/mm20/launcher2/widgets/WidgetRepository.kt +++ b/widgets/src/main/java/de/mm20/launcher2/widgets/WidgetRepository.kt @@ -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 { return withContext(Dispatchers.IO) { AppDatabase.getInstance(context).widgetDao().getWidgets().map { Widget(it) } @@ -27,9 +27,11 @@ class WidgetRepository( } - suspend fun saveWidgets(widgets: List) { - withContext(Dispatchers.IO) { - AppDatabase.getInstance(context).widgetDao().updateWidgets(widgets.mapIndexed { i, widget -> widget.toDatabaseEntity(i) }) + fun saveWidgets(widgets: List) { + scope.launch { + withContext(Dispatchers.IO) { + AppDatabase.getInstance(context).widgetDao().updateWidgets(widgets.mapIndexed { i, widget -> widget.toDatabaseEntity(i) }) + } } } } \ No newline at end of file