mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Fix Set categories dialog not showing up when manga is added from download snackbar
This commit is contained in:
		| @@ -13,7 +13,6 @@ import com.bluelinelabs.conductor.RouterTransaction | ||||
| import com.bluelinelabs.conductor.support.RouterPagerAdapter | ||||
| import com.google.android.material.tabs.TabLayout | ||||
| import com.jakewharton.rxrelay.BehaviorRelay | ||||
| import com.jakewharton.rxrelay.PublishRelay | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.database.DatabaseHelper | ||||
| import eu.kanade.tachiyomi.data.database.models.Manga | ||||
| @@ -63,8 +62,6 @@ class MangaController : RxController<PagerControllerBinding>, TabbedController { | ||||
|  | ||||
|     val fromSource = args.getBoolean(FROM_SOURCE_EXTRA, false) | ||||
|  | ||||
|     val mangaFavoriteRelay: PublishRelay<Boolean> = PublishRelay.create() | ||||
|  | ||||
|     private val trackingIconRelay: BehaviorRelay<Boolean> = BehaviorRelay.create() | ||||
|  | ||||
|     private var trackingIconSubscription: Subscription? = null | ||||
|   | ||||
| @@ -97,7 +97,7 @@ class MangaInfoChaptersController(private val fromSource: Boolean = false) : | ||||
|     override fun createPresenter(): MangaInfoChaptersPresenter { | ||||
|         val ctrl = parentController as MangaController | ||||
|         return MangaInfoChaptersPresenter( | ||||
|             ctrl.manga!!, ctrl.source!!, ctrl.mangaFavoriteRelay | ||||
|             ctrl.manga!!, ctrl.source!! | ||||
|         ) | ||||
|     } | ||||
|  | ||||
| @@ -381,35 +381,39 @@ class MangaInfoChaptersController(private val fromSource: Boolean = false) : | ||||
|             toggleFavorite() | ||||
|             activity?.toast(activity?.getString(R.string.manga_removed_library)) | ||||
|         } else { | ||||
|             val categories = presenter.getCategories() | ||||
|             val defaultCategoryId = preferences.defaultCategory() | ||||
|             val defaultCategory = categories.find { it.id == defaultCategoryId } | ||||
|             addToLibrary(manga) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|             when { | ||||
|                 // Default category set | ||||
|                 defaultCategory != null -> { | ||||
|                     toggleFavorite() | ||||
|                     presenter.moveMangaToCategory(manga, defaultCategory) | ||||
|                     activity?.toast(activity?.getString(R.string.manga_added_library)) | ||||
|                 } | ||||
|     private fun addToLibrary(manga: Manga) { | ||||
|         val categories = presenter.getCategories() | ||||
|         val defaultCategoryId = preferences.defaultCategory() | ||||
|         val defaultCategory = categories.find { it.id == defaultCategoryId } | ||||
|  | ||||
|                 // Automatic 'Default' or no categories | ||||
|                 defaultCategoryId == 0 || categories.isEmpty() -> { | ||||
|                     toggleFavorite() | ||||
|                     presenter.moveMangaToCategory(manga, null) | ||||
|                     activity?.toast(activity?.getString(R.string.manga_added_library)) | ||||
|                 } | ||||
|         when { | ||||
|             // Default category set | ||||
|             defaultCategory != null -> { | ||||
|                 toggleFavorite() | ||||
|                 presenter.moveMangaToCategory(manga, defaultCategory) | ||||
|                 activity?.toast(activity?.getString(R.string.manga_added_library)) | ||||
|             } | ||||
|  | ||||
|                 // Choose a category | ||||
|                 else -> { | ||||
|                     val ids = presenter.getMangaCategoryIds(manga) | ||||
|                     val preselected = ids.mapNotNull { id -> | ||||
|                         categories.indexOfFirst { it.id == id }.takeIf { it != -1 } | ||||
|                     }.toTypedArray() | ||||
|             // Automatic 'Default' or no categories | ||||
|             defaultCategoryId == 0 || categories.isEmpty() -> { | ||||
|                 toggleFavorite() | ||||
|                 presenter.moveMangaToCategory(manga, null) | ||||
|                 activity?.toast(activity?.getString(R.string.manga_added_library)) | ||||
|             } | ||||
|  | ||||
|                     ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected) | ||||
|                         .showDialog(router) | ||||
|                 } | ||||
|             // Choose a category | ||||
|             else -> { | ||||
|                 val ids = presenter.getMangaCategoryIds(manga) | ||||
|                 val preselected = ids.mapNotNull { id -> | ||||
|                     categories.indexOfFirst { it.id == id }.takeIf { it != -1 } | ||||
|                 }.toTypedArray() | ||||
|  | ||||
|                 ChangeMangaCategoriesDialog(this, listOf(manga), categories, preselected) | ||||
|                     .showDialog(router) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @@ -758,11 +762,12 @@ class MangaInfoChaptersController(private val fromSource: Boolean = false) : | ||||
|  | ||||
|     private fun downloadChapters(chapters: List<ChapterItem>) { | ||||
|         val view = view | ||||
|         val manga = presenter.manga | ||||
|         presenter.downloadChapters(chapters) | ||||
|         if (view != null && !presenter.manga.favorite) { | ||||
|         if (view != null && !manga.favorite) { | ||||
|             binding.recycler.snack(view.context.getString(R.string.snack_add_to_library), Snackbar.LENGTH_INDEFINITE) { | ||||
|                 setAction(R.string.action_add) { | ||||
|                     presenter.addToLibrary() | ||||
|                     addToLibrary(manga) | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -30,7 +30,6 @@ import uy.kohesive.injekt.api.get | ||||
| class MangaInfoChaptersPresenter( | ||||
|     val manga: Manga, | ||||
|     val source: Source, | ||||
|     private val mangaFavoriteRelay: PublishRelay<Boolean>, | ||||
|     val preferences: PreferencesHelper = Injekt.get(), | ||||
|     private val db: DatabaseHelper = Injekt.get(), | ||||
|     private val downloadManager: DownloadManager = Injekt.get(), | ||||
| @@ -79,11 +78,6 @@ class MangaInfoChaptersPresenter( | ||||
|         getMangaObservable() | ||||
|             .subscribeLatestCache({ view, manga -> view.onNextMangaInfo(manga, source) }) | ||||
|  | ||||
|         // Update favorite status | ||||
|         mangaFavoriteRelay.observeOn(AndroidSchedulers.mainThread()) | ||||
|             .subscribe { setFavorite(it) } | ||||
|             .apply { add(this) } | ||||
|  | ||||
|         // Prepare the relay. | ||||
|         chaptersRelay.flatMap { applyChapterFilters(it) } | ||||
|             .observeOn(AndroidSchedulers.mainThread()) | ||||
| @@ -161,13 +155,6 @@ class MangaInfoChaptersPresenter( | ||||
|         return manga.favorite | ||||
|     } | ||||
|  | ||||
|     private fun setFavorite(favorite: Boolean) { | ||||
|         if (manga.favorite == favorite) { | ||||
|             return | ||||
|         } | ||||
|         toggleFavorite() | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns true if the manga has any downloads. | ||||
|      */ | ||||
| @@ -498,13 +485,6 @@ class MangaInfoChaptersPresenter( | ||||
|         refreshChapters() | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Adds manga to library | ||||
|      */ | ||||
|     fun addToLibrary() { | ||||
|         mangaFavoriteRelay.call(true) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Sets the active display mode. | ||||
|      * @param mode the mode to set. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user