From 98705910e72cb72fa1792e6152a39f777a8a05ac Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sun, 19 Jul 2026 20:06:01 +0600 Subject: [PATCH] Fix crash caused by inaccessible view model classes during creation (#3609) --- .../screen/advanced/ClearDatabaseScreen.kt | 2 +- .../settings/screen/data/CreateBackupScreen.kt | 2 +- .../settings/screen/data/RestoreBackupScreen.kt | 2 +- .../settings/screen/debug/WorkerInfoScreen.kt | 2 +- .../tachiyomi/ui/manga/notes/MangaNotesScreen.kt | 2 +- .../tachiyomi/ui/manga/track/TrackInfoDialog.kt | 16 ++++++++-------- .../java/eu/kanade/tachiyomi/ui/more/MoreTab.kt | 2 +- .../migration/config/MigrationConfigScreen.kt | 14 +++++++------- .../migration/dialog/MigrateMangaDialog.kt | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt index a75a4f9de..439b656d7 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/advanced/ClearDatabaseScreen.kt @@ -220,7 +220,7 @@ class ClearDatabaseScreen : Screen() { } } -private class ClearDatabaseViewModel : StateViewModel(State.Loading) { +class ClearDatabaseViewModel : StateViewModel(State.Loading) { private val getSourcesWithNonLibraryManga: GetSourcesWithNonLibraryManga = Injekt.get() private val database: Database = Injekt.get() diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt index 1df849e01..eaf96a3d5 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt @@ -119,7 +119,7 @@ class CreateBackupScreen : Screen() { } } -private class CreateBackupViewModel : StateViewModel(State()) { +class CreateBackupViewModel : StateViewModel(State()) { fun toggle(setter: (BackupOptions, Boolean) -> BackupOptions, enabled: Boolean) { mutableState.update { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/RestoreBackupScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/RestoreBackupScreen.kt index 6da6c2720..a0a05eec7 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/RestoreBackupScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/RestoreBackupScreen.kt @@ -173,7 +173,7 @@ class RestoreBackupScreen( } } -private class RestoreBackupViewModel( +class RestoreBackupViewModel( private val context: Context, private val uri: String, ) : StateViewModel(State()) { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt index 8e1ae84dd..60fe53f64 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/debug/WorkerInfoScreen.kt @@ -120,7 +120,7 @@ class WorkerInfoScreen : Screen() { ) } - private class WorkerInfoViewModel( + class WorkerInfoViewModel( context: Context, ) : ViewModel() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/notes/MangaNotesScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/notes/MangaNotesScreen.kt index a4b1c8e28..b1d3b75c4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/notes/MangaNotesScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/notes/MangaNotesScreen.kt @@ -43,7 +43,7 @@ class MangaNotesScreen( ) } - private class Model( + class Model( private val manga: Manga, private val updateMangaNotes: UpdateMangaNotes = Injekt.get(), ) : StateViewModel(State(manga, manga.notes)) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt index e610f2e5b..ef79c078c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackInfoDialog.kt @@ -201,7 +201,7 @@ data class TrackInfoDialogHomeScreen( } } - private class Model( + class Model( private val mangaId: Long, private val sourceId: Long, private val getTracks: GetTracks = Injekt.get(), @@ -321,7 +321,7 @@ private data class TrackStatusSelectorScreen( ) } - private class Model( + class Model( private val track: Track, private val tracker: Tracker, ) : StateViewModel(State(track.status)) { @@ -390,7 +390,7 @@ private data class TrackChapterSelectorScreen( ) } - private class Model( + class Model( private val track: Track, private val tracker: Tracker, ) : StateViewModel(State(track.lastChapterRead.toInt())) { @@ -464,7 +464,7 @@ private data class TrackScoreSelectorScreen( ) } - private class Model( + class Model( private val track: Track, private val tracker: Tracker, ) : StateViewModel(State(tracker.displayScore(track))) { @@ -591,7 +591,7 @@ private data class TrackDateSelectorScreen( ) } - private class Model( + class Model( private val track: Track, private val tracker: Tracker, private val start: Boolean, @@ -707,7 +707,7 @@ private data class TrackDateRemoverScreen( ) } - private class Model( + class Model( private val track: Track, private val tracker: Tracker, private val start: Boolean, @@ -783,7 +783,7 @@ data class TrackerSearchScreen( ) } - private class Model( + class Model( private val mangaId: Long, private val currentUrl: String?, initialQuery: String, @@ -934,7 +934,7 @@ private data class TrackerRemoveScreen( ) } - private class Model( + class Model( private val mangaId: Long, private val track: Track, private val tracker: Tracker, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt index f03639093..ecf3f0b1a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt @@ -77,7 +77,7 @@ data object MoreTab : Tab { } } -private class MoreViewModel( +class MoreViewModel( private val downloadManager: DownloadManager = Injekt.get(), preferences: BasePreferences = Injekt.get(), ) : ViewModel() { diff --git a/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt b/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt index 9f96c55f0..33410fef8 100644 --- a/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt +++ b/app/src/main/java/mihon/feature/migration/config/MigrationConfigScreen.kt @@ -77,7 +77,7 @@ class MigrationConfigScreen(private val mangaIds: Collection) : Screen() { override fun Content() { val navigator = LocalNavigator.currentOrThrow - val viewModel = viewModel() + val viewModel = viewModel() val state by viewModel.state.collectAsState() var migrationSheetOpen by rememberSaveable { mutableStateOf(false) } @@ -121,20 +121,20 @@ class MigrationConfigScreen(private val mangaIds: Collection) : Screen() { AppBar.Action( title = stringResource(MR.strings.migrationConfigScreen_selectAllLabel), icon = Icons.Outlined.SelectAll, - onClick = { viewModel.toggleSelection(ViewModel.SelectionConfig.All) }, + onClick = { viewModel.toggleSelection(Model.SelectionConfig.All) }, ), AppBar.Action( title = stringResource(MR.strings.migrationConfigScreen_selectNoneLabel), icon = Icons.Outlined.Deselect, - onClick = { viewModel.toggleSelection(ViewModel.SelectionConfig.None) }, + onClick = { viewModel.toggleSelection(Model.SelectionConfig.None) }, ), AppBar.OverflowAction( title = stringResource(MR.strings.migrationConfigScreen_selectEnabledLabel), - onClick = { viewModel.toggleSelection(ViewModel.SelectionConfig.Enabled) }, + onClick = { viewModel.toggleSelection(Model.SelectionConfig.Enabled) }, ), AppBar.OverflowAction( title = stringResource(MR.strings.migrationConfigScreen_selectPinnedLabel), - onClick = { viewModel.toggleSelection(ViewModel.SelectionConfig.Pinned) }, + onClick = { viewModel.toggleSelection(Model.SelectionConfig.Pinned) }, ), ), ) @@ -306,10 +306,10 @@ class MigrationConfigScreen(private val mangaIds: Collection) : Screen() { } } - private class ViewModel( + class Model( val sourcePreferences: SourcePreferences = Injekt.get(), private val sourceManager: SourceManager = Injekt.get(), - ) : StateViewModel(State()) { + ) : StateViewModel(State()) { private val sourcesComparator = { includedSources: List -> compareBy( diff --git a/app/src/main/java/mihon/feature/migration/dialog/MigrateMangaDialog.kt b/app/src/main/java/mihon/feature/migration/dialog/MigrateMangaDialog.kt index 0b8c357f4..2d46bcdc8 100644 --- a/app/src/main/java/mihon/feature/migration/dialog/MigrateMangaDialog.kt +++ b/app/src/main/java/mihon/feature/migration/dialog/MigrateMangaDialog.kt @@ -123,7 +123,7 @@ internal fun Screen.MigrateMangaDialog( ) } -private class MigrateDialogViewModel( +class MigrateDialogViewModel( private val sourcePreference: SourcePreferences = Injekt.get(), private val coverCache: CoverCache = Injekt.get(), private val downloadManager: DownloadManager = Injekt.get(),