瀏覽代碼

修正 RSS 日夜切换调试语义

5151561 3 月之前
父節點
當前提交
637b72d7cd

+ 10 - 8
app/src/debug/java/io/legado/app/debug/DebugStateProvider.kt

@@ -6,9 +6,10 @@ import android.database.Cursor
 import android.net.Uri
 import android.os.Bundle
 import android.util.Base64
-import io.legado.app.constant.PreferKey
-import io.legado.app.help.config.AppConfigStore
+import io.legado.app.domain.gateway.AppShellSettingsGateway
+import kotlinx.coroutines.runBlocking
 import org.json.JSONObject
+import org.koin.core.context.GlobalContext
 
 class DebugStateProvider : ContentProvider() {
 
@@ -16,7 +17,7 @@ class DebugStateProvider : ContentProvider() {
 
     override fun call(method: String, arg: String?, extras: Bundle?): Bundle = Bundle().apply {
         val json = when (method) {
-            METHOD_TOGGLE_THEME -> toggleTheme()
+            METHOD_TOGGLE_READER_DAY_NIGHT -> toggleReaderDayNight()
             else -> error("unsupported method: $method")
         }
         putString(
@@ -25,10 +26,11 @@ class DebugStateProvider : ContentProvider() {
         )
     }
 
-    private fun toggleTheme(): JSONObject {
-        val current = AppConfigStore.getString(PreferKey.themeMode) ?: "1"
-        AppConfigStore.putString(PreferKey.themeMode, if (current == "2") "1" else "2")
-        return JSONObject().put("themeMode", AppConfigStore.getString(PreferKey.themeMode).orEmpty())
+    private fun toggleReaderDayNight(): JSONObject = runBlocking {
+        val gateway = GlobalContext.get().get<AppShellSettingsGateway>()
+        val current = gateway.currentSettings.themeMode
+        gateway.update { it.copy(themeMode = if (current == "2") "1" else "2") }
+        JSONObject().put("themeMode", gateway.currentSettings.themeMode)
     }
 
     override fun query(
@@ -50,7 +52,7 @@ class DebugStateProvider : ContentProvider() {
     ): Int = 0
 
     private companion object {
-        const val METHOD_TOGGLE_THEME = "toggleTheme"
+        const val METHOD_TOGGLE_READER_DAY_NIGHT = "toggleReaderDayNight"
         const val RESULT_BASE64 = "resultB64"
     }
 

+ 1 - 1
tools/android/README.md

@@ -111,7 +111,7 @@ tools/android/debug.sh run bookshelf/miuix-hidden-statusbar
 
 `DebugStateProvider` 仅打进 debug APK,由 runner 通过 `content call` 读取机器可断言状态:
 
-- `toggleTheme`:在目标页面保持打开时切换应用日夜设置。
+- `toggleReaderDayNight`:通过生产设置网关复现阅读页快捷日夜按钮的主题切换。
 
 这些准备动作均在 debug 包中完成,不进入 release 包。
 

+ 1 - 1
tools/android/runner.py

@@ -1407,7 +1407,7 @@ class ToggleRssDayNight(Action):
         if not ctx.records.get("rss_read_ready"):
             return
         before_pid = application_pid(ctx.device)
-        debug_state(ctx.device, "toggleTheme")
+        debug_state(ctx.device, "toggleReaderDayNight")
         ctx.action_count += 1
         time.sleep(1.5)
         after_pid = application_pid(ctx.device)

+ 4 - 1
tools/android/tests/test_runner.py

@@ -260,7 +260,10 @@ class ReaderContentTest(unittest.TestCase):
     def test_decodes_debug_state_provider_response(self, adb):
         payload = base64.b64encode(json.dumps({"themeMode": "2"}).encode()).decode()
         adb.return_value = subprocess.CompletedProcess([], 0, f"Result: Bundle[{{resultB64={payload}}}]\n")
-        self.assertEqual({"themeMode": "2"}, runner.debug_state("device", "toggleTheme"))
+        self.assertEqual(
+            {"themeMode": "2"},
+            runner.debug_state("device", "toggleReaderDayNight"),
+        )
 
     def test_extracts_reader_pages_from_logcat(self):
         logcat = (