From 86905942dec9b5e122c0f43d710cc330d74f426f Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Mon, 16 Jun 2025 16:54:55 +0000 Subject: [PATCH] fix (#2128): MQTT map reporting interval input (#2135) --- .../mesh/ui/common/components/EditTextPreference.kt | 3 ++- .../ui/radioconfig/components/MQTTConfigItemList.kt | 12 +++++++++++- .../radioconfig/components/MapReportingPreference.kt | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/common/components/EditTextPreference.kt b/app/src/main/java/com/geeksville/mesh/ui/common/components/EditTextPreference.kt index 4621be6da..97d7d2671 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/common/components/EditTextPreference.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/common/components/EditTextPreference.kt @@ -85,6 +85,7 @@ fun EditTextPreference( title: String, value: Int, enabled: Boolean, + isError: Boolean = false, keyboardActions: KeyboardActions, onValueChanged: (Int) -> Unit, modifier: Modifier = Modifier, @@ -97,7 +98,7 @@ fun EditTextPreference( title = title, value = valueState, enabled = enabled, - isError = value.toUInt().toString() != valueState, + isError = value.toUInt().toString() != valueState || isError, keyboardOptions = KeyboardOptions.Default.copy( keyboardType = KeyboardType.Number, imeAction = ImeAction.Done ), diff --git a/app/src/main/java/com/geeksville/mesh/ui/radioconfig/components/MQTTConfigItemList.kt b/app/src/main/java/com/geeksville/mesh/ui/radioconfig/components/MQTTConfigItemList.kt index f459331f9..6c9576959 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/radioconfig/components/MQTTConfigItemList.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/radioconfig/components/MQTTConfigItemList.kt @@ -233,6 +233,13 @@ fun MQTTConfigItemList( mapReportSettings = settings } }, + publishIntervalSecs = mqttInput.mapReportSettings.publishIntervalSecs, + onPublishIntervalSecsChanged = { + val settings = mqttInput.mapReportSettings.copy { publishIntervalSecs = it } + mqttInput = mqttInput.copy { + mapReportSettings = settings + } + }, enabled = enabled, focusManager = focusManager ) @@ -241,7 +248,8 @@ fun MQTTConfigItemList( item { val consentValid = if (mqttInput.mapReportingEnabled) { - mqttInput.mapReportSettings.shouldReportLocation + mqttInput.mapReportSettings.shouldReportLocation && + mqttConfig.mapReportSettings.publishIntervalSecs >= MinIntervalSecs } else { true } @@ -260,6 +268,8 @@ fun MQTTConfigItemList( } } +private const val MinIntervalSecs = 3600 + @Preview(showBackground = true) @Composable private fun MQTTConfigPreview() { diff --git a/app/src/main/java/com/geeksville/mesh/ui/radioconfig/components/MapReportingPreference.kt b/app/src/main/java/com/geeksville/mesh/ui/radioconfig/components/MapReportingPreference.kt index 664752761..a0a0d2eec 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/radioconfig/components/MapReportingPreference.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/radioconfig/components/MapReportingPreference.kt @@ -138,6 +138,7 @@ fun MapReportingPreference( modifier = Modifier.Companion.padding(bottom = 16.dp), title = stringResource(R.string.map_reporting_interval_seconds), value = publishIntervalSecs, + isError = publishIntervalSecs < 3600, enabled = enabled, keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }), onValueChanged = onPublishIntervalSecsChanged,