Bulk-favorite fully uses new multi-Duplicate dialog

This commit is contained in:
Cuong-Tran 2025-04-06 21:44:05 +07:00
parent ea418b9517
commit 28fae3657a
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
12 changed files with 176 additions and 224 deletions

View file

@ -16,7 +16,6 @@ import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollState
@ -34,7 +33,6 @@ import androidx.compose.material.icons.outlined.Done
import androidx.compose.material.icons.outlined.DoneAll import androidx.compose.material.icons.outlined.DoneAll
import androidx.compose.material.icons.outlined.Pause import androidx.compose.material.icons.outlined.Pause
import androidx.compose.material.icons.outlined.Schedule import androidx.compose.material.icons.outlined.Schedule
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@ -89,6 +87,13 @@ fun DuplicateMangaDialog(
onOpenManga: (manga: Manga) -> Unit, onOpenManga: (manga: Manga) -> Unit,
onMigrate: (manga: Manga) -> Unit, onMigrate: (manga: Manga) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
// KMK -->
bulkFavoriteManga: Manga? = null,
onAllowAllDuplicate: () -> Unit = {},
onSkipAllDuplicate: () -> Unit = {},
onSkipDuplicate: () -> Unit = {},
stopRunning: () -> Unit = {},
// KMK <--
) { ) {
val sourceManager = remember { Injekt.get<SourceManager>() } val sourceManager = remember { Injekt.get<SourceManager>() }
val minHeight = LocalPreferenceMinHeight.current val minHeight = LocalPreferenceMinHeight.current
@ -97,7 +102,12 @@ fun DuplicateMangaDialog(
AdaptiveSheet( AdaptiveSheet(
modifier = modifier, modifier = modifier,
onDismissRequest = onDismissRequest, onDismissRequest = {
// KMK -->
stopRunning()
// KMK <--
onDismissRequest()
},
) { ) {
Column( Column(
modifier = Modifier modifier = Modifier
@ -137,8 +147,12 @@ fun DuplicateMangaDialog(
DuplicateMangaListItem( DuplicateMangaListItem(
manga = it, manga = it,
getSource = { sourceManager.getOrStub(it.source) }, getSource = { sourceManager.getOrStub(it.source) },
onMigrate = { onMigrate(it) }, onMigrate = {
onDismissRequest = onDismissRequest, // KMK -->
if (bulkFavoriteManga == null) onDismissRequest()
// KMK <--
onMigrate(it)
},
onOpenManga = { onOpenManga(it) }, onOpenManga = { onOpenManga(it) },
) )
@ -150,34 +164,115 @@ fun DuplicateMangaDialog(
} }
} }
Column(modifier = horizontalPaddingModifier) { // KMK -->
HorizontalDivider() if (bulkFavoriteManga != null) {
Column(
modifier = horizontalPaddingModifier
.padding(bottom = MaterialTheme.padding.medium),
) {
HorizontalDivider()
TextPreferenceWidget( FlowRow(
title = stringResource(MR.strings.action_add_anyway), Modifier.fillMaxWidth(),
icon = Icons.Outlined.Add, horizontalArrangement = Arrangement.SpaceAround,
onPreferenceClick = { ) {
onDismissRequest() FlowColumn {
onConfirm() TextButton(
}, onClick = {
modifier = Modifier.clip(CircleShape), onDismissRequest()
) onConfirm()
} },
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(KMR.strings.action_allow_duplicate_manga))
}
OutlinedButton( TextButton(
onClick = onDismissRequest, onClick = {
modifier = Modifier onDismissRequest()
.then(horizontalPaddingModifier) onAllowAllDuplicate()
.padding(bottom = MaterialTheme.padding.medium) },
.heightIn(min = minHeight) Modifier.align(Alignment.CenterHorizontally),
.fillMaxWidth(), ) {
) { Text(text = stringResource(KMR.strings.action_allow_all_duplicate_manga))
Text( }
modifier = Modifier.padding(vertical = MaterialTheme.padding.extraSmall), }
text = stringResource(MR.strings.action_cancel),
color = MaterialTheme.colorScheme.primary, FlowColumn {
style = MaterialTheme.typography.bodyLarge, TextButton(
) onClick = {
onDismissRequest()
onSkipDuplicate()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(KMR.strings.action_skip_duplicate_manga))
}
TextButton(
onClick = {
onDismissRequest()
onSkipAllDuplicate()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(KMR.strings.action_skip_all_duplicate_manga))
}
}
FlowColumn {
TextButton(
onClick = {
onOpenManga(bulkFavoriteManga)
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(MR.strings.action_show_manga))
}
TextButton(
onClick = {
stopRunning()
onDismissRequest()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(MR.strings.action_cancel))
}
}
}
}
} else {
// KMK <--
Column(modifier = horizontalPaddingModifier) {
HorizontalDivider()
TextPreferenceWidget(
title = stringResource(MR.strings.action_add_anyway),
icon = Icons.Outlined.Add,
onPreferenceClick = {
onDismissRequest()
onConfirm()
},
modifier = Modifier.clip(CircleShape),
)
}
OutlinedButton(
onClick = onDismissRequest,
modifier = Modifier
.then(horizontalPaddingModifier)
.padding(bottom = MaterialTheme.padding.medium)
.heightIn(min = minHeight)
.fillMaxWidth(),
) {
Text(
modifier = Modifier.padding(vertical = MaterialTheme.padding.extraSmall),
text = stringResource(MR.strings.action_cancel),
color = MaterialTheme.colorScheme.primary,
style = MaterialTheme.typography.bodyLarge,
)
}
} }
} }
} }
@ -187,7 +282,6 @@ fun DuplicateMangaDialog(
private fun DuplicateMangaListItem( private fun DuplicateMangaListItem(
manga: Manga, manga: Manga,
getSource: () -> Source, getSource: () -> Source,
onDismissRequest: () -> Unit,
onOpenManga: () -> Unit, onOpenManga: () -> Unit,
onMigrate: () -> Unit, onMigrate: () -> Unit,
) { ) {
@ -213,10 +307,7 @@ private fun DuplicateMangaListItem(
.background(MaterialTheme.colorScheme.surface) .background(MaterialTheme.colorScheme.surface)
.combinedClickable( .combinedClickable(
onLongClick = { onOpenManga() }, onLongClick = { onOpenManga() },
onClick = { onClick = { onMigrate() },
onDismissRequest()
onMigrate()
},
) )
.padding(MaterialTheme.padding.small), .padding(MaterialTheme.padding.small),
) { ) {
@ -439,140 +530,4 @@ private val MangaDetailsIconWidth = 16.dp
// KMK --> // KMK -->
private val MangaCardPanoramaWidth = 322.dp private val MangaCardPanoramaWidth = 322.dp
@Composable
fun DuplicateMangasDialog(
onDismissRequest: () -> Unit,
onAllowAllDuplicate: () -> Unit,
onSkipAllDuplicate: () -> Unit,
onOpenManga: () -> Unit,
onAllowDuplicate: () -> Unit,
onSkipDuplicate: () -> Unit,
stopRunning: () -> Unit,
mangaName: String,
duplicate: Manga,
) {
val usePanoramaCover by Injekt.get<UiPreferences>().usePanoramaCoverAlways().collectAsState()
val coverRatio = remember { mutableFloatStateOf(1f) }
val coverIsWide = coverRatio.floatValue <= RatioSwitchToPanorama
AlertDialog(
onDismissRequest = {
stopRunning()
onDismissRequest()
},
title = {
Text(text = mangaName)
},
text = {
Column {
Text(text = stringResource(MR.strings.possible_duplicates_title))
Spacer(Modifier.height(MaterialTheme.padding.medium))
Box(
modifier = Modifier
.fillMaxWidth(),
) {
if (usePanoramaCover && coverIsWide) {
MangaCover.Panorama(
modifier = Modifier
.align(Alignment.Center)
.heightIn(max = 150.dp),
data = duplicate,
onCoverLoaded = { _, result ->
val image = result.result.image
coverRatio.floatValue = image.height.toFloat() / image.width
},
)
} else {
MangaCover.Book(
modifier = Modifier
.align(Alignment.Center)
.widthIn(max = 150.dp),
data = duplicate,
onCoverLoaded = { _, result ->
val image = result.result.image
coverRatio.floatValue = image.height.toFloat() / image.width
},
)
}
}
}
},
confirmButton = {
FlowRow(
Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceAround,
) {
FlowColumn {
TextButton(
onClick = {
onDismissRequest()
onAllowDuplicate()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(KMR.strings.action_allow_duplicate_manga))
}
TextButton(
onClick = {
onDismissRequest()
onAllowAllDuplicate()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(KMR.strings.action_allow_all_duplicate_manga))
}
}
FlowColumn {
TextButton(
onClick = {
onDismissRequest()
onSkipDuplicate()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(KMR.strings.action_skip_duplicate_manga))
}
TextButton(
onClick = {
onDismissRequest()
onSkipAllDuplicate()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(KMR.strings.action_skip_all_duplicate_manga))
}
}
FlowColumn {
TextButton(
onClick = {
stopRunning()
onDismissRequest()
onOpenManga()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(MR.strings.action_show_manga))
}
TextButton(
onClick = {
stopRunning()
onDismissRequest()
},
Modifier.align(Alignment.CenterHorizontally),
) {
Text(text = stringResource(MR.strings.action_cancel))
}
}
}
},
)
}
// KMK <-- // KMK <--

View file

@ -24,7 +24,6 @@ import eu.kanade.presentation.category.components.ChangeCategoryDialog
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.BulkSelectionToolbar import eu.kanade.presentation.components.BulkSelectionToolbar
import eu.kanade.presentation.manga.DuplicateMangaDialog import eu.kanade.presentation.manga.DuplicateMangaDialog
import eu.kanade.presentation.manga.DuplicateMangasDialog
import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen
import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.category.CategoryScreen
@ -127,7 +126,7 @@ class BulkFavoriteScreenModel(
/** /**
* Called when user click on [BulkSelectionToolbar]'s `Favorite` button. * Called when user click on [BulkSelectionToolbar]'s `Favorite` button.
* It will then look for any duplicated mangas. * It will then look for any duplicated mangas.
* - If there is any, it will show the [DuplicateMangasDialog]. * - If there is any, it will show the [DuplicateMangaDialog].
* - If not then it will call the [addFavoriteDuplicate]. * - If not then it will call the [addFavoriteDuplicate].
*/ */
fun addFavorite(startIdx: Int = 0) { fun addFavorite(startIdx: Int = 0) {
@ -135,13 +134,12 @@ class BulkFavoriteScreenModel(
startRunning() startRunning()
val entryWithDuplicates = getDuplicateLibraryManga(startIdx) val entryWithDuplicates = getDuplicateLibraryManga(startIdx)
if (entryWithDuplicates != null) { if (entryWithDuplicates != null) {
val (index, duplicates) = entryWithDuplicates val (index, manga, duplicates) = entryWithDuplicates
if (state.value.selection.size == 1) { if (state.value.selection.size == 1) {
val manga = state.value.selection.first()
// If only one manga is selected, show the multiple duplicates dialog. // If only one manga is selected, show the multiple duplicates dialog.
setDialog(Dialog.AddDuplicateManga(manga, duplicates)) setDialog(Dialog.AddDuplicateManga(manga, duplicates))
} else { } else {
setDialog(Dialog.AllowDuplicate(index to duplicates.first())) setDialog(Dialog.BulkAllowDuplicate(manga, duplicates, index))
} }
} else { } else {
addFavoriteDuplicate() addFavoriteDuplicate()
@ -206,13 +204,13 @@ class BulkFavoriteScreenModel(
} }
} }
private suspend fun getDuplicateLibraryManga(startIdx: Int = 0): Pair<Int, List<Manga>>? { private suspend fun getDuplicateLibraryManga(startIdx: Int = 0): Triple<Int, Manga, List<Manga>>? {
val mangas = state.value.selection val mangas = state.value.selection
mangas.fastForEachIndexed { index, manga -> mangas.fastForEachIndexed { index, manga ->
if (index < startIdx) return@fastForEachIndexed if (index < startIdx) return@fastForEachIndexed
val duplicates = getDuplicateLibraryManga(manga) val duplicates = getDuplicateLibraryManga(manga)
if (duplicates.isEmpty()) return@fastForEachIndexed if (duplicates.isEmpty()) return@fastForEachIndexed
return Pair(index, duplicates) return Triple(index, manga, duplicates)
} }
return null return null
} }
@ -414,8 +412,9 @@ class BulkFavoriteScreenModel(
} }
interface Dialog { interface Dialog {
data class RemoveManga(val manga: Manga) : Dialog
data class AddDuplicateManga(val manga: Manga, val duplicates: List<Manga>) : Dialog data class AddDuplicateManga(val manga: Manga, val duplicates: List<Manga>) : Dialog
data class BulkAllowDuplicate(val manga: Manga, val duplicates: List<Manga>, val currentIdx: Int) : Dialog
data class RemoveManga(val manga: Manga) : Dialog
data class ChangeMangaCategory( data class ChangeMangaCategory(
val manga: Manga, val manga: Manga,
val initialSelection: ImmutableList<CheckboxState.State<Category>>, val initialSelection: ImmutableList<CheckboxState.State<Category>>,
@ -424,7 +423,6 @@ class BulkFavoriteScreenModel(
val mangas: List<Manga>, val mangas: List<Manga>,
val initialSelection: ImmutableList<CheckboxState<Category>>, val initialSelection: ImmutableList<CheckboxState<Category>>,
) : Dialog ) : Dialog
data class AllowDuplicate(val duplicatedManga: Pair<Int, Manga>) : Dialog
} }
@Immutable @Immutable
@ -511,30 +509,29 @@ fun ChangeMangasCategoryDialog(bulkFavoriteScreenModel: BulkFavoriteScreenModel)
} }
@Composable @Composable
fun AllowDuplicateDialog(bulkFavoriteScreenModel: BulkFavoriteScreenModel) { fun BulkAllowDuplicateDialog(bulkFavoriteScreenModel: BulkFavoriteScreenModel) {
val navigator = LocalNavigator.currentOrThrow val navigator = LocalNavigator.currentOrThrow
val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState() val bulkFavoriteState by bulkFavoriteScreenModel.state.collectAsState()
val dialog = bulkFavoriteState.dialog as BulkFavoriteScreenModel.Dialog.AllowDuplicate val dialog = bulkFavoriteState.dialog as BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate
DuplicateMangasDialog( DuplicateMangaDialog(
duplicates = dialog.duplicates,
onDismissRequest = bulkFavoriteScreenModel::dismissDialog, onDismissRequest = bulkFavoriteScreenModel::dismissDialog,
onConfirm = {
bulkFavoriteScreenModel.addFavorite(startIdx = dialog.currentIdx + 1)
},
onOpenManga = { navigator.push(MangaScreen(it.id)) },
onMigrate = { navigator.push(MangaScreen(it.id)) },
bulkFavoriteManga = dialog.manga,
onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate, onAllowAllDuplicate = bulkFavoriteScreenModel::addFavoriteDuplicate,
onSkipAllDuplicate = { onSkipAllDuplicate = {
bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true) bulkFavoriteScreenModel.addFavoriteDuplicate(skipAllDuplicates = true)
}, },
onOpenManga = {
navigator.push(MangaScreen(dialog.duplicatedManga.second.id))
},
onAllowDuplicate = {
bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first + 1)
},
onSkipDuplicate = { onSkipDuplicate = {
bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.duplicatedManga.first) bulkFavoriteScreenModel.removeDuplicateSelectedManga(index = dialog.currentIdx)
bulkFavoriteScreenModel.addFavorite(startIdx = dialog.duplicatedManga.first) bulkFavoriteScreenModel.addFavorite(startIdx = dialog.currentIdx)
}, },
mangaName = dialog.duplicatedManga.second.title,
stopRunning = bulkFavoriteScreenModel::stopRunning, stopRunning = bulkFavoriteScreenModel::stopRunning,
duplicate = dialog.duplicatedManga.second,
) )
} }

View file

@ -27,7 +27,7 @@ import eu.kanade.presentation.browse.components.SourceFeedDeleteDialog
import eu.kanade.presentation.components.AppBar import eu.kanade.presentation.components.AppBar
import eu.kanade.presentation.components.TabContent import eu.kanade.presentation.components.TabContent
import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
@ -251,8 +251,8 @@ fun feedTab(
ChangeMangaCategoryDialog(bulkFavoriteScreenModel) ChangeMangaCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--

View file

@ -9,7 +9,7 @@ import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.presentation.browse.MigrateSearchScreen import eu.kanade.presentation.browse.MigrateSearchScreen
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListScreen import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListScreen
@ -77,8 +77,8 @@ class MigrateSearchScreen(private val mangaId: Long, private val validSources: L
when (bulkFavoriteState.dialog) { when (bulkFavoriteState.dialog) {
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--

View file

@ -21,7 +21,7 @@ import eu.kanade.presentation.components.BulkSelectionToolbar
import eu.kanade.presentation.components.SearchToolbar import eu.kanade.presentation.components.SearchToolbar
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
import eu.kanade.tachiyomi.ui.browse.bulkSelectionButton import eu.kanade.tachiyomi.ui.browse.bulkSelectionButton
@ -216,8 +216,8 @@ data class SourceSearchScreen(
when (bulkFavoriteState.dialog) { when (bulkFavoriteState.dialog) {
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--

View file

@ -52,7 +52,7 @@ import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
import eu.kanade.tachiyomi.ui.browse.extension.details.SourcePreferencesScreen import eu.kanade.tachiyomi.ui.browse.extension.details.SourcePreferencesScreen
@ -500,8 +500,8 @@ data class BrowseSourceScreen(
when (bulkFavoriteState.dialog) { when (bulkFavoriteState.dialog) {
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--

View file

@ -28,7 +28,7 @@ import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
@ -299,8 +299,8 @@ class SourceFeedScreen(val sourceId: Long) : Screen() {
ChangeMangaCategoryDialog(bulkFavoriteScreenModel) ChangeMangaCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--

View file

@ -16,7 +16,7 @@ import eu.kanade.core.util.ifSourcesLoaded
import eu.kanade.presentation.browse.GlobalSearchScreen import eu.kanade.presentation.browse.GlobalSearchScreen
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
@ -126,8 +126,8 @@ class GlobalSearchScreen(
ChangeMangaCategoryDialog(bulkFavoriteScreenModel) ChangeMangaCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--

View file

@ -64,7 +64,7 @@ import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.isLocalOrStub import eu.kanade.tachiyomi.source.isLocalOrStub
import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
@ -226,8 +226,8 @@ class MangaScreen(
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }

View file

@ -22,7 +22,7 @@ import eu.kanade.presentation.category.components.ChangeCategoryDialog
import eu.kanade.presentation.components.BulkSelectionToolbar import eu.kanade.presentation.components.BulkSelectionToolbar
import eu.kanade.presentation.manga.DuplicateMangaDialog import eu.kanade.presentation.manga.DuplicateMangaDialog
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen
@ -205,8 +205,8 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() {
when (bulkFavoriteState.dialog) { when (bulkFavoriteState.dialog) {
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--

View file

@ -19,7 +19,7 @@ import eu.kanade.presentation.browse.components.BrowseSourceSimpleToolbar
import eu.kanade.presentation.components.BulkSelectionToolbar import eu.kanade.presentation.components.BulkSelectionToolbar
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
@ -178,8 +178,8 @@ class BrowseRecommendsScreen(
ChangeMangaCategoryDialog(bulkFavoriteScreenModel) ChangeMangaCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--

View file

@ -12,7 +12,7 @@ import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.core.util.ifSourcesLoaded import eu.kanade.core.util.ifSourcesLoaded
import eu.kanade.presentation.util.Screen import eu.kanade.presentation.util.Screen
import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog import eu.kanade.tachiyomi.ui.browse.AddDuplicateMangaDialog
import eu.kanade.tachiyomi.ui.browse.AllowDuplicateDialog import eu.kanade.tachiyomi.ui.browse.BulkAllowDuplicateDialog
import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel import eu.kanade.tachiyomi.ui.browse.BulkFavoriteScreenModel
import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangaCategoryDialog
import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog import eu.kanade.tachiyomi.ui.browse.ChangeMangasCategoryDialog
@ -106,8 +106,8 @@ class RecommendsScreen(val mangaId: Long, val sourceId: Long) : Screen() {
ChangeMangaCategoryDialog(bulkFavoriteScreenModel) ChangeMangaCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory -> is BulkFavoriteScreenModel.Dialog.ChangeMangasCategory ->
ChangeMangasCategoryDialog(bulkFavoriteScreenModel) ChangeMangasCategoryDialog(bulkFavoriteScreenModel)
is BulkFavoriteScreenModel.Dialog.AllowDuplicate -> is BulkFavoriteScreenModel.Dialog.BulkAllowDuplicate ->
AllowDuplicateDialog(bulkFavoriteScreenModel) BulkAllowDuplicateDialog(bulkFavoriteScreenModel)
else -> {} else -> {}
} }
// KMK <-- // KMK <--