瀏覽代碼

Avoid potential crash when opening library settings sheet (#9415)

AntsyLich 1 年之前
父節點
當前提交
2cb08e6bb1

+ 5 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt

@@ -530,7 +530,10 @@ class LibraryScreenModel(
     }
 
     fun showSettingsDialog() {
-        mutableState.update { it.copy(dialog = Dialog.SettingsSheet) }
+        mutableState.update {
+            val category = it.categories.getOrNull(activeCategoryIndex) ?: return@update it
+            it.copy(dialog = Dialog.SettingsSheet(category))
+        }
     }
 
     fun clearSelection() {
@@ -651,7 +654,7 @@ class LibraryScreenModel(
     }
 
     sealed class Dialog {
-        object SettingsSheet : Dialog()
+        data class SettingsSheet(val category: Category) : Dialog()
         data class ChangeCategory(val manga: List<Manga>, val initialSelection: List<CheckboxState<Category>>) : Dialog()
         data class DeleteManga(val manga: List<Manga>) : Dialog()
     }

+ 7 - 5
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt

@@ -205,11 +205,13 @@ object LibraryTab : Tab {
 
         val onDismissRequest = screenModel::closeDialog
         when (val dialog = state.dialog) {
-            is LibraryScreenModel.Dialog.SettingsSheet -> LibrarySettingsDialog(
-                onDismissRequest = onDismissRequest,
-                screenModel = settingsScreenModel,
-                category = state.categories[screenModel.activeCategoryIndex],
-            )
+            is LibraryScreenModel.Dialog.SettingsSheet -> {
+                LibrarySettingsDialog(
+                    onDismissRequest = onDismissRequest,
+                    screenModel = settingsScreenModel,
+                    category = dialog.category,
+                )
+            }
             is LibraryScreenModel.Dialog.ChangeCategory -> {
                 ChangeCategoryDialog(
                     initialSelection = dialog.initialSelection,