mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Avoid infinite loading in global search if a single catalogue fails (#2097)
This commit is contained in:
		@@ -10,6 +10,7 @@ import eu.kanade.tachiyomi.source.CatalogueSource
 | 
			
		||||
import eu.kanade.tachiyomi.source.Source
 | 
			
		||||
import eu.kanade.tachiyomi.source.SourceManager
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.FilterList
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.MangasPage
 | 
			
		||||
import eu.kanade.tachiyomi.source.model.SManga
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.LoginSource
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
 | 
			
		||||
@@ -157,9 +158,9 @@ open class CatalogueSearchPresenter(
 | 
			
		||||
        fetchSourcesSubscription?.unsubscribe()
 | 
			
		||||
        fetchSourcesSubscription = Observable.from(sources)
 | 
			
		||||
                .flatMap({ source ->
 | 
			
		||||
                    source.fetchSearchManga(1, query, FilterList())
 | 
			
		||||
                    Observable.defer { source.fetchSearchManga(1, query, FilterList()) }
 | 
			
		||||
                            .subscribeOn(Schedulers.io())
 | 
			
		||||
                            .onExceptionResumeNext(Observable.empty()) // Ignore timeouts.
 | 
			
		||||
                            .onErrorReturn { MangasPage(emptyList(), false) } // Ignore timeouts or other exceptions
 | 
			
		||||
                            .map { it.mangas.take(10) } // Get at most 10 manga from search result.
 | 
			
		||||
                            .map { it.map { networkToLocalManga(it, source.id) } } // Convert to local manga.
 | 
			
		||||
                            .doOnNext { fetchImage(it, source) } // Load manga covers.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user