From e2a3741837369f8177d5d3eb4a42a3419b12425b Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Wed, 25 Oct 2023 11:38:30 -0700 Subject: [PATCH] Update library list after pop animation finishes --- .../tachiyomi/ui/library/LibraryController.kt | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 9f923f2e73..1b7ab60591 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -247,8 +247,10 @@ open class LibraryController( override val mainRecycler: RecyclerView get() = binding.libraryGridRecycler.recycler - var staggeredBundle: Parcelable? = null + private var staggeredBundle: Parcelable? = null private var staggeredObserver: ViewTreeObserver.OnGlobalLayoutListener? = null + var isPoppingIn = false + var tempItems: List? = null // Dynamically injected into the search bar, controls category visibility during search private var showAllCategoriesView: ImageView? = null @@ -1030,6 +1032,7 @@ open class LibraryController( binding.filterBottomSheet.filterBottomSheet.isVisible = true if (type == ControllerChangeType.POP_ENTER) { presenter.getLibrary() + isPoppingIn = true } DownloadJob.callListeners() binding.recyclerCover.isClickable = false @@ -1051,6 +1054,18 @@ open class LibraryController( } } + override fun onChangeEnded( + changeHandler: ControllerChangeHandler, + changeType: ControllerChangeType, + ) { + super.onChangeEnded(changeHandler, changeType) + if (isPoppingIn) { + isPoppingIn = false + tempItems?.let { onNextLibraryUpdate(it) } + tempItems = null + } + } + override fun onActivityResumed(activity: Activity) { super.onActivityResumed(activity) if (!isBindingInitialized) return @@ -1083,6 +1098,10 @@ open class LibraryController( } open fun onNextLibraryUpdate(mangaMap: List, freshStart: Boolean = false) { + if (isPoppingIn) { + tempItems = mangaMap + return + } view ?: return destroyActionModeIfNeeded() if (mangaMap.isNotEmpty()) { @@ -1317,10 +1336,10 @@ open class LibraryController( removeStaggeredObserver() } if (!presenter.showAllCategories) { + shouldScrollToTop = true presenter.switchSection(pos) activeCategory = pos setActiveCategory() - shouldScrollToTop = true return } val headerPosition = adapter.indexOf(pos)