diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt index 194baa01a..63ba50d41 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/DownloadsScreen.kt @@ -64,7 +64,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.saveable.rememberSerializable import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment @@ -119,6 +118,7 @@ import com.hippo.ehviewer.ui.tools.awaitSelectItemWithCheckBox import com.hippo.ehviewer.ui.tools.awaitSingleChoice import com.hippo.ehviewer.ui.tools.rememberHapticFeedback import com.hippo.ehviewer.ui.tools.rememberInVM +import com.hippo.ehviewer.ui.tools.rememberSerializable import com.hippo.ehviewer.ui.tools.thenIf import com.hippo.ehviewer.util.mapToLongArray import com.hippo.ehviewer.util.takeAndClear diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/State.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/State.kt index aacfbef6e..c83a56697 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/State.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/State.kt @@ -5,8 +5,12 @@ import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.savedstate.serialization.SavedStateConfiguration import kotlin.reflect.KMutableProperty0 +import kotlinx.serialization.KSerializer +import kotlinx.serialization.serializer val KMutableProperty0.observed: MutableState @Composable @@ -29,3 +33,11 @@ val MutableState.rememberedAccessor: KMutableProperty0 var value by this@rememberedAccessor }::value } + +@Composable +inline fun rememberSerializable( + vararg inputs: Any?, + stateSerializer: KSerializer = serializer(), + configuration: SavedStateConfiguration = SavedStateConfiguration.DEFAULT, + noinline init: () -> MutableState, +) = rememberSaveable(inputs = inputs, stateSerializer, configuration, init) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9795b6d4f..49857c819 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,7 +16,7 @@ androidx-room = "2.7.2" androidx-work = "2.10.2" arrow = "2.1.2" coil = "3.2.0" -compose-bom = "2025.06.01" +compose-bom = "2025.06.00" compose-destinations = "2.2.0" kotlin = "2.2.0" kotlinx-coroutines = "1.10.2"