mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	BrowseSource: do networkToLocal and initializeManga inside flow (#9217)
* do networkToLocal and initializeManga inside flow * remove BrowseSourceScreenModel.GetManga
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							18e55aa25f
						
					
				
				
					commit
					81af97df77
				
			@@ -31,8 +31,10 @@ import eu.kanade.tachiyomi.util.removeCovers
 | 
			
		||||
import kotlinx.coroutines.flow.SharingStarted
 | 
			
		||||
import kotlinx.coroutines.flow.distinctUntilChanged
 | 
			
		||||
import kotlinx.coroutines.flow.emptyFlow
 | 
			
		||||
import kotlinx.coroutines.flow.filter
 | 
			
		||||
import kotlinx.coroutines.flow.filterNotNull
 | 
			
		||||
import kotlinx.coroutines.flow.firstOrNull
 | 
			
		||||
import kotlinx.coroutines.flow.flow
 | 
			
		||||
import kotlinx.coroutines.flow.map
 | 
			
		||||
import kotlinx.coroutines.flow.onEach
 | 
			
		||||
import kotlinx.coroutines.flow.stateIn
 | 
			
		||||
@@ -52,7 +54,6 @@ import tachiyomi.domain.chapter.interactor.GetChapterByMangaId
 | 
			
		||||
import tachiyomi.domain.chapter.interactor.SetMangaDefaultChapterFlags
 | 
			
		||||
import tachiyomi.domain.library.service.LibraryPreferences
 | 
			
		||||
import tachiyomi.domain.manga.interactor.GetDuplicateLibraryManga
 | 
			
		||||
import tachiyomi.domain.manga.interactor.GetManga
 | 
			
		||||
import tachiyomi.domain.manga.interactor.NetworkToLocalManga
 | 
			
		||||
import tachiyomi.domain.manga.model.Manga
 | 
			
		||||
import tachiyomi.domain.manga.model.toMangaUpdate
 | 
			
		||||
@@ -72,7 +73,6 @@ class BrowseSourceScreenModel(
 | 
			
		||||
    private val libraryPreferences: LibraryPreferences = Injekt.get(),
 | 
			
		||||
    private val coverCache: CoverCache = Injekt.get(),
 | 
			
		||||
    private val getRemoteManga: GetRemoteManga = Injekt.get(),
 | 
			
		||||
    private val getManga: GetManga = Injekt.get(),
 | 
			
		||||
    private val getDuplicateLibraryManga: GetDuplicateLibraryManga = Injekt.get(),
 | 
			
		||||
    private val getCategories: GetCategories = Injekt.get(),
 | 
			
		||||
    private val getChapterByMangaId: GetChapterByMangaId = Injekt.get(),
 | 
			
		||||
@@ -122,11 +122,15 @@ class BrowseSourceScreenModel(
 | 
			
		||||
                getRemoteManga.subscribe(sourceId, listing.query ?: "", listing.filters)
 | 
			
		||||
            }.flow.map { pagingData ->
 | 
			
		||||
                pagingData
 | 
			
		||||
                    .map { withIOContext { networkToLocalManga.await(it.toDomainManga(sourceId)) } }
 | 
			
		||||
                    .filter { !sourcePreferences.hideInLibraryItems().get() || !it.favorite }
 | 
			
		||||
                    .map {
 | 
			
		||||
                        getManga.subscribe(it.url, it.source)
 | 
			
		||||
                        flow {
 | 
			
		||||
                            val localManga = withIOContext { networkToLocalManga.await(it.toDomainManga(sourceId)) }
 | 
			
		||||
                            emit(localManga)
 | 
			
		||||
                        }
 | 
			
		||||
                            .filterNotNull()
 | 
			
		||||
                            .filter {
 | 
			
		||||
                                !sourcePreferences.hideInLibraryItems().get() || !it.favorite
 | 
			
		||||
                            }
 | 
			
		||||
                            .onEach(::initializeManga)
 | 
			
		||||
                            .stateIn(coroutineScope)
 | 
			
		||||
                    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user