From 4f9bfe13cb1e80b66dd2c03fd66739095427abbe Mon Sep 17 00:00:00 2001 From: GG Bond Date: Fri, 10 May 2024 15:57:43 +0800 Subject: [PATCH] Move SearchCategory to use `rememberInDataStore` --- app/src/main/kotlin/com/hippo/ehviewer/Settings.kt | 2 -- .../com/hippo/ehviewer/ui/screen/GalleryListScreen.kt | 8 +++----- .../com/hippo/ehviewer/ui/tools/RememberGlobally.kt | 4 ++-- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt index e3cc31623..70e8eba54 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/Settings.kt @@ -10,7 +10,6 @@ import androidx.compose.runtime.State import androidx.compose.runtime.collectAsState import androidx.compose.runtime.remember import com.hippo.ehviewer.client.CHROME_USER_AGENT -import com.hippo.ehviewer.client.EhUtils import com.hippo.ehviewer.client.data.FavListUrlBuilder import com.hippo.ehviewer.download.DownloadsFilterMode import com.hippo.ehviewer.download.SortMode @@ -162,7 +161,6 @@ object Settings : DataStorePreferences(null) { var defaultFavSlot by intPref("default_favorite_slot", -2) var securityDelay by intPref("require_unlock_delay", 0) var clipboardTextHashCode by intPref("clipboard_text_hash_code", 0) - var searchCategory by intPref("search_pref", EhUtils.ALL_CATEGORY) var requestNewsTime by intPref("request_news_time", 0).observed { updateWhenRequestNewsChanges() } var updateIntervalDays by intPref("update_interval_days", 7) var lastDawnDays by intPref("last_dawn_days", 0) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt index 035756ea0..2ecc7c993 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryListScreen.kt @@ -128,6 +128,7 @@ import com.hippo.ehviewer.ui.tools.animateFloatMergePredictiveBackAsState import com.hippo.ehviewer.ui.tools.delegateSnapshotUpdate import com.hippo.ehviewer.ui.tools.foldToLoadResult import com.hippo.ehviewer.ui.tools.rememberHapticFeedback +import com.hippo.ehviewer.ui.tools.rememberInDataStore import com.hippo.ehviewer.ui.tools.rememberInVM import com.hippo.ehviewer.ui.tools.snackBarPadding import com.hippo.ehviewer.util.FavouriteStatusRouter @@ -174,7 +175,7 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) = c var searchBarOffsetY by remember { mutableIntStateOf(0) } var showSearchLayout by rememberSaveable { mutableStateOf(false) } - var category by rememberSaveable { mutableIntStateOf(Settings.searchCategory) } + var category by rememberInDataStore("SearchCategory") { mutableIntStateOf(EhUtils.ALL_CATEGORY) } var searchMethod by rememberSaveable { mutableIntStateOf(1) } var advancedSearchOption by rememberSaveable { mutableStateOf(AdvancedSearchOption()) } var imageUri by rememberSaveable { mutableStateOf(null) } @@ -571,10 +572,7 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) = c filter = { SearchFilter( category = category, - onCategoryChanged = { - Settings.searchCategory = it - category = it - }, + onCategoryChanged = { category = it }, advancedOption = advancedSearchOption, onAdvancedOptionChanged = { advancedSearchOption = it }, ) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt index bc15773c8..93a7eae3d 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/RememberGlobally.kt @@ -32,7 +32,7 @@ import kotlinx.serialization.encodeToByteArray import splitties.init.appCtx val dataStoreScope = CoroutineScope(Dispatchers.IO + SupervisorJob()) -val dataStore = PreferenceDataStoreFactory.create { appCtx.dataStoreFile("Remembered") } +val dataStore = PreferenceDataStoreFactory.create { appCtx.dataStoreFile("Remembered.preferences_pb") } val dataStateFlow = dataStore.data.stateIn(dataStoreScope, SharingStarted.Eagerly, emptyPreferences()) class StateMapViewModel : ViewModel() { @@ -59,7 +59,7 @@ inline fun rememberInVM( } @Composable -inline fun > rememberInDataStore( +inline fun rememberInDataStore( key: String, crossinline defaultValue: @DisallowComposableCalls () -> MutableState, ) = with(dataStateFlow) {