Show an error if backup file URI isn't returned to app when attempting restore

Related to #10028
This commit is contained in:
arkon 2023-10-17 18:22:55 -04:00
parent ea99d77fda
commit e572abb041
2 changed files with 20 additions and 16 deletions

View file

@ -238,7 +238,7 @@ object SettingsBackupScreen : SearchableSettings {
AlertDialog( AlertDialog(
onDismissRequest = onDismissRequest, onDismissRequest = onDismissRequest,
title = { Text(text = stringResource(R.string.invalid_backup_file)) }, title = { Text(text = stringResource(R.string.invalid_backup_file)) },
text = { Text(text = "${err.uri}\n\n${err.message}") }, text = { Text(text = listOfNotNull(err.uri, err.message).joinToString("\n\n")) },
dismissButton = { dismissButton = {
TextButton( TextButton(
onClick = { onClick = {
@ -310,7 +310,11 @@ object SettingsBackupScreen : SearchableSettings {
} }
}, },
) { ) {
if (it != null) { if (it == null) {
error = InvalidRestore(message = context.getString(R.string.file_null_uri_error))
return@rememberLauncherForActivityResult
}
val results = try { val results = try {
BackupFileValidator().validate(context, it) BackupFileValidator().validate(context, it)
} catch (e: Exception) { } catch (e: Exception) {
@ -325,7 +329,6 @@ object SettingsBackupScreen : SearchableSettings {
error = MissingRestoreComponents(it, results.missingSources, results.missingTrackers) error = MissingRestoreComponents(it, results.missingSources, results.missingTrackers)
} }
}
return Preference.PreferenceItem.TextPreference( return Preference.PreferenceItem.TextPreference(
title = stringResource(R.string.pref_restore_backup), title = stringResource(R.string.pref_restore_backup),
@ -421,6 +424,6 @@ private data class MissingRestoreComponents(
) )
private data class InvalidRestore( private data class InvalidRestore(
val uri: Uri, val uri: Uri? = null,
val message: String, val message: String,
) )

View file

@ -871,6 +871,7 @@
<string name="file_select_cover">Select cover image</string> <string name="file_select_cover">Select cover image</string>
<string name="file_select_backup">Select backup file</string> <string name="file_select_backup">Select backup file</string>
<string name="file_picker_error">No file picker app found</string> <string name="file_picker_error">No file picker app found</string>
<string name="file_null_uri_error">File picker failed to return file to app</string>
<!--UpdateCheck--> <!--UpdateCheck-->
<string name="update_check_confirm">Download</string> <string name="update_check_confirm">Download</string>