Fix show error

This commit is contained in:
J-Jamet
2021-08-19 15:04:16 +02:00
parent 8379ffe1ce
commit e1733512c4
2 changed files with 71 additions and 78 deletions

View File

@@ -200,8 +200,8 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
override fun onDatabaseRetrieved(database: Database?) { override fun onDatabaseRetrieved(database: Database?) {
super.onDatabaseRetrieved(database) super.onDatabaseRetrieved(database)
if (database?.loaded == true) { if (database != null) {
launchGroupActivity(database) launchGroupActivityIfLoaded(database)
} }
} }
@@ -221,9 +221,8 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
PreferencesUtil.enableReadOnlyDatabase(this@FileDatabaseSelectActivity)) PreferencesUtil.enableReadOnlyDatabase(this@FileDatabaseSelectActivity))
} }
ACTION_DATABASE_LOAD_TASK -> { ACTION_DATABASE_LOAD_TASK -> {
if (result.isSuccess if (result.isSuccess) {
&& database.loaded) { launchGroupActivityIfLoaded(database)
launchGroupActivity(database)
} else { } else {
var resultError = "" var resultError = ""
val resultMessage = result.message val resultMessage = result.message
@@ -265,12 +264,14 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
{ onLaunchActivitySpecialMode() }) { onLaunchActivitySpecialMode() })
} }
private fun launchGroupActivity(database: Database) { private fun launchGroupActivityIfLoaded(database: Database) {
GroupActivity.launch(this, if (database.loaded) {
GroupActivity.launch(this,
database, database,
{ onValidateSpecialMode() }, { onValidateSpecialMode() },
{ onCancelSpecialMode() }, { onCancelSpecialMode() },
{ onLaunchActivitySpecialMode() }) { onLaunchActivitySpecialMode() })
}
} }
override fun onValidateSpecialMode() { override fun onValidateSpecialMode() {
@@ -311,9 +312,7 @@ class FileDatabaseSelectActivity : DatabaseModeActivity(),
} }
mDatabase?.let { database -> mDatabase?.let { database ->
if (database.loaded) { launchGroupActivityIfLoaded(database)
launchGroupActivity(database)
}
} }
} }

View File

@@ -230,20 +230,14 @@ open class PasswordActivity : DatabaseModeActivity(), AdvancedUnlockFragment.Bui
checkPermission() checkPermission()
mDatabase?.let { database -> mDatabase?.let { database ->
if (database.loaded) { launchGroupActivityIfLoaded(database)
clearCredentialsViews(true)
launchGroupActivity(database)
}
} }
} }
override fun onDatabaseRetrieved(database: Database?) { override fun onDatabaseRetrieved(database: Database?) {
super.onDatabaseRetrieved(database) super.onDatabaseRetrieved(database)
if (database?.loaded == true) { if (database != null) {
// If the database isn't accessible make sure to clear the password field, if it launchGroupActivityIfLoaded(database)
// was saved in the instance state
clearCredentialsViews(true)
launchGroupActivity(database)
} }
} }
@@ -255,73 +249,69 @@ open class PasswordActivity : DatabaseModeActivity(), AdvancedUnlockFragment.Bui
super.onDatabaseActionFinished(database, actionTask, result) super.onDatabaseActionFinished(database, actionTask, result)
when (actionTask) { when (actionTask) {
ACTION_DATABASE_LOAD_TASK -> { ACTION_DATABASE_LOAD_TASK -> {
// CHeck if database really loaded // Recheck advanced unlock if error
if (database.loaded) { advancedUnlockFragment?.initAdvancedUnlockMode()
// Recheck advanced unlock if error
advancedUnlockFragment?.initAdvancedUnlockMode()
if (result.isSuccess) { if (result.isSuccess) {
clearCredentialsViews(true) launchGroupActivityIfLoaded(database)
launchGroupActivity(database) } else {
} else { var resultError = ""
var resultError = "" val resultException = result.exception
val resultException = result.exception val resultMessage = result.message
val resultMessage = result.message
if (resultException != null) { if (resultException != null) {
resultError = resultException.getLocalizedMessage(resources) resultError = resultException.getLocalizedMessage(resources)
when (resultException) { when (resultException) {
is DuplicateUuidDatabaseException -> { is DuplicateUuidDatabaseException -> {
// Relaunch loading if we need to fix UUID // Relaunch loading if we need to fix UUID
showLoadDatabaseDuplicateUuidMessage { showLoadDatabaseDuplicateUuidMessage {
var databaseUri: Uri? = null var databaseUri: Uri? = null
var mainCredential = MainCredential() var mainCredential = MainCredential()
var readOnly = true var readOnly = true
var cipherEntity: CipherDatabaseEntity? = null var cipherEntity: CipherDatabaseEntity? = null
result.data?.let { resultData -> result.data?.let { resultData ->
databaseUri = resultData.getParcelable(DATABASE_URI_KEY) databaseUri = resultData.getParcelable(DATABASE_URI_KEY)
mainCredential = mainCredential =
resultData.getParcelable(MAIN_CREDENTIAL_KEY) resultData.getParcelable(MAIN_CREDENTIAL_KEY)
?: mainCredential ?: mainCredential
readOnly = resultData.getBoolean(READ_ONLY_KEY) readOnly = resultData.getBoolean(READ_ONLY_KEY)
cipherEntity = cipherEntity =
resultData.getParcelable(CIPHER_ENTITY_KEY) resultData.getParcelable(CIPHER_ENTITY_KEY)
}
databaseUri?.let { databaseFileUri ->
showProgressDialogAndLoadDatabase(
databaseFileUri,
mainCredential,
readOnly,
cipherEntity,
true
)
}
} }
}
is FileNotFoundDatabaseException -> { databaseUri?.let { databaseFileUri ->
// Remove this default database inaccessible showProgressDialogAndLoadDatabase(
if (mDefaultDatabase) { databaseFileUri,
databaseFileViewModel.removeDefaultDatabase() mainCredential,
readOnly,
cipherEntity,
true
)
} }
} }
} }
is FileNotFoundDatabaseException -> {
// Remove this default database inaccessible
if (mDefaultDatabase) {
databaseFileViewModel.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()
} }
// Show error message
if (resultMessage != null && resultMessage.isNotEmpty()) {
resultError = "$resultError $resultMessage"
}
Log.e(TAG, resultError)
Snackbar.make(
coordinatorLayout,
resultError,
Snackbar.LENGTH_LONG
).asError().show()
} }
} }
} }
@@ -348,13 +338,17 @@ open class PasswordActivity : DatabaseModeActivity(), AdvancedUnlockFragment.Bui
getUriFromIntent(intent) getUriFromIntent(intent)
} }
private fun launchGroupActivity(database: Database) { private fun launchGroupActivityIfLoaded(database: Database) {
GroupActivity.launch(this, // Check if database really loaded
if (database.loaded) {
clearCredentialsViews(true)
GroupActivity.launch(this,
database, database,
{ onValidateSpecialMode() }, { onValidateSpecialMode() },
{ onCancelSpecialMode() }, { onCancelSpecialMode() },
{ onLaunchActivitySpecialMode() } { onLaunchActivitySpecialMode() }
) )
}
} }
override fun onValidateSpecialMode() { override fun onValidateSpecialMode() {