From 2274e901a1fb7fafbb5fdc2c624f6fa2980f9696 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sat, 13 Dec 2025 00:49:57 +0600 Subject: [PATCH] Fix reader not saving read duration when changing chapter (mihonapp/mihon#2784) (cherry picked from commit 2e0786f699cc6d4863eb20331739c8325a451e63) --- .../tachiyomi/ui/reader/ReaderActivity.kt | 4 ++- .../tachiyomi/ui/reader/ReaderViewModel.kt | 26 +++++++------------ 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index efeb3b4bf..6fdf48dd6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -323,7 +323,9 @@ class ReaderActivity : BaseActivity() { } override fun onPause() { - viewModel.flushReadTimer() + lifecycleScope.launchNonCancellable { + viewModel.updateHistory() + } // AM (DISCORD) --> updateDiscordRPC(exitingReader = true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt index 5bf35dd55..9c9a12a6e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt @@ -571,7 +571,7 @@ class ReaderViewModel @JvmOverloads constructor( viewModelScope.launchIO { logcat { "Loading ${chapter.chapter.url}" } - flushReadTimer() + updateHistory() restartReadTimer() try { @@ -879,26 +879,20 @@ class ReaderViewModel @JvmOverloads constructor( chapterReadStartTime = Instant.now().toEpochMilli() } - fun flushReadTimer() { - getCurrentChapter()?.let { - viewModelScope.launchNonCancellable { - updateHistory(it) - } - } - } - /** * Saves the chapter last read history if incognito mode isn't on. */ - private suspend fun updateHistory(readerChapter: ReaderChapter) { - if (incognitoMode) return + suspend fun updateHistory() { + getCurrentChapter()?.let { readerChapter -> + if (incognitoMode) return@let - val chapterId = readerChapter.chapter.id!! - val endTime = Date() - val sessionReadDuration = chapterReadStartTime?.let { endTime.time - it } ?: 0 + val chapterId = readerChapter.chapter.id!! + val endTime = Date() + val sessionReadDuration = chapterReadStartTime?.let { endTime.time - it } ?: 0 - upsertHistory.await(HistoryUpdate(chapterId, endTime, sessionReadDuration)) - chapterReadStartTime = null + upsertHistory.await(HistoryUpdate(chapterId, endTime, sessionReadDuration)) + chapterReadStartTime = null + } } /**