mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 13:08:46 +00:00
Persist stored vertical insets between activity restarts.
This commit is contained in:
committed by
Greyson Parrelli
parent
12cb74bc05
commit
e4fd7a6aee
@@ -64,7 +64,9 @@ fun rememberMainNavigationDetailLocation(
|
||||
onWillFocusPrimary: suspend () -> Unit = {}
|
||||
): State<MainNavigationDetailLocation> {
|
||||
val state = rememberSaveable(
|
||||
stateSaver = MainNavigationDetailLocation.Saver()
|
||||
stateSaver = MainNavigationDetailLocation.Saver(
|
||||
mainNavigationViewModel.earlyNavigationDetailLocationRequested
|
||||
)
|
||||
) {
|
||||
mutableStateOf(mainNavigationViewModel.earlyNavigationDetailLocationRequested ?: MainNavigationDetailLocation.Empty)
|
||||
}
|
||||
|
||||
@@ -24,13 +24,15 @@ import org.thoughtcrime.securesms.service.webrtc.links.CallLinkRoomId
|
||||
@Parcelize
|
||||
sealed class MainNavigationDetailLocation : Parcelable {
|
||||
|
||||
class Saver : androidx.compose.runtime.saveable.Saver<MainNavigationDetailLocation, String> {
|
||||
class Saver(
|
||||
val earlyLocation: MainNavigationDetailLocation?
|
||||
) : androidx.compose.runtime.saveable.Saver<MainNavigationDetailLocation, String> {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<VerticalInsets> {
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user