NoteWidget: ensure that linked file is properly reloaded on resume

This commit is contained in:
MM20 2023-06-14 21:31:21 +02:00
parent 9f0d441538
commit 3fada7ae97
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
2 changed files with 64 additions and 45 deletions

View File

@ -100,9 +100,12 @@ fun NotesWidget(
val isLastWidget by viewModel.isLastNoteWidget.collectAsState(null) val isLastWidget by viewModel.isLastNoteWidget.collectAsState(null)
LaunchedEffect(widget) { LaunchedEffect(widget) {
lifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) {
viewModel.updateWidget(context, widget) viewModel.updateWidget(context, widget)
} }
LaunchedEffect(Unit) {
lifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.RESUMED) {
viewModel.onResume(context)
}
} }
val exportLauncher = rememberLauncherForActivityResult( val exportLauncher = rememberLauncherForActivityResult(
@ -489,7 +492,9 @@ fun SelectableNoteContent(
onClick = onSelect, onClick = onSelect,
onLongClick = { expanded = !expanded }, onLongClick = { expanded = !expanded },
) )
.animateContentSize() then if (expanded) Modifier.heightIn(min = 100.dp) else Modifier.height(100.dp), .animateContentSize() then if (expanded) Modifier.heightIn(min = 100.dp) else Modifier.height(
100.dp
),
) { ) {
MarkdownText( MarkdownText(
modifier = Modifier modifier = Modifier

View File

@ -3,6 +3,7 @@ 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
@ -51,6 +52,23 @@ class NotesWidgetVM(
linkedFileReadError.value = false linkedFileReadError.value = false
linkedFileSavingState.value = LinkedFileSavingState.Saved linkedFileSavingState.value = LinkedFileSavingState.Saved
if (file != null) { if (file != null) {
reloadLinkedFile(context)
} else {
noteText.value = TextFieldValue(widget.config.storedText)
}
}
}
fun onResume(context: Context) {
val widget = widget.value ?: return
if (widget.config.linkedFile != null) {
reloadLinkedFile(context)
}
}
private fun reloadLinkedFile(context: Context) {
val widget = widget.value ?: return
val file = widget.config.linkedFile ?: return
val uri = Uri.parse(file) val uri = Uri.parse(file)
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
try { try {
@ -94,10 +112,6 @@ class NotesWidgetVM(
) )
} }
} }
} else {
noteText.value = TextFieldValue(widget.config.storedText)
}
}
} }
private var updateJob: Job? = null private var updateJob: Job? = null