From d48b4c330a42bd07b2ca78c610ab5b34f320d641 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sun, 25 Aug 2024 19:25:55 +0700 Subject: [PATCH] fix(manga/details): NPE on tablets --- CHANGELOG.md | 12 +------- .../ui/manga/MangaDetailsPresenter.kt | 28 ++++++++++++------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 667cda5010..b70400cae5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,14 +10,4 @@ ## Other ?? Technical stuff, what happened behind the scene --> ## Fixes -- Fixed crashes caused by certain extension implementation -- Fixed "Theme buttons based on cover" doesn't work properly -- Fixed library cover images looks blurry then become sharp after going to - entry's detail screen - -## Other -- More StorIO to SQLDelight migration effort -- Update dependency dev.chrisbanes.compose:compose-bom to v2024.08.00-alpha02 -- Update kotlin monorepo to v2.0.20 -- Update aboutlibraries to v11.2.3 -- Remove dependency com.github.leandroBorgesFerreira:LoadingButtonAndroid +- Fixed NPE crash on tablets diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt index 6cca6ce044..a0da5fe577 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt @@ -147,6 +147,19 @@ class MangaDetailsPresenter( val headerItem: MangaHeaderItem by lazy { MangaHeaderItem(mangaId, view?.fromCatalogue == true)} var tabletChapterHeaderItem: MangaHeaderItem? = null + get() { + when (view?.isTablet) { + true -> if (field == null) { + field = MangaHeaderItem(mangaId, false).apply { + isChapterHeader = true + } + } + else -> if (field != null) { + field = null + } + } + return field + } private set var allChapterScanlators: Set = emptySet() @@ -160,11 +173,6 @@ class MangaDetailsPresenter( downloadManager.addListener(this) - LibraryUpdateJob.updateFlow - .filter { it == mangaId } - .onEach { onUpdateManga() } - .launchIn(presenterScope) - tracks = db.getTracks(manga).executeAsBlocking() } @@ -174,6 +182,11 @@ class MangaDetailsPresenter( fun onCreateLate() { val controller = view ?: return + LibraryUpdateJob.updateFlow + .filter { it == mangaId } + .onEach { onUpdateManga() } + .launchIn(presenterScope) + if (manga.isLocal()) { refreshAll() } else if (!manga.initialized) { @@ -220,11 +233,6 @@ class MangaDetailsPresenter( isTablet = view?.isTablet == true isLocked = isLockedFromSearch } - if (view?.isTablet == true) { - tabletChapterHeaderItem = MangaHeaderItem(mangaId, false).apply { - isChapterHeader = true - } - } } suspend fun getChaptersNow(): List {