From 86defec57c98348662f92e914876a7c15a34052c Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sun, 6 Sep 2020 16:25:30 -0400 Subject: [PATCH] Fix latest + browse page crash when source returns null --- .../ui/browse/source/index/IndexPresenter.kt | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt index 226f5178c..308cc227c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt @@ -16,10 +16,12 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourcePresenter.Companion.toItems import exh.EXHSavedSearch +import exh.util.asFlow import java.lang.RuntimeException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.singleOrNull import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import rx.Observable @@ -105,12 +107,17 @@ open class IndexPresenter( }) } if (source.supportsLatest) { - val results = source.fetchLatestUpdates(1) - .toBlocking() - .single() - .mangas - .take(10) - .map { networkToLocalManga(it, source.id) } + val results = try { + source.fetchLatestUpdates(1) + .asFlow() + .singleOrNull() + ?.mangas + ?.take(10) + ?.map { networkToLocalManga(it, source.id) } + ?: emptyList() + } catch (e: Exception) { + emptyList() + } fetchImage(results, true) withContext(Dispatchers.Main) { @@ -128,12 +135,17 @@ open class IndexPresenter( }) } - val results = source.fetchPopularManga(1) - .toBlocking() - .single() - .mangas - .take(10) - .map { networkToLocalManga(it, source.id) } + val results = try { + source.fetchPopularManga(1) + .asFlow() + .singleOrNull() + ?.mangas + ?.take(10) + ?.map { networkToLocalManga(it, source.id) } + ?: emptyList() + } catch (e: Exception) { + emptyList() + } fetchImage(results, false) withContext(Dispatchers.Main) {