diff --git a/app/src/main/java/eu/kanade/presentation/manga/DuplicateMangaDialog.kt b/app/src/main/java/eu/kanade/presentation/manga/DuplicateMangaDialog.kt index 23d877c01..1a9e67fb2 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/DuplicateMangaDialog.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/DuplicateMangaDialog.kt @@ -63,7 +63,7 @@ fun DuplicateMangaDialog( // KMK --> @Composable -fun AllowDuplicateDialog( +fun DuplicateMangasDialog( onDismissRequest: () -> Unit, onAllowAllDuplicate: () -> Unit, onSkipAllDuplicate: () -> Unit, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BulkFavoriteScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BulkFavoriteScreenModel.kt index 913e35d7e..87e503922 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BulkFavoriteScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BulkFavoriteScreenModel.kt @@ -1,14 +1,25 @@ package eu.kanade.tachiyomi.ui.browse +import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue import androidx.compose.ui.util.fastAny import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEachIndexed import cafe.adriel.voyager.core.model.StateScreenModel import cafe.adriel.voyager.core.model.screenModelScope +import cafe.adriel.voyager.navigator.LocalNavigator +import cafe.adriel.voyager.navigator.currentOrThrow import eu.kanade.domain.manga.interactor.UpdateManga import eu.kanade.domain.track.interactor.AddTracks +import eu.kanade.presentation.browse.components.RemoveMangaDialog +import eu.kanade.presentation.category.components.ChangeCategoryDialog +import eu.kanade.presentation.manga.DuplicateMangaDialog +import eu.kanade.presentation.manga.DuplicateMangasDialog import eu.kanade.tachiyomi.data.cache.CoverCache +import eu.kanade.tachiyomi.ui.category.CategoryScreen +import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.util.removeCovers import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.PersistentList @@ -317,6 +328,12 @@ class BulkFavoriteScreenModel( } } + fun dismissDialog() { + mutableState.update { + it.copy(dialog = null) + } + } + interface Dialog { data class RemoveManga(val manga: Manga) : Dialog data class AddDuplicateManga(val manga: Manga, val duplicate: Manga) : Dialog @@ -338,3 +355,89 @@ class BulkFavoriteScreenModel( val selectionMode: Boolean = false, ) } + +@Composable +fun AddDuplicateMangaDialog(bulkFavoriteScreenModel: BulkFavoriteScreenModel) { + val navigator = LocalNavigator.currentOrThrow + val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState() + val dialog = bulkFavoriteState.dialog as BulkFavoriteScreenModel.Dialog.AddDuplicateManga + + DuplicateMangaDialog( + onDismissRequest = bulkFavoriteScreenModel::dismissDialog, + onConfirm = { bulkFavoriteScreenModel.addFavorite(dialog.manga) }, + onOpenManga = { navigator.push(MangaScreen(dialog.duplicate.id)) }, + ) +} + +@Composable +fun RemoveMangaDialog(bulkFavoriteScreenModel: BulkFavoriteScreenModel) { + val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState() + val dialog = bulkFavoriteState.dialog as BulkFavoriteScreenModel.Dialog.RemoveManga + + RemoveMangaDialog( + onDismissRequest = bulkFavoriteScreenModel::dismissDialog, + onConfirm = { + bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) + }, + mangaToRemove = dialog.manga, + ) +} + +@Composable +fun ChangeMangaCategoryDialog(bulkFavoriteScreenModel: BulkFavoriteScreenModel) { + val navigator = LocalNavigator.currentOrThrow + val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState() + val dialog = bulkFavoriteState.dialog as BulkFavoriteScreenModel.Dialog.ChangeMangaCategory + + ChangeCategoryDialog( + initialSelection = dialog.initialSelection, + onDismissRequest = bulkFavoriteScreenModel::dismissDialog, + onEditCategories = { navigator.push(CategoryScreen()) }, + onConfirm = { include, _ -> + bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) + bulkFavoriteScreenModel.moveMangaToCategories(dialog.manga, include) + }, + ) +} + +@Composable +fun ChangeMangasCategoryDialog(bulkFavoriteScreenModel: BulkFavoriteScreenModel) { + val navigator = LocalNavigator.currentOrThrow + val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState() + val dialog = bulkFavoriteState.dialog as BulkFavoriteScreenModel.Dialog.ChangeMangasCategory + + ChangeCategoryDialog( + initialSelection = dialog.initialSelection, + onDismissRequest = bulkFavoriteScreenModel::dismissDialog, + onEditCategories = { navigator.push(CategoryScreen()) }, + onConfirm = { include, exclude -> + bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) + }, + ) +} + +@Composable +fun AllowDuplicateDialog(bulkFavoriteScreenModel: BulkFavoriteScreenModel) { + val navigator = LocalNavigator.currentOrThrow + val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState() + val dialog = bulkFavoriteState.dialog as BulkFavoriteScreenModel.Dialog.AllowDuplicate + + DuplicateMangasDialog( + onDismissRequest = bulkFavoriteScreenModel::dismissDialog, + onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, + onSkipAllDuplicate = { + bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) + }, + onOpenManga = { + navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) + }, + onAllowDuplicate = { + bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) + }, + onSkipDuplicate = { + bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) + bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) + }, + duplicatedName = dialog.duplicatedManga.second.title, + ) +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedTab.kt index 235194074..b34a99055 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedTab.kt @@ -21,15 +21,15 @@ import eu.kanade.presentation.browse.FeedAddDialog import eu.kanade.presentation.browse.FeedAddSearchDialog import eu.kanade.presentation.browse.FeedDeleteConfirmDialog import eu.kanade.presentation.browse.FeedScreen -import eu.kanade.presentation.browse.components.RemoveMangaDialog -import eu.kanade.presentation.category.components.ChangeCategoryDialog import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.TabContent -import eu.kanade.presentation.manga.AllowDuplicateDialog -import eu.kanade.presentation.manga.DuplicateMangaDialog +import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel +import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog +import eu.kanade.tachiyomi.ui.browse.RemoveMangaDialog import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen -import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.home.HomeScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen import kotlinx.collections.immutable.persistentListOf @@ -204,65 +204,17 @@ fun Screen.feedTab( } // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> { - DuplicateMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { bulkFavoriteScreenModel.addFavorite(dialog.manga) }, - onOpenManga = { navigator.push(MangaScreen(dialog.duplicate.id)) }, - ) - } - is BulkFavoriteScreenModel.Dialog.RemoveManga -> { - RemoveMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - }, - mangaToRemove = dialog.manga, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, _ -> - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - bulkFavoriteScreenModel.moveMangaToCategories(dialog.manga, include) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> + AddDuplicateMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.RemoveManga -> + RemoveMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> + ChangeMangaCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt index 75067d6ba..042e30ecc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt @@ -8,12 +8,11 @@ import cafe.adriel.voyager.core.model.rememberScreenModel import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow import eu.kanade.presentation.browse.MigrateSearchScreen -import eu.kanade.presentation.category.components.ChangeCategoryDialog -import eu.kanade.presentation.manga.AllowDuplicateDialog import eu.kanade.presentation.util.Screen +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListScreen -import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen class MigrateSearchScreen(private val mangaId: Long, private val validSources: List) : Screen() { @@ -74,38 +73,11 @@ class MigrateSearchScreen(private val mangaId: Long, private val validSources: L ) // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt index 776841343..edbbf14a9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt @@ -17,19 +17,18 @@ import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow import eu.kanade.presentation.browse.BrowseSourceContent import eu.kanade.presentation.browse.components.BrowseSourceFloatingActionButton -import eu.kanade.presentation.category.components.ChangeCategoryDialog import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBarActions import eu.kanade.presentation.components.SearchToolbar import eu.kanade.presentation.components.SelectionToolbar -import eu.kanade.presentation.manga.AllowDuplicateDialog import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.source.online.HttpSource +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListScreen import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel import eu.kanade.tachiyomi.ui.browse.source.browse.SourceFilterDialog -import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.ui.webview.WebViewScreen import kotlinx.collections.immutable.persistentListOf @@ -180,38 +179,11 @@ data class SourceSearchScreen( } // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt index 5b39a9643..0ed54e43a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt @@ -45,13 +45,14 @@ import eu.kanade.presentation.browse.components.SavedSearchCreateDialog import eu.kanade.presentation.browse.components.SavedSearchDeleteDialog import eu.kanade.presentation.category.components.ChangeCategoryDialog import eu.kanade.presentation.components.SelectionToolbar -import eu.kanade.presentation.manga.AllowDuplicateDialog import eu.kanade.presentation.manga.DuplicateMangaDialog import eu.kanade.presentation.util.AssistContentScreen import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.online.HttpSource +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.extension.details.SourcePreferencesScreen import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel.Listing @@ -395,38 +396,11 @@ data class BrowseSourceScreen( } // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt index 232597f91..5e82e3b08 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt @@ -13,18 +13,18 @@ import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.Navigator import cafe.adriel.voyager.navigator.currentOrThrow import eu.kanade.presentation.browse.SourceFeedScreen -import eu.kanade.presentation.browse.components.RemoveMangaDialog import eu.kanade.presentation.browse.components.SourceFeedAddDialog import eu.kanade.presentation.browse.components.SourceFeedDeleteDialog -import eu.kanade.presentation.category.components.ChangeCategoryDialog -import eu.kanade.presentation.manga.AllowDuplicateDialog -import eu.kanade.presentation.manga.DuplicateMangaDialog import eu.kanade.presentation.util.Screen import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel +import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog +import eu.kanade.tachiyomi.ui.browse.RemoveMangaDialog import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen import eu.kanade.tachiyomi.ui.browse.source.browse.SourceFilterDialog -import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen import eu.kanade.tachiyomi.util.system.toast import exh.md.follows.MangaDexFollowsScreen @@ -190,65 +190,17 @@ class SourceFeedScreen(val sourceId: Long) : Screen() { } // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> { - DuplicateMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { bulkFavoriteScreenModel.addFavorite(dialog.manga) }, - onOpenManga = { navigator.push(MangaScreen(dialog.duplicate.id)) }, - ) - } - is BulkFavoriteScreenModel.Dialog.RemoveManga -> { - RemoveMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - }, - mangaToRemove = dialog.manga, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, _ -> - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - bulkFavoriteScreenModel.moveMangaToCategories(dialog.manga, include) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> + AddDuplicateMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.RemoveManga -> + RemoveMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> + ChangeMangaCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <-- diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt index d1f51a4a4..0dae993bc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt @@ -15,14 +15,14 @@ import cafe.adriel.voyager.core.model.rememberScreenModel import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow import eu.kanade.presentation.browse.GlobalSearchScreen -import eu.kanade.presentation.browse.components.RemoveMangaDialog -import eu.kanade.presentation.category.components.ChangeCategoryDialog -import eu.kanade.presentation.manga.AllowDuplicateDialog -import eu.kanade.presentation.manga.DuplicateMangaDialog import eu.kanade.presentation.util.Screen +import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel +import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog +import eu.kanade.tachiyomi.ui.browse.RemoveMangaDialog import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen -import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen import tachiyomi.core.common.util.lang.launchIO import tachiyomi.presentation.core.screens.LoadingScreen @@ -129,65 +129,17 @@ class GlobalSearchScreen( } // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> { - DuplicateMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { bulkFavoriteScreenModel.addFavorite(dialog.manga) }, - onOpenManga = { navigator.push(MangaScreen(dialog.duplicate.id)) }, - ) - } - is BulkFavoriteScreenModel.Dialog.RemoveManga -> { - RemoveMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - }, - mangaToRemove = dialog.manga, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, _ -> - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - bulkFavoriteScreenModel.moveMangaToCategories(dialog.manga, include) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> + AddDuplicateMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.RemoveManga -> + RemoveMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> + ChangeMangaCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <-- diff --git a/app/src/main/java/exh/md/follows/MangaDexFollowsScreen.kt b/app/src/main/java/exh/md/follows/MangaDexFollowsScreen.kt index 397fb2aff..ed30d3919 100644 --- a/app/src/main/java/exh/md/follows/MangaDexFollowsScreen.kt +++ b/app/src/main/java/exh/md/follows/MangaDexFollowsScreen.kt @@ -20,10 +20,11 @@ import eu.kanade.presentation.browse.components.BrowseSourceSimpleToolbar import eu.kanade.presentation.browse.components.RemoveMangaDialog import eu.kanade.presentation.category.components.ChangeCategoryDialog import eu.kanade.presentation.components.SelectionToolbar -import eu.kanade.presentation.manga.AllowDuplicateDialog import eu.kanade.presentation.manga.DuplicateMangaDialog import eu.kanade.presentation.util.Screen +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreenModel import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.manga.MangaScreen @@ -170,38 +171,11 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() { } // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <-- diff --git a/app/src/main/java/exh/md/similar/MangaDexSimilarScreen.kt b/app/src/main/java/exh/md/similar/MangaDexSimilarScreen.kt index 8f998bfee..267147806 100644 --- a/app/src/main/java/exh/md/similar/MangaDexSimilarScreen.kt +++ b/app/src/main/java/exh/md/similar/MangaDexSimilarScreen.kt @@ -17,14 +17,14 @@ import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.currentOrThrow import eu.kanade.presentation.browse.BrowseSourceContent import eu.kanade.presentation.browse.components.BrowseSourceSimpleToolbar -import eu.kanade.presentation.browse.components.RemoveMangaDialog -import eu.kanade.presentation.category.components.ChangeCategoryDialog import eu.kanade.presentation.components.SelectionToolbar -import eu.kanade.presentation.manga.AllowDuplicateDialog -import eu.kanade.presentation.manga.DuplicateMangaDialog import eu.kanade.presentation.util.Screen +import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel -import eu.kanade.tachiyomi.ui.category.CategoryScreen +import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog +import eu.kanade.tachiyomi.ui.browse.RemoveMangaDialog import eu.kanade.tachiyomi.ui.manga.MangaScreen import tachiyomi.core.common.util.lang.launchIO import tachiyomi.domain.manga.model.Manga @@ -138,65 +138,17 @@ class MangaDexSimilarScreen(val mangaId: Long, val sourceId: Long) : Screen() { } // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> { - DuplicateMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { bulkFavoriteScreenModel.addFavorite(dialog.manga) }, - onOpenManga = { navigator.push(MangaScreen(dialog.duplicate.id)) }, - ) - } - is BulkFavoriteScreenModel.Dialog.RemoveManga -> { - RemoveMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - }, - mangaToRemove = dialog.manga, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, _ -> - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - bulkFavoriteScreenModel.moveMangaToCategories(dialog.manga, include) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> + AddDuplicateMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.RemoveManga -> + RemoveMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> + ChangeMangaCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <-- diff --git a/app/src/main/java/exh/recs/RecommendsScreen.kt b/app/src/main/java/exh/recs/RecommendsScreen.kt index 55e40be9a..2a44db298 100644 --- a/app/src/main/java/exh/recs/RecommendsScreen.kt +++ b/app/src/main/java/exh/recs/RecommendsScreen.kt @@ -18,16 +18,15 @@ import cafe.adriel.voyager.navigator.Navigator import cafe.adriel.voyager.navigator.currentOrThrow import eu.kanade.presentation.browse.BrowseSourceContent import eu.kanade.presentation.browse.components.BrowseSourceSimpleToolbar -import eu.kanade.presentation.browse.components.RemoveMangaDialog -import eu.kanade.presentation.category.components.ChangeCategoryDialog import eu.kanade.presentation.components.SelectionToolbar -import eu.kanade.presentation.manga.AllowDuplicateDialog -import eu.kanade.presentation.manga.DuplicateMangaDialog import eu.kanade.presentation.util.Screen +import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog +import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel +import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog +import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog +import eu.kanade.tachiyomi.ui.browse.RemoveMangaDialog import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen -import eu.kanade.tachiyomi.ui.category.CategoryScreen -import eu.kanade.tachiyomi.ui.manga.MangaScreen import tachiyomi.core.common.util.lang.launchIO import tachiyomi.domain.manga.model.Manga import tachiyomi.presentation.core.components.material.Scaffold @@ -138,65 +137,17 @@ class RecommendsScreen(val mangaId: Long, val sourceId: Long) : Screen() { } // KMK --> - val onBulkDismissRequest = { bulkFavoriteScreenModel.setDialog(null) } - when (val dialog = bulkFavoriteState.dialog) { - is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> { - DuplicateMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { bulkFavoriteScreenModel.addFavorite(dialog.manga) }, - onOpenManga = { navigator.push(MangaScreen(dialog.duplicate.id)) }, - ) - } - is BulkFavoriteScreenModel.Dialog.RemoveManga -> { - RemoveMangaDialog( - onDismissRequest = onBulkDismissRequest, - onConfirm = { - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - }, - mangaToRemove = dialog.manga, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, _ -> - bulkFavoriteScreenModel.changeMangaFavorite(dialog.manga) - bulkFavoriteScreenModel.moveMangaToCategories(dialog.manga, include) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> { - ChangeCategoryDialog( - initialSelection = dialog.initialSelection, - onDismissRequest = onBulkDismissRequest, - onEditCategories = { navigator.push(CategoryScreen()) }, - onConfirm = { include, exclude -> - bulkFavoriteScreenModel.setMangasCategories(dialog.mangas, include, exclude) - }, - ) - } - is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> { - AllowDuplicateDialog( - onDismissRequest = onBulkDismissRequest, - onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, - onSkipAllDuplicate = { - bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) - }, - onOpenManga = { - navigator.push(MangaScreen(dialog.duplicatedManga.second.id)) - }, - onAllowDuplicate = { - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1) - }, - onSkipDuplicate = { - bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) - bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) - }, - duplicatedName = dialog.duplicatedManga.second.title, - ) - } + when (bulkFavoriteState.dialog) { + is BulkFavoriteScreenModel.Dialog.AddDuplicateManga -> + AddDuplicateMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.RemoveManga -> + RemoveMangaDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangaCategory -> + ChangeMangaCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> + ChangeMangasCategoryDialog(bulkFavoriteScreenModel) + is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> + AllowDuplicateDialog(bulkFavoriteScreenModel) else -> {} } // KMK <--