From 37a4e2d72d0026e9f400827cee58e7f79785af55 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Thu, 16 Mar 2023 18:23:20 -0400 Subject: [PATCH] Retry a few times if library or updates crash (cherry picked from commit 5abab75d268a756c4eee2f7aa66f83ff46de447f) --- .../domain/manga/interactor/GetLibraryManga.kt | 12 ++++++++++++ .../domain/updates/interactor/GetUpdates.kt | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/app/src/main/java/eu/kanade/domain/manga/interactor/GetLibraryManga.kt b/app/src/main/java/eu/kanade/domain/manga/interactor/GetLibraryManga.kt index c3053ef7e..6541f9da1 100644 --- a/app/src/main/java/eu/kanade/domain/manga/interactor/GetLibraryManga.kt +++ b/app/src/main/java/eu/kanade/domain/manga/interactor/GetLibraryManga.kt @@ -1,6 +1,8 @@ package eu.kanade.domain.manga.interactor import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.retry import tachiyomi.domain.library.model.LibraryManga import tachiyomi.domain.manga.repository.MangaRepository @@ -14,5 +16,15 @@ class GetLibraryManga( fun subscribe(): Flow> { return mangaRepository.getLibraryMangaAsFlow() + // SY --> + .let { + var retries = 0 + it.retry { + (retries++ < 3) && it is NullPointerException + }.onEach { + retries = 0 + } + } + // SY <-- } } diff --git a/domain/src/main/java/tachiyomi/domain/updates/interactor/GetUpdates.kt b/domain/src/main/java/tachiyomi/domain/updates/interactor/GetUpdates.kt index 3412250dc..b0f048bd9 100644 --- a/domain/src/main/java/tachiyomi/domain/updates/interactor/GetUpdates.kt +++ b/domain/src/main/java/tachiyomi/domain/updates/interactor/GetUpdates.kt @@ -1,6 +1,8 @@ package tachiyomi.domain.updates.interactor import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.retry import tachiyomi.domain.updates.model.UpdatesWithRelations import tachiyomi.domain.updates.repository.UpdatesRepository import java.util.Calendar @@ -13,5 +15,15 @@ class GetUpdates( fun subscribe(after: Long): Flow> { return repository.subscribeAll(after) + // SY --> + .let { + var retries = 0 + it.retry { + (retries++ < 3) && it is NullPointerException + }.onEach { + retries = 0 + } + } + // SY <-- } }