From 5abab75d268a756c4eee2f7aa66f83ff46de447f 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 --- .../domain/manga/interactor/GetLibraryManga.kt | 12 ++++++++++++ .../domain/updates/interactor/GetUpdates.kt | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/domain/src/main/java/tachiyomi/domain/manga/interactor/GetLibraryManga.kt b/domain/src/main/java/tachiyomi/domain/manga/interactor/GetLibraryManga.kt index bcafbafad..9efba1be6 100644 --- a/domain/src/main/java/tachiyomi/domain/manga/interactor/GetLibraryManga.kt +++ b/domain/src/main/java/tachiyomi/domain/manga/interactor/GetLibraryManga.kt @@ -1,6 +1,8 @@ package tachiyomi.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 988b860c9..e6b364886 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 @@ -17,6 +19,16 @@ 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 <-- } fun subscribe(read: Boolean, after: Long): Flow> {