Explorar o código

refactor(Track B): B1 拆分 CallBack — 渲染子集 ReaderRenderCallback

把 ReadBook.CallBack 切成两层:
- ReaderRenderCallback(渲染子集:upContent/upContentAwait/pageChanged/
  contentLoadFinish/upPageAnim/cancelSelect + LayoutProgressListener)
- CallBack 组合渲染子集并追加状态子集(upMenuView/loadChapterList/
  notifyBookChanged/sureNewProgress)

迁移期 CallBack : ReaderRenderCallback,单一 callBack 槽位与实现者
(ReadBookViewModel)行为完全不变。B2 将把渲染子集拆到独立槽位、
由 UI 层渲染控制器承接。

编译 + verifyConfigArchitecture 全绿,零行为漂移。
5151561 hai 3 meses
pai
achega
706e224898
Modificáronse 1 ficheiros con 20 adicións e 7 borrados
  1. 20 7
      app/src/main/java/io/legado/app/model/ReadBook.kt

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

@@ -1720,11 +1720,11 @@ object ReadBook : CoroutineScope by MainScope(), KoinComponent {
         }
     }
 
-    interface CallBack : LayoutProgressListener {
-        fun upMenuView()
-
-        fun loadChapterList(book: Book)
-
+    /**
+     * 渲染子集回调(Track B):指令式渲染协议——重绘、分页、动画、选择取消、
+     * 排版进度。**只应由 UI 层的渲染控制器实现**,不得穿过 ViewModel/业务层。
+     */
+    interface ReaderRenderCallback : LayoutProgressListener {
         fun upContent(
             relativePosition: Int = 0,
             resetPageOffset: Boolean = true,
@@ -1743,11 +1743,24 @@ object ReadBook : CoroutineScope by MainScope(), KoinComponent {
 
         fun upPageAnim(upRecorder: Boolean = false)
 
+        fun cancelSelect()
+    }
+
+    /**
+     * 业务/UI 状态回调子集:菜单刷新、目录加载、换书通知、进度确认。
+     *
+     * 迁移期仍**组合**渲染子集(`: ReaderRenderCallback`),使单一 `callBack`
+     * 槽位行为不变;Track B2 会把渲染子集拆到独立槽位、由渲染控制器承接,
+     * 届时本接口收敛为纯状态子集。
+     */
+    interface CallBack : ReaderRenderCallback {
+        fun upMenuView()
+
+        fun loadChapterList(book: Book)
+
         fun notifyBookChanged()
 
         fun sureNewProgress(progress: BookProgress)
-
-        fun cancelSelect()
     }
 
 }