From f50a6a8416821a2f622b53559a99e75e88f0045e Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Wed, 15 May 2024 19:19:18 +0200 Subject: [PATCH] fix: Remove the "merge, reload" wording in read only mode #1709 --- .../dialogs/DatabaseChangedDialogFragment.kt | 14 ++++++++++++-- .../keepass/database/DatabaseTaskProvider.kt | 10 +++++++--- .../services/DatabaseTaskNotificationService.kt | 9 ++++++--- app/src/main/res/values/strings.xml | 1 + 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/DatabaseChangedDialogFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/DatabaseChangedDialogFragment.kt index e646f7bd5..9318a6167 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/DatabaseChangedDialogFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/DatabaseChangedDialogFragment.kt @@ -43,6 +43,7 @@ class DatabaseChangedDialogFragment : DatabaseDialogFragment() { val oldSnapFileDatabaseInfo: SnapFileDatabaseInfo? = arguments?.getParcelableCompat(OLD_FILE_DATABASE_INFO) val newSnapFileDatabaseInfo: SnapFileDatabaseInfo? = arguments?.getParcelableCompat(NEW_FILE_DATABASE_INFO) + val readOnlyDatabase: Boolean = arguments?.getBoolean(READ_ONLY_DATABASE) ?: true if (oldSnapFileDatabaseInfo != null && newSnapFileDatabaseInfo != null) { // Use the Builder class for convenient dialog construction @@ -54,7 +55,13 @@ class DatabaseChangedDialogFragment : DatabaseDialogFragment() { stringBuilder.append("\n\n" +oldSnapFileDatabaseInfo.toString(activity) + "\n→\n" + newSnapFileDatabaseInfo.toString(activity) + "\n\n") - stringBuilder.append(getString(R.string.warning_database_info_changed_options)) + stringBuilder.append(getString( + if (readOnlyDatabase) { + R.string.warning_database_info_changed_options_read_only + } else { + R.string.warning_database_info_changed_options + } + )) } else { stringBuilder.append(getString(R.string.warning_database_revoked)) } @@ -77,15 +84,18 @@ class DatabaseChangedDialogFragment : DatabaseDialogFragment() { const val DATABASE_CHANGED_DIALOG_TAG = "databaseChangedDialogFragment" private const val OLD_FILE_DATABASE_INFO = "OLD_FILE_DATABASE_INFO" private const val NEW_FILE_DATABASE_INFO = "NEW_FILE_DATABASE_INFO" + private const val READ_ONLY_DATABASE = "READ_ONLY_DATABASE" fun getInstance(oldSnapFileDatabaseInfo: SnapFileDatabaseInfo, - newSnapFileDatabaseInfo: SnapFileDatabaseInfo + newSnapFileDatabaseInfo: SnapFileDatabaseInfo, + readOnly: Boolean ) : DatabaseChangedDialogFragment { val fragment = DatabaseChangedDialogFragment() fragment.arguments = Bundle().apply { putParcelable(OLD_FILE_DATABASE_INFO, oldSnapFileDatabaseInfo) putParcelable(NEW_FILE_DATABASE_INFO, newSnapFileDatabaseInfo) + putBoolean(READ_ONLY_DATABASE, readOnly) } return fragment } diff --git a/app/src/main/java/com/kunzisoft/keepass/database/DatabaseTaskProvider.kt b/app/src/main/java/com/kunzisoft/keepass/database/DatabaseTaskProvider.kt index e2b8ac93c..6ef9efcd8 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/DatabaseTaskProvider.kt +++ b/app/src/main/java/com/kunzisoft/keepass/database/DatabaseTaskProvider.kt @@ -182,8 +182,11 @@ class DatabaseTaskProvider( private var databaseInfoListener = object: DatabaseTaskNotificationService.DatabaseInfoListener { - override fun onDatabaseInfoChanged(previousDatabaseInfo: SnapFileDatabaseInfo, - newDatabaseInfo: SnapFileDatabaseInfo) { + override fun onDatabaseInfoChanged( + previousDatabaseInfo: SnapFileDatabaseInfo, + newDatabaseInfo: SnapFileDatabaseInfo, + readOnlyDatabase: Boolean + ) { activity?.let { activity -> activity.lifecycleScope.launch { if (databaseChangedDialogFragment == null) { @@ -195,7 +198,8 @@ class DatabaseTaskProvider( if (progressTaskDialogFragment == null) { databaseChangedDialogFragment = DatabaseChangedDialogFragment.getInstance( previousDatabaseInfo, - newDatabaseInfo + newDatabaseInfo, + readOnlyDatabase ) databaseChangedDialogFragment?.actionDatabaseListener = mActionDatabaseListener 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 059c6430c..cbdf7dbd5 100644 --- a/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt +++ b/app/src/main/java/com/kunzisoft/keepass/services/DatabaseTaskNotificationService.kt @@ -27,7 +27,6 @@ import android.os.Build import android.os.Bundle import android.os.IBinder import android.util.Log -import android.widget.Toast import androidx.annotation.StringRes import androidx.media.app.NotificationCompat import com.kunzisoft.keepass.R @@ -162,6 +161,7 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress fun onDatabaseInfoChanged( previousDatabaseInfo: SnapFileDatabaseInfo, newDatabaseInfo: SnapFileDatabaseInfo, + readOnlyDatabase: Boolean ) } @@ -220,8 +220,11 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress // Call listener to indicate a change in database info if (!mSaveState && previousDatabaseInfo != null) { mDatabaseInfoListeners.forEach { listener -> - listener.onDatabaseInfoChanged(previousDatabaseInfo, - lastFileDatabaseInfo) + listener.onDatabaseInfoChanged( + previousDatabaseInfo, + lastFileDatabaseInfo, + mDatabase?.isReadOnly ?: true + ) } } mSnapFileDatabaseInfo = lastFileDatabaseInfo diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 312c91819..58725e68d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -376,6 +376,7 @@ The content of the keyfile should never be changed, and in the best case, should contain randomly generated data. The information contained in your database file has been modified outside the app. Merge the data, overwrite the external modifications by saving the database or reload it with the latest changes. + Reload the database with the latest changes. Reloading the database will delete the locally modified data. Access to the file revoked by the file manager, close the database and reopen it from its location. You have not allowed the app to use an exact alarm. As a result, the features requiring a timer will not be done with an exact time.