From f1721adf3c336a99fa6eacb12bc19378d57a2c15 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Sun, 21 Jan 2024 09:10:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/model/ReadBook.kt | 19 ++++++++------- .../app/ui/book/info/BookInfoActivity.kt | 24 ++++++++++++++----- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/io/legado/app/model/ReadBook.kt b/app/src/main/java/io/legado/app/model/ReadBook.kt index d001eabb1..5faaf217b 100644 --- a/app/src/main/java/io/legado/app/model/ReadBook.kt +++ b/app/src/main/java/io/legado/app/model/ReadBook.kt @@ -155,13 +155,14 @@ object ReadBook : CoroutineScope by MainScope() { } fun upReadTime() { + if (!AppConfig.enableReadRecord) { + return + } Coroutine.async(executeContext = IO) { readRecord.readTime = readRecord.readTime + System.currentTimeMillis() - readStartTime readStartTime = System.currentTimeMillis() readRecord.lastRead = System.currentTimeMillis() - if (AppConfig.enableReadRecord) { - appDb.readRecordDao.insert(readRecord) - } + appDb.readRecordDao.insert(readRecord) } } @@ -180,7 +181,7 @@ object ReadBook : CoroutineScope by MainScope() { hasNextPage = true durChapterPos = nextPagePos callBack?.upContent() - saveRead() + saveRead(true) } } return hasNextPage @@ -194,7 +195,7 @@ object ReadBook : CoroutineScope by MainScope() { hasPrevPage = true durChapterPos = prevPagePos callBack?.upContent() - saveRead() + saveRead(true) } } return hasPrevPage @@ -259,12 +260,12 @@ object ReadBook : CoroutineScope by MainScope() { success?.invoke() } curPageChanged() - saveRead() + saveRead(true) } fun setPageIndex(index: Int) { durChapterPos = curTextChapter?.getReadLength(index) ?: index - saveRead() + saveRead(true) curPageChanged(true) } @@ -519,7 +520,7 @@ object ReadBook : CoroutineScope by MainScope() { saveRead() } - fun saveRead() { + fun saveRead(pageChanged: Boolean = false) { Coroutine.async(executeContext = IO) { val book = book ?: return@async book.lastCheckCount = 0 @@ -527,7 +528,7 @@ object ReadBook : CoroutineScope by MainScope() { val chapterChanged = book.durChapterIndex != durChapterIndex book.durChapterIndex = durChapterIndex book.durChapterPos = durChapterPos - if (chapterChanged) { + if (!pageChanged || chapterChanged) { appDb.bookChapterDao.getChapter(book.bookUrl, durChapterIndex)?.let { book.durChapterTitle = it.getDisplayTitle( ContentProcessor.get(book.name, book.origin).getTitleReplaceRules(), diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt index a0261ab72..285ddd918 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoActivity.kt @@ -21,7 +21,11 @@ import io.legado.app.data.entities.BookSource import io.legado.app.databinding.ActivityBookInfoBinding import io.legado.app.exception.NoStackTraceException import io.legado.app.help.AppWebDav -import io.legado.app.help.book.* +import io.legado.app.help.book.getRemoteUrl +import io.legado.app.help.book.isAudio +import io.legado.app.help.book.isLocal +import io.legado.app.help.book.isLocalTxt +import io.legado.app.help.book.isWebFile import io.legado.app.help.config.AppConfig import io.legado.app.help.config.LocalConfig import io.legado.app.lib.dialogs.alert @@ -47,8 +51,20 @@ import io.legado.app.ui.login.SourceLoginActivity import io.legado.app.ui.widget.dialog.PhotoDialog import io.legado.app.ui.widget.dialog.VariableDialog import io.legado.app.ui.widget.dialog.WaitDialog -import io.legado.app.utils.* +import io.legado.app.utils.ColorUtils +import io.legado.app.utils.GSON +import io.legado.app.utils.StartActivityContract +import io.legado.app.utils.dpToPx +import io.legado.app.utils.gone +import io.legado.app.utils.longToastOnUi +import io.legado.app.utils.openFileUri +import io.legado.app.utils.sendToClip +import io.legado.app.utils.shareWithQr +import io.legado.app.utils.showDialogFragment +import io.legado.app.utils.startActivity +import io.legado.app.utils.toastOnUi import io.legado.app.utils.viewbindingdelegate.viewBinding +import io.legado.app.utils.visible import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -70,10 +86,6 @@ class BookInfoActivity : chapterChanged = it.third appDb.bookDao.update(book) } - viewModel.chapterListData.value?.let { chapterList -> - binding.tvToc.text = - getString(R.string.toc_s, chapterList[book.durChapterIndex].title) - } startReadActivity(book) } }