From 56b7cc911886a0d0c619918329b21feb1286d6fb Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Tue, 28 Oct 2025 14:49:10 +0100 Subject: [PATCH] fix: Progress message --- .../keepass/database/ProgressMessage.kt | 11 +++-- .../DatabaseTaskNotificationService.kt | 44 ++++++++----------- .../tasks/ProgressTaskDialogFragment.kt | 9 ++-- .../keepass/tasks/ProgressTaskViewModel.kt | 2 +- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/ProgressMessage.kt b/app/src/main/java/com/kunzisoft/keepass/database/ProgressMessage.kt index 557277ca6..6bfe64b6c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/ProgressMessage.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/ProgressMessage.kt @@ -1,8 +1,13 @@ package com.kunzisoft.keepass.database +import androidx.annotation.StringRes + data class ProgressMessage( - var title: String, - var message: String? = null, - var warning: String? = null, + @StringRes + var titleId: Int? = null, + @StringRes + var messageId: Int? = null, + @StringRes + var warningId: Int? = null, var cancelable: (() -> Unit)? = 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 e0feac1a4..ed1f2ccce 100644 --- a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt @@ -33,7 +33,6 @@ import com.kunzisoft.keepass.R import com.kunzisoft.keepass.activities.GroupActivity import com.kunzisoft.keepass.app.database.CipherDatabaseAction import com.kunzisoft.keepass.app.database.FileDatabaseHistoryAction -import com.kunzisoft.keepass.credentialprovider.activity.HardwareKeyActivity import com.kunzisoft.keepass.database.ContextualDatabase import com.kunzisoft.keepass.database.MainCredential import com.kunzisoft.keepass.database.ProgressMessage @@ -62,6 +61,7 @@ import com.kunzisoft.keepass.database.element.node.Node import com.kunzisoft.keepass.database.element.node.NodeId import com.kunzisoft.keepass.database.element.node.Type import com.kunzisoft.keepass.hardware.HardwareKey +import com.kunzisoft.keepass.credentialprovider.activity.HardwareKeyActivity import com.kunzisoft.keepass.model.CipherEncryptDatabase import com.kunzisoft.keepass.model.SnapFileDatabaseInfo import com.kunzisoft.keepass.settings.PreferencesUtil @@ -112,7 +112,7 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress private var mTaskRemovedRequested = false private var mSaveState = false - private lateinit var mProgressMessage: ProgressMessage + private var mProgressMessage: ProgressMessage = ProgressMessage(R.string.database_opened) override fun retrieveChannelId(): String { return CHANNEL_DATABASE_ID @@ -305,13 +305,6 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress mResponseChallengeChannel = null } - override fun onCreate() { - super.onCreate() - mProgressMessage = ProgressMessage( - title = getString(R.string.database_opened) - ) - } - override fun onBind(intent: Intent): IBinder? { super.onBind(intent) return mActionTaskBinder @@ -398,9 +391,9 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress TimeoutHelper.temporarilyDisableTimeout() sendBroadcast(Intent(DATABASE_START_TASK_ACTION).apply { - putExtra(DATABASE_TASK_TITLE_KEY, mProgressMessage.title) - putExtra(DATABASE_TASK_MESSAGE_KEY, mProgressMessage.message) - putExtra(DATABASE_TASK_WARNING_KEY, mProgressMessage.warning) + putExtra(DATABASE_TASK_TITLE_KEY, mProgressMessage.titleId) + putExtra(DATABASE_TASK_MESSAGE_KEY, mProgressMessage.messageId) + putExtra(DATABASE_TASK_WARNING_KEY, mProgressMessage.warningId) }) mActionTaskListeners.forEach { actionTaskListener -> @@ -513,8 +506,8 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress R.drawable.notification_ic_database_action // Title depending on action - mProgressMessage.title = - getString(if (intentAction == null) { + mProgressMessage.titleId = + if (intentAction == null) { R.string.database_opened } else when (intentAction) { ACTION_DATABASE_CREATE_TASK -> R.string.creating_database @@ -529,23 +522,24 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress else R.string.command_execution } - }) + } // Updated later - mProgressMessage.message = null + mProgressMessage.messageId = null // Warning if data is saved - mProgressMessage.warning = + mProgressMessage.warningId = if (mSaveState) - getString(R.string.do_not_kill_app) + R.string.do_not_kill_app else null val notificationBuilder = buildNewNotification().apply { setSmallIcon(iconId) - intent?.let { - setContentTitle(intent.getStringExtra(DATABASE_TASK_TITLE_KEY)) - } + val titleId = mProgressMessage.titleId?.let { + intent?.getIntExtra(DATABASE_TASK_TITLE_KEY, it) + } ?: R.string.app_name + setContentTitle(getString(titleId)) setAutoCancel(false) setContentIntent(null) } @@ -666,8 +660,8 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress } } - private fun updateMessage(@StringRes resId: Int) { - mProgressMessage.message = getString(resId) + private fun updateMessage(resId: Int) { + mProgressMessage.messageId = resId notifyProgressMessage() } @@ -713,7 +707,7 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress initializeChallengeResponse() val previousMessage = mProgressMessage.copy() mProgressMessage.apply { - message = getString(R.string.waiting_challenge_request) + messageId = R.string.waiting_challenge_request cancelable = { cancelChallengeResponse(R.string.error_cancel_by_user) } @@ -728,7 +722,7 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress ) // Wait the response mProgressMessage.apply { - message = getString(R.string.waiting_challenge_response) + messageId = R.string.waiting_challenge_response } notifyProgressMessage() response = mResponseChallengeChannel?.receive() ?: byteArrayOf() 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 cd764729b..bd342976e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskDialogFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskDialogFragment.kt @@ -71,9 +71,12 @@ open class ProgressTaskDialogFragment : DialogFragment() { lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.STARTED) { progressTaskViewModel.progressMessageState.collect { state -> - updateView(titleView, state.title) - updateView(messageView, state.message) - updateView(warningView, state.warning) + 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() 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 63620103c..f8812f682 100644 --- a/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskViewModel.kt +++ b/app/src/main/java/com/kunzisoft/keepass/tasks/ProgressTaskViewModel.kt @@ -7,7 +7,7 @@ import kotlinx.coroutines.flow.StateFlow class ProgressTaskViewModel: ViewModel() { - private val mProgressMessageState = MutableStateFlow(ProgressMessage("")) + private val mProgressMessageState = MutableStateFlow(ProgressMessage()) val progressMessageState: StateFlow = mProgressMessageState private val mProgressTaskState = MutableStateFlow(ProgressTaskState.Stop)