Fix dismissing and restoring note widget

This commit is contained in:
MM20 2024-02-20 18:33:31 +01:00
parent 3c9489d696
commit 6d93731bfd
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
2 changed files with 19 additions and 13 deletions

View File

@ -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.component.markdown.MarkdownText
import de.mm20.launcher2.ui.locals.LocalSnackbarHostState import de.mm20.launcher2.ui.locals.LocalSnackbarHostState
import de.mm20.launcher2.widgets.NotesWidget import de.mm20.launcher2.widgets.NotesWidget
import de.mm20.launcher2.widgets.NotesWidgetConfig
import de.mm20.launcher2.widgets.Widget import de.mm20.launcher2.widgets.Widget
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.time.ZonedDateTime import java.time.ZonedDateTime
@ -365,15 +366,12 @@ fun NotesWidget(
}, },
onClick = { onClick = {
val wasLast = isLastWidget != false val wasLast = isLastWidget != false
viewModel.dismissWidget(widget)
val newWidget = if (wasLast) {
if (wasLast) { viewModel.updateWidgetContent(NotesWidgetConfig())
NotesWidget(UUID.randomUUID()).also { } else {
onWidgetAdd(it, 0) viewModel.dismissWidget(widget)
} }
} else {
null
}
lifecycleOwner.lifecycleScope.launch { lifecycleOwner.lifecycleScope.launch {
val result = snackbarHostState.showSnackbar( val result = snackbarHostState.showSnackbar(
@ -382,9 +380,10 @@ fun NotesWidget(
duration = SnackbarDuration.Short, duration = SnackbarDuration.Short,
) )
if (result == SnackbarResult.ActionPerformed) { if (result == SnackbarResult.ActionPerformed) {
onWidgetAdd(widget, 0) if (wasLast) {
newWidget?.let { viewModel.updateWidgetContent(widget.config)
viewModel.dismissWidget(it) } else {
onWidgetAdd(widget, 0)
} }
} }
} }

View File

@ -3,7 +3,6 @@ package de.mm20.launcher2.ui.launcher.widgets.notes
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.util.Log
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.text.input.TextFieldValue
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
@ -13,6 +12,7 @@ import androidx.lifecycle.viewmodel.viewModelFactory
import de.mm20.launcher2.crashreporter.CrashReporter import de.mm20.launcher2.crashreporter.CrashReporter
import de.mm20.launcher2.services.widgets.WidgetsService import de.mm20.launcher2.services.widgets.WidgetsService
import de.mm20.launcher2.widgets.NotesWidget import de.mm20.launcher2.widgets.NotesWidget
import de.mm20.launcher2.widgets.NotesWidgetConfig
import de.mm20.launcher2.widgets.Widget import de.mm20.launcher2.widgets.Widget
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job 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 { companion object : KoinComponent {
val Factory = viewModelFactory { val Factory = viewModelFactory {