From 7da958578b0a79755865130b917fbb4c0e19989d Mon Sep 17 00:00:00 2001 From: andrekir Date: Sun, 21 May 2023 19:09:00 -0300 Subject: [PATCH] refactor: improve channel editor isEditing logic --- .../ui/components/config/ChannelSettingsItemList.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/components/config/ChannelSettingsItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/components/config/ChannelSettingsItemList.kt index 910d2a67..dbbb499a 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/components/config/ChannelSettingsItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/components/config/ChannelSettingsItemList.kt @@ -96,10 +96,14 @@ fun ChannelSettingsItemList( onNegativeClicked: () -> Unit = { }, @StringRes positiveText: Int = R.string.send, onPositiveClicked: (List) -> Unit, - ) { +) { val settingsListInput = remember { mutableStateListOf().apply { addAll(settingsList) } } + + val isEditing: Boolean = settingsList.size != settingsListInput.size + || settingsList.zip(settingsListInput).any { (item1, item2) -> item1 != item2 } + var showEditChannelDialog: Int? by remember { mutableStateOf(null) } if (showEditChannelDialog != null) { @@ -141,9 +145,7 @@ fun ChannelSettingsItemList( item { PreferenceFooter( // FIXME workaround until we use navigation in ChannelFragment - enabled = positiveText != R.string.send - || !settingsListInput.containsAll(settingsList) - || !settingsList.containsAll(settingsListInput), + enabled = isEditing || positiveText != R.string.send, negativeText = R.string.cancel, onNegativeClicked = { focusManager.clearFocus()