Horis 2 лет назад
Родитель
Сommit
773c07cde2

+ 7 - 4
app/src/main/java/io/legado/app/model/ReadBook.kt

@@ -217,7 +217,8 @@ object ReadBook : CoroutineScope by MainScope() {
     fun syncProgress(
         newProgressAction: ((progress: BookProgress) -> Unit)? = null,
         uploadSuccessAction: (() -> Unit)? = null,
-        syncSuccessAction: (() -> Unit)? = null) {
+        syncSuccessAction: (() -> Unit)? = null
+    ) {
         if (!AppConfig.syncBookProgress) return
         book?.let {
             Coroutine.async {
@@ -227,14 +228,16 @@ object ReadBook : CoroutineScope by MainScope() {
             }.onSuccess { progress ->
                 if (progress == null || progress.durChapterIndex < it.durChapterIndex ||
                     (progress.durChapterIndex == it.durChapterIndex
-                            && progress.durChapterPos < it.durChapterPos)) {
+                            && progress.durChapterPos < it.durChapterPos)
+                ) {
                     // 服务器没有进度或者进度比服务器快,上传现有进度
                     Coroutine.async {
                         AppWebDav.uploadBookProgress(BookProgress(it), uploadSuccessAction)
-                        it.save()
+                        it.update()
                     }
                 } else if (progress.durChapterIndex > it.durChapterIndex ||
-                    progress.durChapterPos > it.durChapterPos) {
+                    progress.durChapterPos > it.durChapterPos
+                ) {
                     // 进度比服务器慢,执行传入动作
                     newProgressAction?.invoke(progress)
                 } else {

+ 57 - 8
app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt

@@ -7,7 +7,13 @@ import android.content.res.Configuration
 import android.net.Uri
 import android.os.Bundle
 import android.os.Looper
-import android.view.*
+import android.view.Gravity
+import android.view.InputDevice
+import android.view.KeyEvent
+import android.view.Menu
+import android.view.MenuItem
+import android.view.MotionEvent
+import android.view.View
 import androidx.activity.addCallback
 import androidx.activity.result.contract.ActivityResultContracts
 import androidx.appcompat.app.AlertDialog
@@ -19,7 +25,12 @@ import androidx.lifecycle.lifecycleScope
 import com.jaredrummler.android.colorpicker.ColorPickerDialogListener
 import io.legado.app.BuildConfig
 import io.legado.app.R
-import io.legado.app.constant.*
+import io.legado.app.constant.AppConst
+import io.legado.app.constant.AppLog
+import io.legado.app.constant.BookType
+import io.legado.app.constant.EventBus
+import io.legado.app.constant.PreferKey
+import io.legado.app.constant.Status
 import io.legado.app.data.appDb
 import io.legado.app.data.entities.Book
 import io.legado.app.data.entities.BookChapter
@@ -29,7 +40,14 @@ import io.legado.app.exception.NoStackTraceException
 import io.legado.app.help.AppWebDav
 import io.legado.app.help.IntentData
 import io.legado.app.help.TTS
-import io.legado.app.help.book.*
+import io.legado.app.help.book.BookHelp
+import io.legado.app.help.book.ContentProcessor
+import io.legado.app.help.book.isAudio
+import io.legado.app.help.book.isEpub
+import io.legado.app.help.book.isLocal
+import io.legado.app.help.book.isLocalTxt
+import io.legado.app.help.book.isMobi
+import io.legado.app.help.book.removeType
 import io.legado.app.help.config.AppConfig
 import io.legado.app.help.config.ReadBookConfig
 import io.legado.app.help.config.ReadTipConfig
@@ -42,9 +60,9 @@ import io.legado.app.lib.theme.accentColor
 import io.legado.app.model.ReadAloud
 import io.legado.app.model.ReadBook
 import io.legado.app.model.analyzeRule.AnalyzeRule
-import io.legado.app.receiver.NetworkChangedListener
 import io.legado.app.model.localBook.EpubFile
 import io.legado.app.model.localBook.MobiFile
+import io.legado.app.receiver.NetworkChangedListener
 import io.legado.app.receiver.TimeBatteryReceiver
 import io.legado.app.service.BaseReadAloudService
 import io.legado.app.ui.about.AppLogDialog
@@ -53,7 +71,7 @@ import io.legado.app.ui.book.bookmark.BookmarkDialog
 import io.legado.app.ui.book.changesource.ChangeBookSourceDialog
 import io.legado.app.ui.book.changesource.ChangeChapterSourceDialog
 import io.legado.app.ui.book.info.BookInfoActivity
-import io.legado.app.ui.book.read.config.*
+import io.legado.app.ui.book.read.config.AutoReadDialog
 import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.BG_COLOR
 import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.TEXT_COLOR
 import io.legado.app.ui.book.read.config.MoreConfigDialog
@@ -80,10 +98,40 @@ import io.legado.app.ui.replace.ReplaceRuleActivity
 import io.legado.app.ui.replace.edit.ReplaceEditActivity
 import io.legado.app.ui.widget.PopupAction
 import io.legado.app.ui.widget.dialog.PhotoDialog
-import io.legado.app.utils.*
+import io.legado.app.utils.ACache
+import io.legado.app.utils.Debounce
+import io.legado.app.utils.LogUtils
+import io.legado.app.utils.NetworkUtils
+import io.legado.app.utils.StartActivityContract
+import io.legado.app.utils.applyOpenTint
+import io.legado.app.utils.buildMainHandler
+import io.legado.app.utils.getPrefBoolean
+import io.legado.app.utils.getPrefString
+import io.legado.app.utils.hexString
+import io.legado.app.utils.iconItemOnLongClick
+import io.legado.app.utils.invisible
+import io.legado.app.utils.isAbsUrl
+import io.legado.app.utils.isTrue
+import io.legado.app.utils.launch
+import io.legado.app.utils.navigationBarGravity
+import io.legado.app.utils.observeEvent
+import io.legado.app.utils.observeEventSticky
+import io.legado.app.utils.postEvent
+import io.legado.app.utils.showDialogFragment
+import io.legado.app.utils.showHelp
+import io.legado.app.utils.startActivity
+import io.legado.app.utils.sysScreenOffTime
+import io.legado.app.utils.throttle
+import io.legado.app.utils.toastOnUi
+import io.legado.app.utils.visible
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Dispatchers.Main
-import kotlinx.coroutines.*
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.Runnable
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.ensureActive
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
 
 /**
  * 阅读界面
@@ -297,7 +345,7 @@ class ReadBookActivity : BaseReadBookActivity(),
         networkChangedListener.onNetworkChanged = {
             // 当网络是可用状态且无需初始化时同步进度(初始化中已有同步进度逻辑)
             if (AppConfig.syncBookProgressPlus && NetworkUtils.isAvailable() && !justInitData) {
-                ReadBook.syncProgress({progress -> sureNewProgress(progress)}, null)
+                ReadBook.syncProgress({ progress -> sureNewProgress(progress) })
             }
         }
     }
@@ -782,6 +830,7 @@ class ReadBookActivity : BaseReadBookActivity(),
                 1 -> lifecycleScope.launch {
                     binding.readView.aloudStartSelect()
                 }
+
                 else -> speak(binding.readView.getSelectText())
             }
 

+ 1 - 1
app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt

@@ -126,7 +126,7 @@ class ReadBookViewModel(application: Application) : BaseViewModel(application) {
             ReadBook.chapterChanged = false
         } else if (!isSameBook || !BaseReadAloudService.isRun) {
             if (AppConfig.syncBookProgressPlus) {
-                ReadBook.syncProgress({ progress -> ReadBook.callBack?.sureNewProgress(progress) }, null)
+                ReadBook.syncProgress({ progress -> ReadBook.callBack?.sureNewProgress(progress) })
             } else {
                 syncBookProgress(book)
             }

+ 9 - 4
app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt

@@ -169,11 +169,15 @@ class ReadView(context: Context, attrs: AttributeSet) :
     @SuppressLint("ClickableViewAccessibility")
     override fun onTouchEvent(event: MotionEvent): Boolean {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-            val insets =
-                this.rootWindowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.mandatorySystemGestures())
+            val insets = this.rootWindowInsets.getInsetsIgnoringVisibility(
+                WindowInsets.Type.mandatorySystemGestures()
+            )
             val height = activity?.windowManager?.currentWindowMetrics?.bounds?.height()
             if (height != null) {
-                if (event.y > height.minus(insets.bottom) && event.action != MotionEvent.ACTION_UP && event.action != MotionEvent.ACTION_CANCEL) {
+                if (event.y > height.minus(insets.bottom)
+                    && event.action != MotionEvent.ACTION_UP
+                    && event.action != MotionEvent.ACTION_CANCEL
+                ) {
                     return true
                 }
             }
@@ -437,7 +441,8 @@ class ReadView(context: Context, attrs: AttributeSet) :
             9 -> callBack.changeReplaceRuleState()
             10 -> callBack.openChapterList()
             11 -> callBack.openSearchActivity(null)
-            12 -> ReadBook.syncProgress({progress -> callBack.sureNewProgress(progress)},
+            12 -> ReadBook.syncProgress(
+                { progress -> callBack.sureNewProgress(progress) },
                 { context.longToastOnUi(context.getString(R.string.upload_book_success)) },
                 { context.longToastOnUi(context.getString(R.string.sync_book_progress_success)) })
         }