소스 검색

Avoid crashing if invalid download and backup location is set

Fixes #8252
arkon 2 년 전
부모
커밋
a8ca7b690f

+ 1 - 1
app/src/main/java/eu/kanade/presentation/more/settings/screen/AboutScreen.kt

@@ -205,7 +205,7 @@ class AboutScreen : Screen {
                 BuildConfig.DEBUG -> {
                     "Debug ${BuildConfig.COMMIT_SHA}".let {
                         if (withBuildDate) {
-                            "$it (${getFormattedBuildTime()}"
+                            "$it (${getFormattedBuildTime()})"
                         } else {
                             it
                         }

+ 4 - 2
app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt

@@ -380,8 +380,10 @@ class SettingsBackupScreen : SearchableSettings {
                 Preference.PreferenceItem.TextPreference(
                     title = stringResource(R.string.pref_backup_directory),
                     subtitle = remember(backupDir) {
-                        UniFile.fromUri(context, backupDir.toUri()).filePath!! + "/automatic"
-                    },
+                        (UniFile.fromUri(context, backupDir.toUri())?.filePath)?.let {
+                            "$it/automatic"
+                        }
+                    } ?: stringResource(R.string.invalid_location, backupDir),
                     onClick = {
                         try {
                             pickBackupLocation.launch(null)

+ 2 - 2
app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt

@@ -102,8 +102,8 @@ class SettingsDownloadScreen : SearchableSettings {
             pref = currentDirPref,
             title = stringResource(R.string.pref_download_directory),
             subtitle = remember(currentDir) {
-                UniFile.fromUri(context, currentDir.toUri()).filePath!!
-            },
+                UniFile.fromUri(context, currentDir.toUri())?.filePath
+            } ?: stringResource(R.string.invalid_location, currentDir),
             entries = mapOf(
                 defaultDirPair,
                 customDirEntryKey to stringResource(R.string.custom_dir),

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt

@@ -57,7 +57,7 @@ class DownloadProvider(private val context: Context) {
                 .createDirectory(getMangaDirName(mangaTitle))
         } catch (e: Throwable) {
             logcat(LogPriority.ERROR, e) { "Invalid download directory" }
-            throw Exception(context.getString(R.string.invalid_download_dir))
+            throw Exception(context.getString(R.string.invalid_location, downloadsDir))
         }
     }
 

+ 1 - 1
i18n/src/main/res/values/strings.xml

@@ -422,6 +422,7 @@
     <string name="pref_remove_bookmarked_chapters">Allow deleting bookmarked chapters</string>
     <string name="pref_remove_exclude_categories">Excluded categories</string>
     <string name="custom_dir">Custom location</string>
+    <string name="invalid_location">Invalid location: %s</string>
     <string name="disabled">Disabled</string>
     <string name="last_read_chapter">Last read chapter</string>
     <string name="second_to_last">Second to last read chapter</string>
@@ -658,7 +659,6 @@
     <string name="error_saving_cover">Error saving cover</string>
     <string name="error_sharing_cover">Error sharing cover</string>
     <string name="confirm_delete_chapters">Are you sure you want to delete the selected chapters?</string>
-    <string name="invalid_download_dir">Invalid download location</string>
     <string name="chapter_settings">Chapter settings</string>
     <string name="confirm_set_chapter_settings">Are you sure you want to save these settings as default?</string>
     <string name="also_set_chapter_settings_for_library">Also apply to all manga in my library</string>