diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidget.kt index cf102d51..1060933a 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidget.kt @@ -78,6 +78,7 @@ import de.mm20.launcher2.ui.component.markdown.MarkdownEditor import de.mm20.launcher2.ui.component.markdown.MarkdownText import de.mm20.launcher2.ui.locals.LocalSnackbarHostState import de.mm20.launcher2.widgets.NotesWidget +import de.mm20.launcher2.widgets.NotesWidgetConfig import de.mm20.launcher2.widgets.Widget import kotlinx.coroutines.launch import java.time.ZonedDateTime @@ -365,15 +366,12 @@ fun NotesWidget( }, onClick = { val wasLast = isLastWidget != false - viewModel.dismissWidget(widget) - val newWidget = - if (wasLast) { - NotesWidget(UUID.randomUUID()).also { - onWidgetAdd(it, 0) - } - } else { - null - } + + if (wasLast) { + viewModel.updateWidgetContent(NotesWidgetConfig()) + } else { + viewModel.dismissWidget(widget) + } lifecycleOwner.lifecycleScope.launch { val result = snackbarHostState.showSnackbar( @@ -382,9 +380,10 @@ fun NotesWidget( duration = SnackbarDuration.Short, ) if (result == SnackbarResult.ActionPerformed) { - onWidgetAdd(widget, 0) - newWidget?.let { - viewModel.dismissWidget(it) + if (wasLast) { + viewModel.updateWidgetContent(widget.config) + } else { + onWidgetAdd(widget, 0) } } } diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidgetVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidgetVM.kt index 0a35c296..19f063cd 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidgetVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/notes/NotesWidgetVM.kt @@ -3,7 +3,6 @@ package de.mm20.launcher2.ui.launcher.widgets.notes import android.content.Context import android.content.Intent import android.net.Uri -import android.util.Log import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.text.input.TextFieldValue import androidx.lifecycle.ViewModel @@ -13,6 +12,7 @@ import androidx.lifecycle.viewmodel.viewModelFactory import de.mm20.launcher2.crashreporter.CrashReporter import de.mm20.launcher2.services.widgets.WidgetsService import de.mm20.launcher2.widgets.NotesWidget +import de.mm20.launcher2.widgets.NotesWidgetConfig import de.mm20.launcher2.widgets.Widget import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -261,6 +261,13 @@ class NotesWidgetVM( } } + fun updateWidgetContent(config: NotesWidgetConfig) { + val updatedWidget = widget.value?.copy(config = config) ?: return + noteText.value = TextFieldValue(config.storedText) + widget.value = updatedWidget + widgetsService.updateWidget(updatedWidget) + } + companion object : KoinComponent { val Factory = viewModelFactory {