mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +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