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.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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user