diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityComponents.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityComponents.kt index ede75b0994..745956f3e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityComponents.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainActivityComponents.kt @@ -64,7 +64,9 @@ fun rememberMainNavigationDetailLocation( onWillFocusPrimary: suspend () -> Unit = {} ): State { val state = rememberSaveable( - stateSaver = MainNavigationDetailLocation.Saver() + stateSaver = MainNavigationDetailLocation.Saver( + mainNavigationViewModel.earlyNavigationDetailLocationRequested + ) ) { mutableStateOf(mainNavigationViewModel.earlyNavigationDetailLocationRequested ?: MainNavigationDetailLocation.Empty) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationDetailLocation.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationDetailLocation.kt index ac7b8e8f63..2ac98638b3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationDetailLocation.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainNavigationDetailLocation.kt @@ -24,13 +24,15 @@ import org.thoughtcrime.securesms.service.webrtc.links.CallLinkRoomId @Parcelize sealed class MainNavigationDetailLocation : Parcelable { - class Saver : androidx.compose.runtime.saveable.Saver { + class Saver( + val earlyLocation: MainNavigationDetailLocation? + ) : androidx.compose.runtime.saveable.Saver { override fun SaverScope.save(value: MainNavigationDetailLocation): String? { return Json.encodeToString(value) } override fun restore(value: String): MainNavigationDetailLocation? { - return Json.decodeFromString(value) + return earlyLocation ?: Json.decodeFromString(value) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/VerticalInsets.kt b/app/src/main/java/org/thoughtcrime/securesms/main/VerticalInsets.kt index 9eadcc896b..adf2ee4af5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/VerticalInsets.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/VerticalInsets.kt @@ -5,6 +5,7 @@ package org.thoughtcrime.securesms.main +import android.os.Parcelable import androidx.annotation.Px import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets @@ -15,14 +16,17 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.Density +import kotlinx.parcelize.Parcelize import org.thoughtcrime.securesms.window.WindowSizeClass +@Parcelize data class VerticalInsets( @param:Px val statusBar: Float, @param:Px val navBar: Float -) { +) : Parcelable { companion object { val Zero = VerticalInsets(0f, 0f) } @@ -39,7 +43,7 @@ fun rememberVerticalInsets(): State { val windowSizeClass = WindowSizeClass.rememberWindowSizeClass() - val insets = remember { mutableStateOf(VerticalInsets.Zero) } + val insets = rememberSaveable { mutableStateOf(VerticalInsets.Zero) } val updated = remember(statusBarInsets, navigationBarInsets, windowSizeClass) { insets.value = if (windowSizeClass.isSplitPane()) { VerticalInsets.Zero