fix(config): use `rememberSaveable` to retain state across configuration changes

closes #1193
pull/1157/merge
andrekir 2024-08-18 06:42:41 -03:00
rodzic 6d4b0b60f8
commit 160f02018f
22 zmienionych plików z 48 dodań i 51 usunięć

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -26,9 +26,7 @@ fun AmbientLightingConfigItemList(
onSaveClicked: (ModuleConfigProtos.ModuleConfig.AmbientLightingConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var ambientLightingInput by remember(ambientLightingConfig) {
mutableStateOf(ambientLightingConfig)
}
var ambientLightingInput by rememberSaveable { mutableStateOf(ambientLightingConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -27,7 +27,7 @@ fun AudioConfigItemList(
onSaveClicked: (AudioConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var audioInput by remember(audioConfig) { mutableStateOf(audioConfig) }
var audioInput by rememberSaveable { mutableStateOf(audioConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -27,7 +27,7 @@ fun BluetoothConfigItemList(
onSaveClicked: (BluetoothConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var bluetoothInput by remember(bluetoothConfig) { mutableStateOf(bluetoothConfig) }
var bluetoothInput by rememberSaveable { mutableStateOf(bluetoothConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -31,8 +31,8 @@ fun CannedMessageConfigItemList(
onSaveClicked: (messages: String, config: CannedMessageConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var messagesInput by remember { mutableStateOf(messages) }
var cannedMessageInput by remember { mutableStateOf(cannedMessageConfig) }
var messagesInput by rememberSaveable { mutableStateOf(messages) }
var cannedMessageInput by rememberSaveable { mutableStateOf(cannedMessageConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -33,7 +33,7 @@ import androidx.compose.material.icons.twotone.Close
import androidx.compose.runtime.Composable
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.compose.runtime.toMutableStateList
import androidx.compose.ui.Alignment
@ -153,7 +153,7 @@ fun ChannelSettingsItemList(
onPositiveClicked: (List<ChannelSettings>) -> Unit,
) {
val focusManager = LocalFocusManager.current
val settingsListInput = remember(settingsList) { settingsList.toMutableStateList() }
val settingsListInput = rememberSaveable { settingsList.toMutableStateList() }
val listState = rememberLazyListState()
val dragDropState = rememberDragDropState(listState, headerCount = 1) { fromIndex, toIndex ->
@ -165,7 +165,7 @@ fun ChannelSettingsItemList(
val isEditing: Boolean = settingsList.size != settingsListInput.size
|| settingsList.zip(settingsListInput).any { (item1, item2) -> item1 != item2 }
var showEditChannelDialog: Int? by remember { mutableStateOf(null) }
var showEditChannelDialog: Int? by rememberSaveable { mutableStateOf(null) }
if (showEditChannelDialog != null) {
val index = showEditChannelDialog ?: return

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -29,9 +29,7 @@ fun DetectionSensorConfigItemList(
onSaveClicked: (ModuleConfigProtos.ModuleConfig.DetectionSensorConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var detectionSensorInput by remember(detectionSensorConfig) {
mutableStateOf(detectionSensorConfig)
}
var detectionSensorInput by rememberSaveable { mutableStateOf(detectionSensorConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -30,7 +30,7 @@ fun DeviceConfigItemList(
onSaveClicked: (DeviceConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var deviceInput by remember(deviceConfig) { mutableStateOf(deviceConfig) }
var deviceInput by rememberSaveable { mutableStateOf(deviceConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -27,7 +27,7 @@ fun DisplayConfigItemList(
onSaveClicked: (DisplayConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var displayInput by remember(displayConfig) { mutableStateOf(displayConfig) }
var displayInput by rememberSaveable { mutableStateOf(displayConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -31,8 +31,8 @@ fun ExternalNotificationConfigItemList(
onSaveClicked: (ringtone: String, config: ExternalNotificationConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var ringtoneInput by remember { mutableStateOf(ringtone) }
var externalNotificationInput by remember { mutableStateOf(extNotificationConfig) }
var ringtoneInput by rememberSaveable { mutableStateOf(ringtone) }
var externalNotificationInput by rememberSaveable { mutableStateOf(extNotificationConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -8,6 +8,7 @@ import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -32,7 +33,7 @@ fun LoRaConfigItemList(
onSaveClicked: (LoRaConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var loraInput by remember(loraConfig) { mutableStateOf(loraConfig) }
var loraInput by rememberSaveable { mutableStateOf(loraConfig) }
val primaryChannel = Channel(primarySettings, loraInput)
LazyColumn(

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -31,7 +31,7 @@ fun MQTTConfigItemList(
onSaveClicked: (MQTTConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var mqttInput by remember(mqttConfig) { mutableStateOf(mqttConfig) }
var mqttInput by rememberSaveable { mutableStateOf(mqttConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -26,7 +26,7 @@ fun NeighborInfoConfigItemList(
onSaveClicked: (ModuleConfigProtos.ModuleConfig.NeighborInfoConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var neighborInfoInput by remember(neighborInfoConfig) { mutableStateOf(neighborInfoConfig) }
var neighborInfoInput by rememberSaveable { mutableStateOf(neighborInfoConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -32,7 +32,7 @@ fun NetworkConfigItemList(
onSaveClicked: (NetworkConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var networkInput by remember(networkConfig) { mutableStateOf(networkConfig) }
var networkInput by rememberSaveable { mutableStateOf(networkConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -26,7 +26,7 @@ fun PaxcounterConfigItemList(
onSaveClicked: (ModuleConfigProtos.ModuleConfig.PaxcounterConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var paxcounterInput by remember(paxcounterConfig) { mutableStateOf(paxcounterConfig) }
var paxcounterInput by rememberSaveable { mutableStateOf(paxcounterConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -32,8 +32,8 @@ fun PositionConfigItemList(
onSaveClicked: (position: Position?, config: PositionConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var locationInput by remember(location) { mutableStateOf(location) }
var positionInput by remember(positionConfig) { mutableStateOf(positionConfig) }
var locationInput by rememberSaveable { mutableStateOf(location) }
var positionInput by rememberSaveable { mutableStateOf(positionConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -26,7 +26,7 @@ fun PowerConfigItemList(
onSaveClicked: (PowerConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var powerInput by remember(powerConfig) { mutableStateOf(powerConfig) }
var powerInput by rememberSaveable { mutableStateOf(powerConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -26,7 +26,7 @@ fun RangeTestConfigItemList(
onSaveClicked: (RangeTestConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var rangeTestInput by remember(rangeTestConfig) { mutableStateOf(rangeTestConfig) }
var rangeTestInput by rememberSaveable { mutableStateOf(rangeTestConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -26,7 +26,7 @@ fun RemoteHardwareConfigItemList(
onSaveClicked: (RemoteHardwareConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var remoteHardwareInput by remember(remoteHardwareConfig) { mutableStateOf(remoteHardwareConfig) }
var remoteHardwareInput by rememberSaveable { mutableStateOf(remoteHardwareConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -27,7 +27,7 @@ fun SerialConfigItemList(
onSaveClicked: (SerialConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var serialInput by remember(serialConfig) { mutableStateOf(serialConfig) }
var serialInput by rememberSaveable { mutableStateOf(serialConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -26,7 +26,7 @@ fun StoreForwardConfigItemList(
onSaveClicked: (StoreForwardConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var storeForwardInput by remember(storeForwardConfig) { mutableStateOf(storeForwardConfig) }
var storeForwardInput by rememberSaveable { mutableStateOf(storeForwardConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -7,7 +7,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -26,7 +26,7 @@ fun TelemetryConfigItemList(
onSaveClicked: (TelemetryConfig) -> Unit,
) {
val focusManager = LocalFocusManager.current
var telemetryInput by remember(telemetryConfig) { mutableStateOf(telemetryConfig) }
var telemetryInput by rememberSaveable { mutableStateOf(telemetryConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()

Wyświetl plik

@ -8,7 +8,7 @@ import androidx.compose.material.Divider
import androidx.compose.runtime.Composable
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.compose.ui.Modifier
import androidx.compose.ui.platform.LocalFocusManager
@ -32,7 +32,7 @@ fun UserConfigItemList(
onSaveClicked: (MeshProtos.User) -> Unit,
) {
val focusManager = LocalFocusManager.current
var userInput by remember(userConfig) { mutableStateOf(userConfig) }
var userInput by rememberSaveable { mutableStateOf(userConfig) }
LazyColumn(
modifier = Modifier.fillMaxSize()