From 563bc02113a5ebc53650fdfdd13f408284a0cdc8 Mon Sep 17 00:00:00 2001 From: FlaminSarge Date: Thu, 6 Mar 2025 01:51:09 -0800 Subject: [PATCH] Attempt to fix crash when migrating or removing entries from library (#1828) Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com> --- CHANGELOG.md | 1 + .../ui/browse/migration/search/MigrateDialog.kt | 2 +- .../domain/manga/interactor/GetLibraryManga.kt | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e4c26392..38d8d1845 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co - Fix backup/restore of category related preferences ([@cuong-tran](https://github.com/cuong-tran)) ([#1726](https://github.com/mihonapp/mihon/pull/1726)) - Fix WebView sending app's package name in `X-Requested-With` header, which led to sources blocking access ([@AwkwardPeak7](https://github.com/AwkwardPeak7)) ([#1812](https://github.com/mihonapp/mihon/pull/1812)) - Fix an issue where tracker reading progress is changed to a lower value ([@Animeboynz](https://github.com/Animeboynz)) ([#1795](https://github.com/mihonapp/mihon/pull/1795)) +- Attempt to fix crash when migrating or removing entries from library ([@FlaminSarge](https://github.com/FlaminSarge)) ([#1828](https://github.com/mihonapp/mihon/pull/1828)) ### Removed - Remove alphabetical category sort option diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt index d3b35bcf4..3a2369d35 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt @@ -284,7 +284,7 @@ internal class MigrateDialogScreenModel( } if (replace) { - updateManga.await(MangaUpdate(oldManga.id, favorite = false, dateAdded = 0)) + updateManga.awaitUpdateFavorite(oldManga.id, favorite = false) } // Update custom cover (recheck if custom cover exists) 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..58ef64110 100644 --- a/domain/src/main/java/tachiyomi/domain/manga/interactor/GetLibraryManga.kt +++ b/domain/src/main/java/tachiyomi/domain/manga/interactor/GetLibraryManga.kt @@ -1,8 +1,14 @@ package tachiyomi.domain.manga.interactor +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.retry +import logcat.LogPriority +import tachiyomi.core.common.util.system.logcat import tachiyomi.domain.library.model.LibraryManga import tachiyomi.domain.manga.repository.MangaRepository +import kotlin.time.Duration.Companion.seconds class GetLibraryManga( private val mangaRepository: MangaRepository, @@ -14,5 +20,15 @@ class GetLibraryManga( fun subscribe(): Flow> { return mangaRepository.getLibraryMangaAsFlow() + .retry { + if (it is NullPointerException) { + delay(0.5.seconds) + true + } else { + false + } + }.catch { + this@GetLibraryManga.logcat(LogPriority.ERROR, it) + } } }