fix: replace error method

This commit is contained in:
J-Jamet
2022-12-18 23:46:33 +01:00
parent 8d827eb562
commit ecfe767068
5 changed files with 43 additions and 67 deletions

View File

@@ -67,6 +67,7 @@ import com.kunzisoft.keepass.settings.PreferencesUtil
import com.kunzisoft.keepass.tasks.ActionRunnable import com.kunzisoft.keepass.tasks.ActionRunnable
import com.kunzisoft.keepass.utils.* import com.kunzisoft.keepass.utils.*
import com.kunzisoft.keepass.view.asError import com.kunzisoft.keepass.view.asError
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
import com.kunzisoft.keepass.viewmodels.DatabaseFilesViewModel import com.kunzisoft.keepass.viewmodels.DatabaseFilesViewModel
import java.io.FileNotFoundException import java.io.FileNotFoundException
@@ -271,18 +272,8 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
launchGroupActivityIfLoaded(database) launchGroupActivityIfLoaded(database)
} }
} }
} else {
var resultError = ""
val resultMessage = result.message
// Show error message
if (resultMessage != null && resultMessage.isNotEmpty()) {
resultError = "$resultError $resultMessage"
}
Log.e(TAG, resultError)
Snackbar.make(coordinatorLayout,
resultError,
Snackbar.LENGTH_LONG).asError().show()
} }
coordinatorLayout.showActionErrorIfNeeded(result)
} }
/** /**

View File

@@ -75,6 +75,7 @@ import com.kunzisoft.keepass.utils.MenuUtil
import com.kunzisoft.keepass.utils.UriUtil import com.kunzisoft.keepass.utils.UriUtil
import com.kunzisoft.keepass.view.MainCredentialView import com.kunzisoft.keepass.view.MainCredentialView
import com.kunzisoft.keepass.view.asError import com.kunzisoft.keepass.view.asError
import com.kunzisoft.keepass.view.showActionErrorIfNeeded
import com.kunzisoft.keepass.viewmodels.AdvancedUnlockViewModel import com.kunzisoft.keepass.viewmodels.AdvancedUnlockViewModel
import com.kunzisoft.keepass.viewmodels.DatabaseFileViewModel import com.kunzisoft.keepass.viewmodels.DatabaseFileViewModel
import java.io.FileNotFoundException import java.io.FileNotFoundException
@@ -292,67 +293,49 @@ class MainCredentialActivity : DatabaseModeActivity(), AdvancedUnlockFragment.Bu
launchGroupActivityIfLoaded(database) launchGroupActivityIfLoaded(database)
} else { } else {
mainCredentialView?.requestPasswordFocus() mainCredentialView?.requestPasswordFocus()
// Manage special exceptions
when (result.exception) {
is DuplicateUuidDatabaseException -> {
// Relaunch loading if we need to fix UUID
showLoadDatabaseDuplicateUuidMessage {
var resultError = "" var databaseUri: Uri? = null
val resultException = result.exception var mainCredential = MainCredential()
val resultMessage = result.message var readOnly = true
var cipherEncryptDatabase: CipherEncryptDatabase? = null
if (resultException != null) { result.data?.let { resultData ->
resultError = resultException.getLocalizedMessage(resources) databaseUri = resultData.getParcelable(DATABASE_URI_KEY)
mainCredential =
when (resultException) { resultData.getParcelable(MAIN_CREDENTIAL_KEY)
is DuplicateUuidDatabaseException -> { ?: mainCredential
// Relaunch loading if we need to fix UUID readOnly = resultData.getBoolean(READ_ONLY_KEY)
showLoadDatabaseDuplicateUuidMessage { cipherEncryptDatabase =
resultData.getParcelable(CIPHER_DATABASE_KEY)
var databaseUri: Uri? = null
var mainCredential = MainCredential()
var readOnly = true
var cipherEncryptDatabase: CipherEncryptDatabase? = null
result.data?.let { resultData ->
databaseUri = resultData.getParcelable(DATABASE_URI_KEY)
mainCredential =
resultData.getParcelable(MAIN_CREDENTIAL_KEY)
?: mainCredential
readOnly = resultData.getBoolean(READ_ONLY_KEY)
cipherEncryptDatabase =
resultData.getParcelable(CIPHER_DATABASE_KEY)
}
databaseUri?.let { databaseFileUri ->
showProgressDialogAndLoadDatabase(
databaseFileUri,
mainCredential,
readOnly,
cipherEncryptDatabase,
true
)
}
} }
}
is FileNotFoundDatabaseException -> { databaseUri?.let { databaseFileUri ->
// Remove this default database inaccessible showProgressDialogAndLoadDatabase(
if (mDefaultDatabase) { databaseFileUri,
mDatabaseFileViewModel.removeDefaultDatabase() mainCredential,
readOnly,
cipherEncryptDatabase,
true
)
} }
} }
} }
is FileNotFoundDatabaseException -> {
// Remove this default database inaccessible
if (mDefaultDatabase) {
mDatabaseFileViewModel.removeDefaultDatabase()
}
}
} }
// Show error message
if (resultMessage != null && resultMessage.isNotEmpty()) {
resultError = "$resultError $resultMessage"
}
Log.e(TAG, resultError)
Snackbar.make(
coordinatorLayout,
resultError,
Snackbar.LENGTH_LONG
).asError().show()
} }
} }
} }
coordinatorLayout.showActionErrorIfNeeded(result)
} }
private fun getUriFromIntent(intent: Intent?) { private fun getUriFromIntent(intent: Intent?) {

View File

@@ -77,6 +77,9 @@ class CreateDatabaseRunnable(context: Context,
override fun onFinishRun() { override fun onFinishRun() {
super.onFinishRun() super.onFinishRun()
if (result.isSuccess) {
mDatabase.loaded = true
}
createDatabaseResult?.invoke(result) createDatabaseResult?.invoke(result)
} }
} }

View File

@@ -555,7 +555,6 @@ class Database {
setDatabaseKDBX(newDatabase) setDatabaseKDBX(newDatabase)
this.fileUri = databaseUri this.fileUri = databaseUri
// Set Database state // Set Database state
this.loaded = true
this.dataModifiedSinceLastLoading = false this.dataModifiedSinceLastLoading = false
} }

View File

@@ -226,8 +226,8 @@ fun View.updateLockPaddingLeft() {
fun Context.showActionErrorIfNeeded(result: ActionRunnable.Result) { fun Context.showActionErrorIfNeeded(result: ActionRunnable.Result) {
if (!result.isSuccess) { if (!result.isSuccess) {
result.exception?.errorId?.let { errorId -> result.exception?.getLocalizedMessage(resources)?.let { errorMessage ->
Toast.makeText(this, errorId, Toast.LENGTH_LONG).show() Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show()
} ?: result.message?.let { message -> } ?: result.message?.let { message ->
Toast.makeText(this, message, Toast.LENGTH_LONG).show() Toast.makeText(this, message, Toast.LENGTH_LONG).show()
} }
@@ -236,8 +236,8 @@ fun Context.showActionErrorIfNeeded(result: ActionRunnable.Result) {
fun CoordinatorLayout.showActionErrorIfNeeded(result: ActionRunnable.Result) { fun CoordinatorLayout.showActionErrorIfNeeded(result: ActionRunnable.Result) {
if (!result.isSuccess) { if (!result.isSuccess) {
result.exception?.errorId?.let { errorId -> result.exception?.getLocalizedMessage(resources)?.let { errorMessage ->
Snackbar.make(this, errorId, Snackbar.LENGTH_LONG).asError().show() Snackbar.make(this, errorMessage, Snackbar.LENGTH_LONG).asError().show()
} ?: result.message?.let { message -> } ?: result.message?.let { message ->
Snackbar.make(this, message, Snackbar.LENGTH_LONG).asError().show() Snackbar.make(this, message, Snackbar.LENGTH_LONG).asError().show()
} }