diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt
index 5ab8f228a2..3bd36f9b4b 100644
--- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt
+++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt
@@ -238,7 +238,7 @@ object SettingsBackupScreen : SearchableSettings {
AlertDialog(
onDismissRequest = onDismissRequest,
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 = {
TextButton(
onClick = {
@@ -310,21 +310,24 @@ object SettingsBackupScreen : SearchableSettings {
}
},
) {
- if (it != null) {
- val results = try {
- BackupFileValidator().validate(context, it)
- } catch (e: Exception) {
- error = InvalidRestore(it, e.message.toString())
- return@rememberLauncherForActivityResult
- }
-
- if (results.missingSources.isEmpty() && results.missingTrackers.isEmpty()) {
- BackupRestoreJob.start(context, it)
- return@rememberLauncherForActivityResult
- }
-
- error = MissingRestoreComponents(it, results.missingSources, results.missingTrackers)
+ if (it == null) {
+ error = InvalidRestore(message = context.getString(R.string.file_null_uri_error))
+ return@rememberLauncherForActivityResult
}
+
+ val results = try {
+ BackupFileValidator().validate(context, it)
+ } catch (e: Exception) {
+ error = InvalidRestore(it, e.message.toString())
+ return@rememberLauncherForActivityResult
+ }
+
+ if (results.missingSources.isEmpty() && results.missingTrackers.isEmpty()) {
+ BackupRestoreJob.start(context, it)
+ return@rememberLauncherForActivityResult
+ }
+
+ error = MissingRestoreComponents(it, results.missingSources, results.missingTrackers)
}
return Preference.PreferenceItem.TextPreference(
@@ -421,6 +424,6 @@ private data class MissingRestoreComponents(
)
private data class InvalidRestore(
- val uri: Uri,
+ val uri: Uri? = null,
val message: String,
)
diff --git a/i18n/src/main/res/values/strings.xml b/i18n/src/main/res/values/strings.xml
index aca17a1224..90eccfd8c0 100644
--- a/i18n/src/main/res/values/strings.xml
+++ b/i18n/src/main/res/values/strings.xml
@@ -871,6 +871,7 @@
Select cover image
Select backup file
No file picker app found
+ File picker failed to return file to app
Download