소스 검색

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
Ivan Iskandar 2 년 전
부모
커밋
483b204fb5

+ 4 - 1
app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt

@@ -300,6 +300,7 @@ private fun MangaScreenSmallImpl(
         SwipeRefresh(
             state = rememberSwipeRefreshState(state.isRefreshingInfo || state.isRefreshingChapter),
             onRefresh = onRefresh,
+            swipeEnabled = !chapters.any { it.selected },
             indicatorPadding = contentPadding,
             indicator = { s, trigger ->
                 SwipeRefreshIndicator(
@@ -426,11 +427,14 @@ fun MangaScreenLargeImpl(
     val layoutDirection = LocalLayoutDirection.current
     val density = LocalDensity.current
 
+    val chapters = remember(state) { state.processedChapters.toList() }
+
     val insetPadding = WindowInsets.systemBars.only(WindowInsetsSides.Horizontal).asPaddingValues()
     val (topBarHeight, onTopBarHeightChanged) = remember { mutableStateOf(0) }
     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() },
@@ -445,7 +449,6 @@ fun MangaScreenLargeImpl(
         },
     ) {
         val chapterListState = rememberLazyListState()
-        val chapters = remember(state) { state.processedChapters.toList() }
 
         val internalOnBackPressed = {
             if (chapters.any { it.selected }) {

+ 2 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt

@@ -59,6 +59,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.filter
 import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.map
@@ -171,6 +172,7 @@ class MangaPresenter(
             }
 
             getMangaAndChapters.subscribe(mangaId)
+                .distinctUntilChanged()
                 .collectLatest { (manga, chapters) ->
                     val chapterItems = chapters.toChapterItems(
                         context = view?.activity ?: Injekt.get<Application>(),