diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt index 73c36b043..fca98fb61 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt @@ -56,6 +56,7 @@ import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.MetadataSource +import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.FabController import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.ui.base.controller.getMainAppBarHeight @@ -222,7 +223,7 @@ class MangaController : private var trackSheet: TrackSheet? = null - private var dialog: MangaFullCoverDialog? = null + private var dialog: DialogController? = null /** * For [recyclerViewUpdatesToolbarTitleAlpha] @@ -726,8 +727,7 @@ class MangaController : } }.toTypedArray() - ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected) - .showDialog(router) + showChangeCategoryDialog(manga, categories, preselected) } } @@ -851,8 +851,21 @@ class MangaController : QuadStateTextView.State.UNCHECKED.ordinal } }.toTypedArray() - ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected) - .showDialog(router) + showChangeCategoryDialog(manga, categories, preselected) + } + + private fun showChangeCategoryDialog(manga: Manga, categories: List, preselected: Array) { + if (dialog != null) return + dialog = ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected) + dialog?.addLifecycleListener( + object : LifecycleListener() { + override fun postDestroy(controller: Controller) { + super.postDestroy(controller) + dialog = null + } + } + ) + dialog?.showDialog(router) } override fun updateCategoriesForMangas(mangas: List, addCategories: List, removeCategories: List) { @@ -1047,7 +1060,7 @@ class MangaController : fun onSetCoverSuccess() { editMangaDialog?.loadCover() mangaInfoAdapter?.notifyDataSetChanged() - dialog?.setImage(manga) + (dialog as? MangaFullCoverDialog)?.setImage(manga) activity?.toast(R.string.cover_updated) }