From 51d5efbc2b25c367e7b0a3897930143bdd11ec81 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Mon, 8 Jun 2026 13:20:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20dataStore=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/ui/config/PrefDelegate.kt | 11 ++--------- .../legado/app/ui/main/bookshelf/BookshelfScreen.kt | 9 ++++++--- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/config/PrefDelegate.kt b/app/src/main/java/io/legado/app/ui/config/PrefDelegate.kt index 6f927dea1..7c2812c66 100644 --- a/app/src/main/java/io/legado/app/ui/config/PrefDelegate.kt +++ b/app/src/main/java/io/legado/app/ui/config/PrefDelegate.kt @@ -59,7 +59,6 @@ fun prefDelegate( // 从 DataStore 读取初始值(DS 为唯一读取源) scope.launch { val dsValue = readFromDs() - android.util.Log.d("PrefDelegate", "readFromDs key=$key defaultValue=$defaultValue dsValue=$dsValue") if (dsValue != null) { _value.value = dsValue } @@ -128,7 +127,7 @@ fun prefDelegate( } // 同步写入 DataStore,确保持久化后再返回 // 异常不阻断流程:SP 已写入,readFromDs() 会回退到 SP 读取 - val dsResult = runCatching { + runCatching { runBlocking(Dispatchers.IO) { when (value) { is String? -> DsSync.putString(key, value) @@ -139,7 +138,6 @@ fun prefDelegate( } } } - android.util.Log.d("PrefDelegate", "setValue key=$key value=$value dsResult=${dsResult.isSuccess}") onValueChange?.invoke(value) } } @@ -177,12 +175,8 @@ fun prefDelegate( null } // DS 有值,直接返回 - if (dsValue != null) { - android.util.Log.d("PrefDelegate", "readFromDs key=$key DS hit=$dsValue") - return dsValue - } + if (dsValue != null) return dsValue // DS 无值,回退到 SP(迁移遗漏时的补偿) - android.util.Log.d("PrefDelegate", "readFromDs key=$key DS miss, falling back to SP") val spValue: T? = when { defaultValue is String || defaultValue == null -> appCtx.getPrefString(key, defaultValue as String?) as T? @@ -208,7 +202,6 @@ fun prefDelegate( } } } - android.util.Log.d("PrefDelegate", "readFromDs key=$key SP fallback=$spValue (defaultValue=$defaultValue)") return spValue } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt index 0c5b10c38..76f2a9d38 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt @@ -846,9 +846,12 @@ fun BookshelfScreen( val group = uiState.groups.getOrNull(pageIndex) if (group != null) { val isSelectedGroup = group.groupId == uiState.selectedGroupId - val books = if (isSelectedGroup) uiState.items - else uiState.allGroupBooks[group.groupId] - ?: persistentListOf() + val books = if (isSelectedGroup && uiState.isSearch) { + uiState.items + } else { + uiState.allGroupBooks[group.groupId] + ?: persistentListOf() + } val canReorderBooks = isEditMode && !uiState.isSearch && (group.bookSort.takeIf { it >= 0 }