From dadcfe6e219a41a0fc279149ae794453fd43dcaf Mon Sep 17 00:00:00 2001 From: "Tran M. Cuong" Date: Tue, 27 Aug 2024 23:58:42 +0700 Subject: [PATCH] Don't show Related Titles for merged entries (#308) Also fix the case it was always showing Related Titles on overflow menu. --- .../kanade/presentation/manga/MangaScreen.kt | 39 ++++++++++++++----- .../tachiyomi/ui/manga/MangaScreenModel.kt | 8 +--- 2 files changed, 30 insertions(+), 17 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 211c99e7d..187ce3127 100644 --- a/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt @@ -119,6 +119,7 @@ import tachiyomi.presentation.core.components.material.PullRefresh import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.i18n.stringResource +import tachiyomi.presentation.core.util.collectAsState import tachiyomi.presentation.core.util.shouldExpandFAB import tachiyomi.source.local.isLocal import uy.kohesive.injekt.Injekt @@ -409,8 +410,10 @@ private fun MangaScreenSmallImpl( } // SY <-- // KMK --> - val relatedMangasEnabled = Injekt.get().relatedMangas().get() - val expandRelatedMangas = Injekt.get().expandRelatedTitles().get() + val uiPreferences = Injekt.get() + val relatedMangasEnabled by Injekt.get().relatedMangas().collectAsState() + val expandRelatedMangas by uiPreferences.expandRelatedTitles().collectAsState() + val showRelatedTitlesInOverflow by uiPreferences.relatedTitlesInOverflow().collectAsState() val fullCoverBackground = MaterialTheme.colorScheme.surfaceTint.blend(MaterialTheme.colorScheme.surface) // KMK <-- @@ -457,7 +460,11 @@ private fun MangaScreenSmallImpl( // SY --> onClickEditInfo = onEditInfoClicked.takeIf { state.manga.favorite }, // KMK --> - onClickRelatedTitles = onRelatedMangasScreenClick.takeIf { state.showRelatedTitlesInOverflow }, + onClickRelatedTitles = onRelatedMangasScreenClick.takeIf { + !expandRelatedMangas && + showRelatedTitlesInOverflow && + state.manga.source != MERGED_SOURCE_ID + }, // KMK <-- onClickRecommend = onRecommendClicked.takeIf { state.showRecommendationsInOverflow }, onClickMergedSettings = onMergedSettingsClicked.takeIf { state.manga.source == MERGED_SOURCE_ID }, @@ -631,7 +638,10 @@ private fun MangaScreenSmallImpl( } // KMK --> - if (state.source !is StubSource && relatedMangasEnabled) { + if (state.source !is StubSource && + relatedMangasEnabled && + state.manga.source != MERGED_SOURCE_ID + ) { if (expandRelatedMangas) { if (state.relatedMangasSorted?.isNotEmpty() != false) { item { HorizontalDivider() } @@ -658,7 +668,7 @@ private fun MangaScreenSmallImpl( } item { HorizontalDivider() } } - } else if (!state.showRelatedTitlesInOverflow) { + } else if (!showRelatedTitlesInOverflow) { item( key = MangaScreenItem.RELATED_TITLES, contentType = MangaScreenItem.RELATED_TITLES, @@ -821,8 +831,10 @@ private fun MangaScreenLargeImpl( val metadataDescription = metadataDescription(state.source) // SY <-- // KMK --> - val relatedMangasEnabled = Injekt.get().relatedMangas().get() - val expandRelatedMangas = Injekt.get().expandRelatedTitles().get() + val uiPreferences = Injekt.get() + val relatedMangasEnabled by Injekt.get().relatedMangas().collectAsState() + val expandRelatedMangas by uiPreferences.expandRelatedTitles().collectAsState() + val showRelatedTitlesInOverflow by uiPreferences.relatedTitlesInOverflow().collectAsState() val fullCoverBackground = MaterialTheme.colorScheme.surfaceTint.blend(MaterialTheme.colorScheme.surface) // KMK <-- @@ -861,7 +873,11 @@ private fun MangaScreenLargeImpl( // SY --> onClickEditInfo = onEditInfoClicked.takeIf { state.manga.favorite }, // KMK --> - onClickRelatedTitles = onRelatedMangasScreenClick.takeIf { state.showRelatedTitlesInOverflow }, + onClickRelatedTitles = onRelatedMangasScreenClick.takeIf { + !expandRelatedMangas && + showRelatedTitlesInOverflow && + state.manga.source != MERGED_SOURCE_ID + }, // KMK <-- onClickRecommend = onRecommendClicked.takeIf { state.showRecommendationsInOverflow }, onClickMergedSettings = onMergedSettingsClicked.takeIf { state.manga.source == MERGED_SOURCE_ID }, @@ -1047,7 +1063,10 @@ private fun MangaScreenLargeImpl( ), ) { // KMK --> - if (state.source !is StubSource && relatedMangasEnabled) { + if (state.source !is StubSource && + relatedMangasEnabled && + state.manga.source != MERGED_SOURCE_ID + ) { if (expandRelatedMangas) { if (state.relatedMangasSorted?.isNotEmpty() != false) { item( @@ -1074,7 +1093,7 @@ private fun MangaScreenLargeImpl( } item { HorizontalDivider() } } - } else if (!state.showRelatedTitlesInOverflow) { + } else if (!showRelatedTitlesInOverflow) { item( key = MangaScreenItem.RELATED_TITLES, contentType = MangaScreenItem.RELATED_TITLES, 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 96240706e..5cbcdefcb 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 @@ -455,9 +455,6 @@ class MangaScreenModel( excludedScanlators = getExcludedScanlators.await(mangaId).toImmutableSet(), isRefreshingData = needRefreshInfo || needRefreshChapter, dialog = null, - // KMK --> - showRelatedTitlesInOverflow = uiPreferences.relatedTitlesInOverflow().get(), - // KMK <-- // SY --> showRecommendationsInOverflow = uiPreferences.recommendsInOverflow().get(), showMergeInOverflow = uiPreferences.mergeInOverflow().get(), @@ -1258,7 +1255,7 @@ class MangaScreenModel( */ internal suspend fun fetchRelatedMangasFromSource(onDemand: Boolean = false, onFinish: (() -> Unit)? = null) { val expandRelatedTitles = uiPreferences.expandRelatedTitles().get() - if (!onDemand && !expandRelatedTitles) return + if (!onDemand && !expandRelatedTitles || manga?.source == MERGED_SOURCE_ID) return // start fetching related mangas setRelatedMangasFetchedStatus(false) @@ -1934,9 +1931,6 @@ class MangaScreenModel( // SY --> val meta: RaisedSearchMetadata?, val mergedData: MergedMangaData?, - // KMK --> - val showRelatedTitlesInOverflow: Boolean, - // KMK <-- val showRecommendationsInOverflow: Boolean, val showMergeInOverflow: Boolean, val showMergeWithAnother: Boolean,