From b864c39a0d49f62c51edcdbc2107c7c0d8de7817 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sun, 4 Apr 2021 23:13:24 +0200 Subject: [PATCH] Fix add database workflow in some devices --- .../activities/FileDatabaseSelectActivity.kt | 6 +++--- .../viewmodels/DatabaseFilesViewModel.kt | 21 +++++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt index 9ecc51856..c0d093e43 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/FileDatabaseSelectActivity.kt @@ -171,8 +171,6 @@ class FileDatabaseSelectActivity : SpecialModeActivity(), databaseFiles.databaseFileToActivate?.let { databaseFileToAdd -> mAdapterDatabaseHistory?.addDatabaseFileHistory(databaseFileToAdd) } - GroupActivity.launch(this@FileDatabaseSelectActivity, - PreferencesUtil.enableReadOnlyDatabase(this@FileDatabaseSelectActivity)) } DatabaseFilesViewModel.DatabaseFileAction.UPDATE -> { databaseFiles.databaseFileToActivate?.let { databaseFileToUpdate -> @@ -185,10 +183,10 @@ class FileDatabaseSelectActivity : SpecialModeActivity(), } } } + databaseFilesViewModel.consumeAction() } catch (e: Exception) { Log.e(TAG, "Unable to observe database action", e) } - databaseFilesViewModel.consumeAction() } // Observe default database @@ -206,6 +204,8 @@ class FileDatabaseSelectActivity : SpecialModeActivity(), val mainCredential = result.data?.getParcelable(DatabaseTaskNotificationService.MAIN_CREDENTIAL_KEY) ?: MainCredential() databaseFilesViewModel.addDatabaseFile(databaseUri, mainCredential.keyFileUri) } + GroupActivity.launch(this@FileDatabaseSelectActivity, + PreferencesUtil.enableReadOnlyDatabase(this@FileDatabaseSelectActivity)) } ACTION_DATABASE_LOAD_TASK -> { val database = Database.getInstance() diff --git a/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFilesViewModel.kt b/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFilesViewModel.kt index a69d42895..5e066dd08 100644 --- a/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFilesViewModel.kt +++ b/app/src/main/java/com/kunzisoft/keepass/viewmodels/DatabaseFilesViewModel.kt @@ -50,14 +50,18 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic ).execute() } + private fun getDatabaseFilesLoadedValue(): DatabaseFileData { + var newValue = databaseFilesLoaded.value + if (newValue == null) { + newValue = DatabaseFileData() + } + return newValue + } + fun loadListOfDatabases() { checkDefaultDatabase() mFileDatabaseHistoryAction?.getDatabaseFileList { databaseFileListRetrieved -> - var newValue = databaseFilesLoaded.value - if (newValue == null) { - newValue = DatabaseFileData() - } - newValue.apply { + databaseFilesLoaded.value = getDatabaseFilesLoadedValue().apply { databaseFileAction = DatabaseFileAction.NONE databaseFileToActivate = null databaseFileList.apply { @@ -65,14 +69,13 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic addAll(databaseFileListRetrieved) } } - databaseFilesLoaded.value = newValue } } fun addDatabaseFile(databaseUri: Uri, keyFileUri: Uri?) { mFileDatabaseHistoryAction?.addOrUpdateDatabaseUri(databaseUri, keyFileUri) { databaseFileAdded -> databaseFileAdded?.let { _ -> - databaseFilesLoaded.value = databaseFilesLoaded.value?.apply { + databaseFilesLoaded.value = getDatabaseFilesLoadedValue().apply { this.databaseFileAction = DatabaseFileAction.ADD this.databaseFileList.add(databaseFileAdded) this.databaseFileToActivate = databaseFileAdded @@ -84,7 +87,7 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic fun updateDatabaseFile(databaseFileToUpdate: DatabaseFile) { mFileDatabaseHistoryAction?.addOrUpdateDatabaseFile(databaseFileToUpdate) { databaseFileUpdated -> databaseFileUpdated?.let { _ -> - databaseFilesLoaded.value = databaseFilesLoaded.value?.apply { + databaseFilesLoaded.value = getDatabaseFilesLoadedValue().apply { this.databaseFileAction = DatabaseFileAction.UPDATE this.databaseFileList .find { it.databaseUri == databaseFileUpdated.databaseUri } @@ -104,7 +107,7 @@ class DatabaseFilesViewModel(application: Application) : AndroidViewModel(applic fun deleteDatabaseFile(databaseFileToDelete: DatabaseFile) { mFileDatabaseHistoryAction?.deleteDatabaseFile(databaseFileToDelete) { databaseFileDeleted -> databaseFileDeleted?.let { _ -> - databaseFilesLoaded.value = databaseFilesLoaded.value?.apply { + databaseFilesLoaded.value = getDatabaseFilesLoadedValue().apply { databaseFileAction = DatabaseFileAction.DELETE databaseFileToActivate = databaseFileDeleted databaseFileList.remove(databaseFileDeleted)