From a6bd0bbd2a88e8410493e41e3e1e097ecd278af6 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 (#2784) (cherry picked from commit 2e0786f699cc6d4863eb20331739c8325a451e63) # Conflicts: # CHANGELOG.md --- .../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 d33792319..8e90f20b7 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 @@ -467,7 +467,9 @@ class ReaderActivity : BaseActivity() { } override fun onPause() { - viewModel.flushReadTimer() + lifecycleScope.launchNonCancellable { + viewModel.updateHistory() + } super.onPause() } 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 6008118b2..be1ef2fc0 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 @@ -487,7 +487,7 @@ class ReaderViewModel @JvmOverloads constructor( viewModelScope.launchIO { logcat { "Loading ${chapter.chapter.url}" } - flushReadTimer() + updateHistory() restartReadTimer() try { @@ -784,26 +784,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 + } } /**