Fix dismissing and restoring note widget
This commit is contained in:
parent
3c9489d696
commit
6d93731bfd
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user