mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	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
This commit is contained in:
		@@ -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 }) {
 | 
			
		||||
 
 | 
			
		||||
@@ -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>(),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user