MangaPresenter: Add distinctUntilChanged to db flow (#7629)
* MangaScreen: Disable swipe refresh on action mode * MangaPresenter: Add distinctUntilChanged to db flow Now will only emit update when the related entry is changed (cherry picked from commit 483b204fb5b6790fb6fe59ffd80345cd484ca241) # Conflicts: # app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt
This commit is contained in:
parent
b592709630
commit
b368a53670
@ -354,6 +354,7 @@ private fun MangaScreenSmallImpl(
|
||||
SwipeRefresh(
|
||||
state = rememberSwipeRefreshState(state.isRefreshingInfo || state.isRefreshingChapter),
|
||||
onRefresh = onRefresh,
|
||||
swipeEnabled = !chapters.any { it.selected },
|
||||
indicatorPadding = contentPadding,
|
||||
indicator = { s, trigger ->
|
||||
SwipeRefreshIndicator(
|
||||
@ -538,6 +539,8 @@ fun MangaScreenLargeImpl(
|
||||
val layoutDirection = LocalLayoutDirection.current
|
||||
val density = LocalDensity.current
|
||||
|
||||
val chapters = remember(state) { state.processedChapters.toList() }
|
||||
|
||||
// SY -->
|
||||
val metadataSource = remember(state.source.id) { state.source.getMainSource<MetadataSource<*, *>>() }
|
||||
// SY <--
|
||||
@ -547,6 +550,7 @@ fun MangaScreenLargeImpl(
|
||||
SwipeRefresh(
|
||||
state = rememberSwipeRefreshState(state.isRefreshingInfo || state.isRefreshingChapter),
|
||||
onRefresh = onRefresh,
|
||||
swipeEnabled = !chapters.any { it.selected },
|
||||
indicatorPadding = PaddingValues(
|
||||
start = insetPadding.calculateStartPadding(layoutDirection),
|
||||
top = with(density) { topBarHeight.toDp() },
|
||||
@ -561,7 +565,6 @@ fun MangaScreenLargeImpl(
|
||||
},
|
||||
) {
|
||||
val chapterListState = rememberLazyListState()
|
||||
val chapters = remember(state) { state.processedChapters.toList() }
|
||||
|
||||
val internalOnBackPressed = {
|
||||
if (chapters.any { it.selected }) {
|
||||
|
@ -99,6 +99,7 @@ import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.catch
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.map
|
||||
@ -257,8 +258,12 @@ class MangaPresenter(
|
||||
}
|
||||
|
||||
getMangaAndChapters.subscribe(mangaId)
|
||||
.distinctUntilChanged()
|
||||
// SY -->
|
||||
.combine(getMergedChapterByMangaId.subscribe(mangaId)) { (manga, chapters), mergedChapters ->
|
||||
.combine(
|
||||
getMergedChapterByMangaId.subscribe(mangaId)
|
||||
.distinctUntilChanged(),
|
||||
) { (manga, chapters), mergedChapters ->
|
||||
if (manga.source == MERGED_SOURCE_ID) {
|
||||
manga to mergedChapters
|
||||
} else manga to chapters
|
||||
@ -287,13 +292,18 @@ class MangaPresenter(
|
||||
}
|
||||
allChapterScanlators = chapters.flatMap { MdUtil.getScanlators(it.scanlator) }.distinct()
|
||||
}
|
||||
.combine(getFlatMetadata.subscribe(mangaId)) { pair, flatMetadata ->
|
||||
.combine(
|
||||
getFlatMetadata.subscribe(mangaId)
|
||||
.distinctUntilChanged(),
|
||||
) { pair, flatMetadata ->
|
||||
CombineState(pair, flatMetadata)
|
||||
}
|
||||
.combine(
|
||||
combine(
|
||||
getMergedMangaById.subscribe(mangaId),
|
||||
getMergedReferencesById.subscribe(mangaId),
|
||||
getMergedMangaById.subscribe(mangaId)
|
||||
.distinctUntilChanged(),
|
||||
getMergedReferencesById.subscribe(mangaId)
|
||||
.distinctUntilChanged(),
|
||||
) { manga, references ->
|
||||
if (manga.isNotEmpty()) {
|
||||
val sourceManager = Injekt.get<SourceManager>()
|
||||
|
Loading…
x
Reference in New Issue
Block a user