mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Fix #277, library not updating
This commit is contained in:
		| @@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.data.database.models.Manga | ||||
|  | ||||
| class LibraryMangaEvent(val mangas: Map<Int, List<Manga>>) { | ||||
|  | ||||
|     fun getMangasForCategory(category: Category): List<Manga>? { | ||||
|     fun getMangaForCategory(category: Category): List<Manga>? { | ||||
|         return mangas[category.id] | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -15,7 +15,6 @@ import eu.kanade.tachiyomi.ui.base.fragment.BaseFragment | ||||
| import eu.kanade.tachiyomi.ui.manga.MangaActivity | ||||
| import kotlinx.android.synthetic.main.fragment_library_category.* | ||||
| import rx.Subscription | ||||
| import java.util.* | ||||
|  | ||||
| /** | ||||
|  * Fragment containing the library manga for a certain category. | ||||
| @@ -34,14 +33,6 @@ class LibraryCategoryFragment : BaseFragment(), FlexibleViewHolder.OnListItemCli | ||||
|      */ | ||||
|     private var position: Int = 0 | ||||
|  | ||||
|     /** | ||||
|      * Manga in this category. | ||||
|      */ | ||||
|     private var mangas: List<Manga>? = null | ||||
|         set(value) { | ||||
|             field = value ?: ArrayList() | ||||
|         } | ||||
|  | ||||
|     /** | ||||
|      * Subscription for the library manga. | ||||
|      */ | ||||
| @@ -119,7 +110,7 @@ class LibraryCategoryFragment : BaseFragment(), FlexibleViewHolder.OnListItemCli | ||||
|     override fun onResume() { | ||||
|         super.onResume() | ||||
|         libraryMangaSubscription = libraryPresenter.libraryMangaSubject | ||||
|                 .subscribe { if (it != null) onNextLibraryManga(it) } | ||||
|                 .subscribe { onNextLibraryManga(it) } | ||||
|     } | ||||
|  | ||||
|     override fun onPause() { | ||||
| @@ -134,8 +125,8 @@ class LibraryCategoryFragment : BaseFragment(), FlexibleViewHolder.OnListItemCli | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Subscribe to [LibraryMangaEvent]. When an event is received, it updates [mangas] if needed | ||||
|      * and refresh the content of the adapter. | ||||
|      * Subscribe to [LibraryMangaEvent]. When an event is received, it updates the content of the | ||||
|      * adapter. | ||||
|      * | ||||
|      * @param event the event received. | ||||
|      */ | ||||
| @@ -146,15 +137,11 @@ class LibraryCategoryFragment : BaseFragment(), FlexibleViewHolder.OnListItemCli | ||||
|         // When a category is deleted, the index can be greater than the number of categories. | ||||
|         if (position >= categories.size) return | ||||
|  | ||||
|         // Get the manga list for this category | ||||
|         val mangaForCategory = event.getMangasForCategory(categories[position]) | ||||
|         // Get the manga list for this category. | ||||
|         val mangaForCategory = event.getMangaForCategory(categories[position]) ?: emptyList() | ||||
|  | ||||
|         // Update the list only if the reference to the list is different, avoiding reseting the | ||||
|         // adapter after every onResume. | ||||
|         if (mangas !== mangaForCategory) { | ||||
|             mangas = mangaForCategory | ||||
|             adapter.setItems(mangas ?: emptyList()) | ||||
|         } | ||||
|         // Update the category with its manga. | ||||
|         adapter.setItems(mangaForCategory) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -125,6 +125,11 @@ class LibraryFragment : BaseRxFragment<LibraryPresenter>(), ActionMode.Callback | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun onResume() { | ||||
|         super.onResume() | ||||
|         presenter.subscribeLibrary() | ||||
|     } | ||||
|  | ||||
|     override fun onDestroyView() { | ||||
|         tabs.visibility = View.GONE | ||||
|         super.onDestroyView() | ||||
|   | ||||
| @@ -44,7 +44,7 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() { | ||||
|     /** | ||||
|      * Subject to notify the library's viewpager for updates. | ||||
|      */ | ||||
|     val libraryMangaSubject = BehaviorSubject.create<LibraryMangaEvent?>() | ||||
|     val libraryMangaSubject = BehaviorSubject.create<LibraryMangaEvent>() | ||||
|  | ||||
|     /** | ||||
|      * Database. | ||||
| @@ -91,18 +91,6 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     override fun onDropView() { | ||||
|         libraryMangaSubject.onNext(null) | ||||
|         super.onDropView() | ||||
|     } | ||||
|  | ||||
|     override fun onTakeView(libraryFragment: LibraryFragment) { | ||||
|         super.onTakeView(libraryFragment) | ||||
|         if (isUnsubscribed(GET_LIBRARY)) { | ||||
|             start(GET_LIBRARY) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the categories and all its manga from the database. | ||||
|      * | ||||
| @@ -114,13 +102,6 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() { | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Update the library information | ||||
|      */ | ||||
|     fun updateLibrary() { | ||||
|         start(GET_LIBRARY) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the categories from the database. | ||||
|      * | ||||
| @@ -151,6 +132,22 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() { | ||||
|                 } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Resubscribes to library if needed. | ||||
|      */ | ||||
|     fun subscribeLibrary() { | ||||
|         if (isUnsubscribed(GET_LIBRARY)) { | ||||
|             start(GET_LIBRARY) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Resubscribes to library. | ||||
|      */ | ||||
|     fun updateLibrary() { | ||||
|         start(GET_LIBRARY) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Filter library by preference | ||||
|      * | ||||
|   | ||||
		Reference in New Issue
	
	Block a user