From 647f6e7721ffc202e3e2d15cce835c7602de3185 Mon Sep 17 00:00:00 2001 From: arkon Date: Fri, 7 Jul 2023 17:57:29 -0400 Subject: [PATCH] Adjust manga FAB to only say "Start" if there's no unread chapters in unfiltered list Closes #9479 (cherry picked from commit cf3f2d0380e5ab70211e6aab3f45bc81da43fcf4) # Conflicts: # app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt --- .../java/eu/kanade/presentation/manga/MangaScreen.kt | 8 ++++---- .../eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt | 11 ++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt index f0566297a..49b3941df 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt @@ -322,7 +322,7 @@ private fun MangaScreenSmallImpl( ) { val chapterListState = rememberLazyListState() - val chapters = remember(state) { state.processedChapters.toList() } + val chapters = remember(state) { state.processedChapters } // SY --> val metadataDescription = metadataDescription(state.source) // SY <-- @@ -393,7 +393,7 @@ private fun MangaScreenSmallImpl( ) { ExtendedFloatingActionButton( text = { - val id = if (chapters.fastAny { it.chapter.read }) { + val id = if (state.chapters.fastAny { it.chapter.read }) { R.string.action_resume } else { R.string.action_start @@ -624,7 +624,7 @@ fun MangaScreenLargeImpl( val layoutDirection = LocalLayoutDirection.current val density = LocalDensity.current - val chapters = remember(state) { state.processedChapters.toList() } + val chapters = remember(state) { state.processedChapters } // SY --> val metadataDescription = metadataDescription(state.source) @@ -704,7 +704,7 @@ fun MangaScreenLargeImpl( ) { ExtendedFloatingActionButton( text = { - val id = if (chapters.fastAny { it.chapter.read }) { + val id = if (state.chapters.fastAny { it.chapter.read }) { R.string.action_resume } else { R.string.action_start diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt index ab8f4486e..3b4d1fddf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt @@ -183,7 +183,7 @@ class MangaInfoScreenModel( private val allChapters: List? get() = successState?.chapters - private val filteredChapters: Sequence? + private val filteredChapters: List? get() = successState?.processedChapters val chapterSwipeEndAction = libraryPreferences.swipeEndAction().get() @@ -1051,7 +1051,7 @@ class MangaInfoScreenModel( } private fun getUnreadChapters(): List { - val chapterItems = if (skipFiltered) filteredChapters.orEmpty().toList() else allChapters.orEmpty() + val chapterItems = if (skipFiltered) filteredChapters.orEmpty() else allChapters.orEmpty() return chapterItems .filter { (chapter, dlStatus) -> !chapter.read && dlStatus == Download.State.NOT_DOWNLOADED } .map { it.chapter } @@ -1144,7 +1144,7 @@ class MangaInfoScreenModel( fun markPreviousChapterRead(pointer: Chapter) { val successState = successState ?: return - val chapters = filteredChapters.orEmpty().map { it.chapter }.toList() + val chapters = filteredChapters.orEmpty().map { it.chapter } val prevChapters = if (successState.manga.sortDescending()) chapters.asReversed() else chapters val pointerPos = prevChapters.indexOf(pointer) if (pointerPos != -1) markChaptersRead(prevChapters.take(pointerPos), true) @@ -1563,8 +1563,9 @@ sealed class MangaScreenState { // SY <-- ) : MangaScreenState() { - val processedChapters: Sequence - get() = chapters.applyFilters(manga) + val processedChapters by lazy { + chapters.applyFilters(manga).toList() + } val trackingAvailable: Boolean get() = trackItems.isNotEmpty()