From 3039efc67cc5d52aea43c227b9cd900cc575349c Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 28 Oct 2025 14:07:32 +0100 Subject: [PATCH] fix: Cancelable during save --- .../DatabaseTaskNotificationService.kt | 4 +- .../tasks/ProgressTaskDialogFragment.kt | 51 ++++++++----------- 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt index c842644c2..e0feac1a4 100644 --- a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt @@ -735,7 +735,9 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress // Close channels closeChallengeResponse() // Restore previous message - mProgressMessage = previousMessage + mProgressMessage = previousMessage.apply { + cancelable = null + } notifyProgressMessage() } return response diff --git a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskDialogFragment.kt b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskDialogFragment.kt index 705f20faa..70a725f0f 100644 --- a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskDialogFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskDialogFragment.kt @@ -68,6 +68,27 @@ open class ProgressTaskDialogFragment : DialogFragment() { isCancelable = false + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + progressTaskViewModel.progressMessageState.collect { state -> + titleView?.text = state.title + messageView?.text = state.message + warningView?.apply { + state.warning?.let { warning -> + text = warning + visibility = View.VISIBLE + } ?: run { + visibility = View.GONE + } + } + cancelButton?.isVisible = state.cancelable != null + cancelButton?.setOnClickListener { + state.cancelable?.invoke() + } + } + } + } + return builder.create() } } catch (e: Exception) { @@ -76,36 +97,6 @@ open class ProgressTaskDialogFragment : DialogFragment() { return super.onCreateDialog(savedInstanceState) } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - lifecycleScope.launch { - repeatOnLifecycle(Lifecycle.State.RESUMED) { - progressTaskViewModel.progressMessageState.collect { state -> - updateView(titleView, state.title) - updateView(messageView, state.message) - updateView(warningView, state.warning) - activity?.lifecycleScope?.launch { - cancelButton?.isVisible = state.cancelable != null - cancelButton?.setOnClickListener { - state.cancelable?.invoke() - } - } - } - } - } - } - - private fun updateView(textView: TextView?, value: String?) { - activity?.lifecycleScope?.launch { - if (value == null) { - textView?.visibility = View.GONE - } else { - textView?.text = value - textView?.visibility = View.VISIBLE - } - } - } - companion object { private val TAG = ProgressTaskDialogFragment::class.java.simpleName const val PROGRESS_TASK_DIALOG_TAG = "progressDialogFragment"