Browse Source

Avoid infinite loading in global search if a single catalogue fails (#2097)

Eugene 5 years ago
parent
commit
62f9071adc

+ 3 - 2
app/src/main/java/eu/kanade/tachiyomi/ui/catalogue/global_search/CatalogueSearchPresenter.kt

@@ -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.