Show a confirmation dialog when unfavoriting manga from the manga screen (#4073)

This commit is contained in:
WizaHX
2026-10-11 22:59:40 +06:00
committed by GitHub
parent bce1f71958
commit dd4e9f00f1
3 changed files with 21 additions and 1 deletions
@@ -23,6 +23,7 @@ import cafe.adriel.voyager.navigator.currentOrThrow
import dev.zacsweers.metrox.viewmodel.assistedMetroViewModel
import eu.kanade.domain.manga.model.hasCustomCover
import eu.kanade.domain.manga.model.toSManga
import eu.kanade.presentation.browse.components.RemoveMangaDialog
import eu.kanade.presentation.category.components.ChangeCategoryDialog
import eu.kanade.presentation.components.NavigatorAdaptiveSheet
import eu.kanade.presentation.manga.ChapterSettingsDialog
@@ -116,7 +117,11 @@ class MangaScreen(
onDownloadChapter = viewModel::runChapterDownloadActions.takeIf { !successState.source.isLocalOrStub() },
downloadProgressProvider = viewModel::getDownloadProgress,
onAddToLibraryClicked = {
viewModel.toggleFavorite()
if (successState.manga.favorite) {
viewModel.showRemoveFromLibraryDialog()
} else {
viewModel.toggleFavorite()
}
haptic.performHapticFeedback(HapticFeedbackType.LongPress)
},
onWebViewClicked = {
@@ -171,6 +176,15 @@ class MangaScreen(
val onDismissRequest = { viewModel.dismissDialog() }
when (val dialog = successState.dialog) {
null -> {}
MangaViewModel.Dialog.RemoveFromLibrary -> {
RemoveMangaDialog(
onDismissRequest = onDismissRequest,
onConfirm = {
if (successState.manga.favorite) viewModel.toggleFavorite()
},
mangaToRemove = successState.manga,
)
}
is MangaViewModel.Dialog.ChangeCategory -> {
ChangeCategoryDialog(
initialSelection = dialog.initialSelection,
@@ -461,6 +461,10 @@ class MangaViewModel(
}
}
fun showRemoveFromLibraryDialog() {
if (successState?.manga?.favorite == true) dialog.value = Dialog.RemoveFromLibrary
}
fun showChangeCategoryDialog() {
val manga = successState?.manga ?: return
viewModelScope.launch {
@@ -1053,6 +1057,7 @@ class MangaViewModel(
data class DuplicateManga(val manga: Manga, val duplicates: List<MangaWithChapterCount>) : Dialog
data class Migrate(val target: Manga, val current: Manga) : Dialog
data class SetFetchInterval(val manga: Manga) : Dialog
data object RemoveFromLibrary : Dialog
data object SettingsSheet : Dialog
data object TrackSheet : Dialog
data object FullCover : Dialog