From d99edb6b4dd221ddc14cb3830e85bcd1c8ee6aed Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Wed, 29 Oct 2025 16:18:51 +0100 Subject: [PATCH] fix: database dialog subtitle #2254 --- CHANGELOG | 1 + .../activities/legacy/DatabaseActivity.kt | 22 ++++------- .../DatabaseTaskNotificationService.kt | 4 +- .../tasks/ProgressTaskDialogFragment.kt | 39 ++++++++++++++----- .../keepass/tasks/ProgressTaskViewModel.kt | 25 +++++------- .../metadata/android/en-US/changelogs/148.txt | 3 +- .../metadata/android/fr-FR/changelogs/148.txt | 3 +- 7 files changed, 55 insertions(+), 42 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index bdfbc4929..20c81a96c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ KeePassDX(4.2.3) * Fix multiple Passkey selection #2253 + * Fix database dialog subtitle #2254 KeePassDX(4.2.2) * Fix database merge algorithm #2223 diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseActivity.kt index d86ad34a0..fe5571ca6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/legacy/DatabaseActivity.kt @@ -95,7 +95,6 @@ abstract class DatabaseActivity : StylishActivity(), DatabaseRetrieval { finish() } } - is DatabaseViewModel.ActionState.OnDatabaseInfoChanged -> { if (manageDatabaseInfo()) { showDatabaseChangedDialog( @@ -105,33 +104,28 @@ abstract class DatabaseActivity : StylishActivity(), DatabaseRetrieval { ) } } - is DatabaseViewModel.ActionState.OnDatabaseActionRequested -> { startDatabasePermissionService( uiState.bundle, uiState.actionTask ) } - is DatabaseViewModel.ActionState.OnDatabaseActionStarted -> { - progressTaskViewModel.start(uiState.progressMessage) + progressTaskViewModel.show(uiState.progressMessage) } - is DatabaseViewModel.ActionState.OnDatabaseActionUpdated -> { - progressTaskViewModel.update(uiState.progressMessage) + progressTaskViewModel.show(uiState.progressMessage) } - is DatabaseViewModel.ActionState.OnDatabaseActionStopped -> { - progressTaskViewModel.stop() + progressTaskViewModel.hide() } - is DatabaseViewModel.ActionState.OnDatabaseActionFinished -> { onDatabaseActionFinished( uiState.database, uiState.actionTask, uiState.result ) - progressTaskViewModel.stop() + progressTaskViewModel.hide() } } } @@ -142,9 +136,9 @@ abstract class DatabaseActivity : StylishActivity(), DatabaseRetrieval { repeatOnLifecycle(Lifecycle.State.RESUMED) { progressTaskViewModel.progressTaskState.collect { state -> when (state) { - ProgressTaskViewModel.ProgressTaskState.Start -> - showDialog() - ProgressTaskViewModel.ProgressTaskState.Stop -> + is ProgressTaskViewModel.ProgressTaskState.Show -> + startDialog() + is ProgressTaskViewModel.ProgressTaskState.Hide -> stopDialog() } } @@ -245,7 +239,7 @@ abstract class DatabaseActivity : StylishActivity(), DatabaseRetrieval { } } - private fun showDialog() { + private fun startDialog() { lifecycleScope.launch { if (showDatabaseDialog()) { if (progressTaskDialogFragment == null) { 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 2bcda248b..82e69845a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt @@ -661,7 +661,9 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress } private fun updateMessage(resId: Int) { - mProgressMessage.messageId = resId + mProgressMessage = mProgressMessage.copy( + messageId = resId + ) notifyProgressMessage() } 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 bd342976e..e0ee59e45 100644 --- a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskDialogFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskDialogFragment.kt @@ -70,16 +70,35 @@ open class ProgressTaskDialogFragment : DialogFragment() { lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.STARTED) { - progressTaskViewModel.progressMessageState.collect { state -> - updateView(titleView, - state.titleId?.let { title -> getString(title) }) - updateView(messageView, - state.messageId?.let { message -> getString(message) }) - updateView(warningView, - state.warningId?.let { warning -> getString(warning) }) - cancelButton?.isVisible = state.cancelable != null - cancelButton?.setOnClickListener { - state.cancelable?.invoke() + progressTaskViewModel.progressTaskState.collect { state -> + when (state) { + is ProgressTaskViewModel.ProgressTaskState.Show -> { + val value = state.value + updateView( + titleView, + value.titleId?.let { title -> + getString(title) + }) + updateView( + messageView, + value.messageId?.let { message -> + getString(message) + }) + updateView( + warningView, + value.warningId?.let { warning -> + getString(warning) + }) + cancelButton?.apply { + isVisible = value.cancelable != null + setOnClickListener { + value.cancelable?.invoke() + } + } + } + else -> { + // Nothing here, this fragment is stopped externally + } } } } diff --git a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskViewModel.kt b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskViewModel.kt index f8812f682..0e5585291 100644 --- a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskViewModel.kt +++ b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskViewModel.kt @@ -4,30 +4,25 @@ import androidx.lifecycle.ViewModel import com.kunzisoft.keepass.database.ProgressMessage import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.update class ProgressTaskViewModel: ViewModel() { - private val mProgressMessageState = MutableStateFlow(ProgressMessage()) - val progressMessageState: StateFlow = mProgressMessageState - - private val mProgressTaskState = MutableStateFlow(ProgressTaskState.Stop) + private val mProgressTaskState = MutableStateFlow(ProgressTaskState.Hide) val progressTaskState: StateFlow = mProgressTaskState - fun update(value: ProgressMessage) { - mProgressMessageState.value = value + fun show(value: ProgressMessage) { + mProgressTaskState.update { currentState -> + ProgressTaskState.Show(value) + } } - fun start(value: ProgressMessage) { - mProgressTaskState.value = ProgressTaskState.Start - update(value) - } - - fun stop() { - mProgressTaskState.value = ProgressTaskState.Stop + fun hide() { + mProgressTaskState.value = ProgressTaskState.Hide } sealed class ProgressTaskState { - object Start: ProgressTaskState() - object Stop: ProgressTaskState() + data class Show(val value: ProgressMessage): ProgressTaskState() + object Hide: ProgressTaskState() } } \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/148.txt b/fastlane/metadata/android/en-US/changelogs/148.txt index 7477bbf01..e3e1a58d4 100644 --- a/fastlane/metadata/android/en-US/changelogs/148.txt +++ b/fastlane/metadata/android/en-US/changelogs/148.txt @@ -1 +1,2 @@ - * Fix multiple Passkey selection #2253 \ No newline at end of file + * Fix multiple Passkey selection #2253 + * Fix database dialog subtitle #2254 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/148.txt b/fastlane/metadata/android/fr-FR/changelogs/148.txt index b84304ece..18cbd8d34 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/148.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/148.txt @@ -1 +1,2 @@ - * Correction de la selection multiple des Passkeys #2253 \ No newline at end of file + * Correction de la selection multiple des Passkeys #2253 + * Correction du sous-titre du dialogue de la base de données #2254 \ No newline at end of file