mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
fix: Cancelable during save
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user