Clean up change events

This commit is contained in:
Garth Vander Houwen 2024-08-11 17:31:27 -07:00
parent 3786bf5e1f
commit 6f0fe8fd6f
16 changed files with 167 additions and 254 deletions

View file

@ -1140,6 +1140,11 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate
guard let lastLocation = LocationsHandler.shared.locationsArray.last else {
return nil
}
if lastLocation == CLLocation(latitude: 0, longitude: 0) {
return nil
}
positionPacket.latitudeI = Int32(lastLocation.coordinate.latitude * 1e7)
positionPacket.longitudeI = Int32(lastLocation.coordinate.longitude * 1e7)
let timestamp = lastLocation.timestamp

View file

@ -116,25 +116,19 @@ struct BluetoothConfig: View {
}
}
}
.onChange(of: enabled) { newEnabled in
if node != nil && node!.bluetoothConfig != nil {
if newEnabled != node!.bluetoothConfig!.enabled { hasChanges = true }
}
.onChange(of: enabled) {
if $0 != node?.bluetoothConfig?.enabled { hasChanges = true }
}
.onChange(of: mode) { newMode in
if node != nil && node!.bluetoothConfig != nil {
if newMode != node!.bluetoothConfig!.mode { hasChanges = true }
}
.onChange(of: mode) {
if $0 != node?.bluetoothConfig?.mode ?? -1 { hasChanges = true }
}
.onChange(of: fixedPin) { newFixedPin in
if node != nil && node!.bluetoothConfig != nil {
if node != nil && node?.bluetoothConfig != nil {
if newFixedPin != String(node!.bluetoothConfig!.fixedPin) { hasChanges = true }
}
}
.onChange(of: deviceLoggingEnabled) { newDeviceLogging in
if node != nil && node!.bluetoothConfig != nil {
if newDeviceLogging != node!.bluetoothConfig!.deviceLoggingEnabled { hasChanges = true }
}
.onChange(of: deviceLoggingEnabled) {
if $0 != node?.bluetoothConfig?.deviceLoggingEnabled { hasChanges = true }
}
}
func setBluetoothValues() {

View file

@ -155,7 +155,7 @@ struct DeviceConfig: View {
.disabled(node?.user == nil)
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)
.controlSize(.large)
.controlSize(.regular)
.padding(.leading)
.confirmationDialog(
"are.you.sure",
@ -180,7 +180,7 @@ struct DeviceConfig: View {
.disabled(node?.user == nil)
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)
.controlSize(.large)
.controlSize(.regular)
.padding(.trailing)
.confirmationDialog(
"All device and app data will be deleted. You will also need to forget your devices under Settings > Bluetooth.",
@ -252,20 +252,14 @@ struct DeviceConfig: View {
}
}
}
.onChange(of: deviceRole) { newRole in
if node != nil && node?.deviceConfig != nil {
if newRole != node!.deviceConfig!.role { hasChanges = true }
}
.onChange(of: deviceRole) {
if $0 != node?.deviceConfig?.role ?? -1 { hasChanges = true }
}
.onChange(of: serialEnabled) { newSerial in
if node != nil && node?.deviceConfig != nil {
if newSerial != node!.deviceConfig!.serialEnabled { hasChanges = true }
}
.onChange(of: serialEnabled) {
if $0 != node?.deviceConfig?.serialEnabled { hasChanges = true }
}
.onChange(of: debugLogEnabled) { newDebugLog in
if node != nil && node?.deviceConfig != nil {
if newDebugLog != node!.deviceConfig!.debugLogEnabled { hasChanges = true }
}
.onChange(of: debugLogEnabled) {
if $0 != node?.deviceConfig?.debugLogEnabled { hasChanges = true }
}
.onChange(of: buttonGPIO) { newButtonGPIO in
if node != nil && node?.deviceConfig != nil {
@ -287,15 +281,11 @@ struct DeviceConfig: View {
if newNodeInfoBroadcastSecs != node!.deviceConfig!.nodeInfoBroadcastSecs { hasChanges = true }
}
}
.onChange(of: doubleTapAsButtonPress) { newDoubleTapAsButtonPress in
if node != nil && node?.deviceConfig != nil {
if newDoubleTapAsButtonPress != node!.deviceConfig!.doubleTapAsButtonPress { hasChanges = true }
}
.onChange(of: doubleTapAsButtonPress) {
if $0 != node?.deviceConfig?.doubleTapAsButtonPress { hasChanges = true }
}
.onChange(of: isManaged) { newIsManaged in
if node != nil && node?.deviceConfig != nil {
if newIsManaged != node!.deviceConfig!.isManaged { hasChanges = true }
}
.onChange(of: isManaged) {
if $0 != node?.deviceConfig?.isManaged { hasChanges = true }
}
.onChange(of: tzdef) { newTzdef in
if node != nil && node?.deviceConfig != nil {

View file

@ -183,25 +183,19 @@ struct DisplayConfig: View {
if newCarouselSecs != node!.displayConfig!.screenCarouselInterval { hasChanges = true }
}
}
.onChange(of: compassNorthTop) { newCompassNorthTop in
if node != nil && node!.displayConfig != nil {
if newCompassNorthTop != node!.displayConfig!.compassNorthTop { hasChanges = true }
}
.onChange(of: compassNorthTop) {
if $0 != node?.displayConfig?.compassNorthTop { hasChanges = true }
}
.onChange(of: wakeOnTapOrMotion) { newWakeOnTapOrMotion in
if node != nil && node!.displayConfig != nil {
if newWakeOnTapOrMotion != node!.displayConfig!.wakeOnTapOrMotion { hasChanges = true }
}
.onChange(of: wakeOnTapOrMotion) {
if $0 != node?.displayConfig?.wakeOnTapOrMotion { hasChanges = true }
}
.onChange(of: gpsFormat) { newGpsFormat in
if node != nil && node!.displayConfig != nil {
if newGpsFormat != node!.displayConfig!.gpsFormat { hasChanges = true }
}
}
.onChange(of: flipScreen) { newFlipScreen in
if node != nil && node!.displayConfig != nil {
if newFlipScreen != node!.displayConfig!.flipScreen { hasChanges = true }
}
.onChange(of: flipScreen) {
if $0 != node?.displayConfig?.flipScreen { hasChanges = true }
}
.onChange(of: oledType) { newOledType in
if node != nil && node!.displayConfig != nil {

View file

@ -245,10 +245,8 @@ struct LoRaConfig: View {
if newRegion != node!.loRaConfig!.regionCode { hasChanges = true }
}
}
.onChange(of: usePreset) { newUsePreset in
if node != nil && node!.loRaConfig != nil {
if newUsePreset != node!.loRaConfig!.usePreset { hasChanges = true }
}
.onChange(of: usePreset) {
if $0 != node?.loRaConfig?.usePreset { hasChanges = true }
}
.onChange(of: modemPreset) { newModemPreset in
if node != nil && node!.loRaConfig != nil {
@ -280,30 +278,22 @@ struct LoRaConfig: View {
if newSpreadFactor != node!.loRaConfig!.spreadFactor { hasChanges = true }
}
}
.onChange(of: rxBoostedGain) { newRxBoostedGain in
if node != nil && node!.loRaConfig != nil {
if newRxBoostedGain != node!.loRaConfig!.sx126xRxBoostedGain { hasChanges = true }
}
.onChange(of: rxBoostedGain) {
if $0 != node?.loRaConfig?.sx126xRxBoostedGain { hasChanges = true }
}
.onChange(of: overrideFrequency) { newOverrideFrequency in
if node != nil && node!.loRaConfig != nil {
if newOverrideFrequency != node!.loRaConfig!.overrideFrequency { hasChanges = true }
}
if newOverrideFrequency != node?.loRaConfig?.overrideFrequency { hasChanges = true }
}
.onChange(of: txPower) { newTxPower in
if node != nil && node!.loRaConfig != nil {
if newTxPower != node!.loRaConfig!.txPower { hasChanges = true }
}
}
.onChange(of: txEnabled) { newTxEnabled in
if node != nil && node!.loRaConfig != nil {
if newTxEnabled != node!.loRaConfig!.txEnabled { hasChanges = true }
}
.onChange(of: txEnabled) {
if $0 != node?.loRaConfig?.txEnabled { hasChanges = true }
}
.onChange(of: ignoreMqtt) { newIgnoreMqtt in
if node != nil && node!.loRaConfig != nil {
if newIgnoreMqtt != node!.loRaConfig!.ignoreMqtt { hasChanges = true }
}
.onChange(of: ignoreMqtt) {
if $0 != node?.loRaConfig?.ignoreMqtt { hasChanges = true }
}
}
func setLoRaValues() {

View file

@ -50,10 +50,6 @@ struct AmbientLightingConfig: View {
Stepper("Current: \(current)", value: $current, in: 0...31, step: 1)
.padding(5)
}
.onChange(of: color, initial: true) {
components = color.resolve(in: environment)
hasChanges = true
}
}
}
.disabled(self.bleManager.connectedPeripheral == nil || node?.ambientLightingConfig == nil)
@ -98,9 +94,19 @@ struct AmbientLightingConfig: View {
}
}
}
.onChange(of: ledState) { newLedState in
if node != nil && node!.ambientLightingConfig != nil {
if newLedState != node!.ambientLightingConfig!.ledState { hasChanges = true }
.onChange(of: ledState) {
if let val = node?.ambientLightingConfig?.ledState {
hasChanges = $0 != val
}
}
.onChange(of: current) {
if let val = node?.ambientLightingConfig?.current {
hasChanges = $0 != val
}
}
.onChange(of: color) { c in
if color != c {
hasChanges = true
}
}
}

View file

@ -272,24 +272,24 @@ struct CannedMessagesConfig: View {
hasChanges = true
}
.onChange(of: enabled) { newEnabled in
if node != nil && node!.cannedMessageConfig != nil {
if newEnabled != node!.cannedMessageConfig!.enabled { hasChanges = true }
.onChange(of: enabled) {
if let val = node?.cannedMessageConfig?.enabled {
hasChanges = $0 != val
}
}
.onChange(of: sendBell) { newBell in
if node != nil && node!.cannedMessageConfig != nil {
if newBell != node!.cannedMessageConfig!.sendBell { hasChanges = true }
.onChange(of: sendBell) {
if let val = node?.cannedMessageConfig?.sendBell {
hasChanges = $0 != val
}
}
.onChange(of: rotary1Enabled) { newRot1 in
if node != nil && node!.cannedMessageConfig != nil {
if newRot1 != node!.cannedMessageConfig!.rotary1Enabled { hasChanges = true }
.onChange(of: rotary1Enabled) {
if let val = node?.cannedMessageConfig?.rotary1Enabled {
hasChanges = $0 != val
}
}
.onChange(of: updown1Enabled) { newUpDown in
if node != nil && node!.cannedMessageConfig != nil {
if newUpDown != node!.cannedMessageConfig!.updown1Enabled { hasChanges = true }
.onChange(of: updown1Enabled) {
if let val = node?.cannedMessageConfig?.updown1Enabled {
hasChanges = $0 != val
}
}
.onChange(of: inputbrokerPinA) { newPinA in

View file

@ -199,14 +199,14 @@ struct DetectionSensorConfig: View {
}
}
}
.onChange(of: enabled) { newEnabled in
if node != nil && node?.detectionSensorConfig != nil {
if newEnabled != node!.detectionSensorConfig!.enabled { hasChanges = true }
.onChange(of: enabled) {
if let val = node?.detectionSensorConfig?.enabled {
hasChanges = $0 != val
}
}
.onChange(of: sendBell) { newSendBell in
if node != nil && node?.detectionSensorConfig != nil {
if newSendBell != node!.detectionSensorConfig!.sendBell { hasChanges = true }
.onChange(of: sendBell) {
if let val = node?.detectionSensorConfig?.sendBell {
hasChanges = $0 != val
}
}
.onChange(of: detectionTriggeredHigh) { newDetectionTriggeredHigh in
@ -214,9 +214,9 @@ struct DetectionSensorConfig: View {
if newDetectionTriggeredHigh != node!.detectionSensorConfig!.detectionTriggeredHigh { hasChanges = true }
}
}
.onChange(of: usePullup) { newUsePullup in
if node != nil && node?.detectionSensorConfig != nil {
if newUsePullup != node!.detectionSensorConfig!.usePullup { hasChanges = true }
.onChange(of: usePullup) {
if let val = node?.detectionSensorConfig?.usePullup {
hasChanges = $0 != val
}
}
.onChange(of: name) { newName in

View file

@ -209,44 +209,44 @@ struct ExternalNotificationConfig: View {
}
}
}
.onChange(of: enabled) { newEnabled in
if node != nil && node!.externalNotificationConfig != nil {
if newEnabled != node!.externalNotificationConfig!.enabled { hasChanges = true }
.onChange(of: enabled) {
if let val = node?.externalNotificationConfig?.enabled {
hasChanges = $0 != val
}
}
.onChange(of: alertBell) { newAlertBell in
if node != nil && node!.externalNotificationConfig != nil {
if newAlertBell != node!.externalNotificationConfig!.alertBell { hasChanges = true }
.onChange(of: alertBell) {
if let val = node?.externalNotificationConfig?.alertBell {
hasChanges = $0 != val
}
}
.onChange(of: alertBellBuzzer) { newAlertBellBuzzer in
if node != nil && node!.externalNotificationConfig != nil {
if newAlertBellBuzzer != node!.externalNotificationConfig!.alertBellBuzzer { hasChanges = true }
.onChange(of: alertBellBuzzer) {
if let val = node?.externalNotificationConfig?.alertBellBuzzer {
hasChanges = $0 != val
}
}
.onChange(of: alertBellVibra) { newAlertBellVibra in
if node != nil && node!.externalNotificationConfig != nil {
if newAlertBellVibra != node!.externalNotificationConfig!.alertBellVibra { hasChanges = true }
.onChange(of: alertBellVibra) {
if let val = node?.externalNotificationConfig?.alertBellVibra {
hasChanges = $0 != val
}
}
.onChange(of: alertMessage) { newAlertMessage in
if node != nil && node!.externalNotificationConfig != nil {
if newAlertMessage != node!.externalNotificationConfig!.alertMessage { hasChanges = true }
.onChange(of: alertMessage) {
if let val = node?.externalNotificationConfig?.alertMessage {
hasChanges = $0 != val
}
}
.onChange(of: alertMessageBuzzer) { newAlertMessageBuzzer in
if node != nil && node!.externalNotificationConfig != nil {
if newAlertMessageBuzzer != node!.externalNotificationConfig!.alertMessageBuzzer { hasChanges = true }
.onChange(of: alertMessageBuzzer) {
if let val = node?.externalNotificationConfig?.alertMessageBuzzer {
hasChanges = $0 != val
}
}
.onChange(of: alertMessageVibra) { newAlertMessageVibra in
if node != nil && node!.externalNotificationConfig != nil {
if newAlertMessageVibra != node!.externalNotificationConfig!.alertMessageVibra { hasChanges = true }
.onChange(of: alertMessageVibra) {
if let val = node?.externalNotificationConfig?.alertMessageVibra {
hasChanges = $0 != val
}
}
.onChange(of: active) { newActive in
if node != nil && node!.externalNotificationConfig != nil {
if newActive != node!.externalNotificationConfig!.active { hasChanges = true }
.onChange(of: active) {
if let val = node?.externalNotificationConfig?.active {
hasChanges = $0 != val
}
}
.onChange(of: output) { newOutput in
@ -269,9 +269,9 @@ struct ExternalNotificationConfig: View {
if newOutputMs != node!.externalNotificationConfig!.outputMilliseconds { hasChanges = true }
}
}
.onChange(of: usePWM) { newUsePWM in
if node != nil && node!.externalNotificationConfig != nil {
if newUsePWM != node!.externalNotificationConfig!.usePWM { hasChanges = true }
.onChange(of: usePWM) {
if let val = node?.externalNotificationConfig?.usePWM {
hasChanges = $0 != val
}
}
.onChange(of: nagTimeout) { newNagTimeout in
@ -279,9 +279,9 @@ struct ExternalNotificationConfig: View {
if newNagTimeout != node!.externalNotificationConfig!.nagTimeout { hasChanges = true }
}
}
.onChange(of: useI2SAsBuzzer) { newUseI2SAsBuzzer in
if node != nil && node!.externalNotificationConfig != nil {
if newUseI2SAsBuzzer != node!.externalNotificationConfig!.useI2SAsBuzzer { hasChanges = true }
.onChange(of: useI2SAsBuzzer) {
if let val = node?.externalNotificationConfig?.useI2SAsBuzzer {
hasChanges = $0 != val
}
}
}

View file

@ -280,6 +280,18 @@ struct MQTTConfig: View {
)
}
)
.onChange(of: enabled) {
if $0 != node?.mqttConfig?.enabled { hasChanges = true }
}
.onChange(of: proxyToClientEnabled) { newProxyToClientEnabled in
if newProxyToClientEnabled {
jsonEnabled = false
}
if newProxyToClientEnabled != node?.mqttConfig?.proxyToClientEnabled { hasChanges = true }
if newProxyToClientEnabled {
jsonEnabled = false
}
}
.onChange(of: address) { newAddress in
if node != nil && node?.mqttConfig != nil {
if newAddress != node!.mqttConfig!.address { hasChanges = true }
@ -303,39 +315,17 @@ struct MQTTConfig: View {
.onChange(of: selectedTopic) { newSelectedTopic in
root = newSelectedTopic
}
.onChange(of: enabled) { newEnabled in
if node != nil && node?.mqttConfig != nil {
if newEnabled != node!.mqttConfig!.enabled { hasChanges = true }
}
}
.onChange(of: proxyToClientEnabled) { newProxyToClientEnabled in
if newProxyToClientEnabled {
jsonEnabled = false
}
if node != nil && node?.mqttConfig != nil {
if newProxyToClientEnabled != node!.mqttConfig!.proxyToClientEnabled { hasChanges = true }
if newProxyToClientEnabled {
jsonEnabled = false
}
}
}
.onChange(of: encryptionEnabled) { newEncryptionEnabled in
if node != nil && node?.mqttConfig != nil {
if newEncryptionEnabled != node!.mqttConfig!.encryptionEnabled { hasChanges = true }
}
.onChange(of: encryptionEnabled) {
if $0 != node?.mqttConfig?.encryptionEnabled { hasChanges = true }
}
.onChange(of: jsonEnabled) { newJsonEnabled in
if newJsonEnabled {
proxyToClientEnabled = false
}
if node != nil && node?.mqttConfig != nil {
if newJsonEnabled != node!.mqttConfig!.jsonEnabled { hasChanges = true }
}
if newJsonEnabled != node?.mqttConfig?.jsonEnabled { hasChanges = true }
}
.onChange(of: tlsEnabled) { newTlsEnabled in
if node != nil && node?.mqttConfig != nil {
if newTlsEnabled != node!.mqttConfig!.tlsEnabled { hasChanges = true }
}
.onChange(of: tlsEnabled) {
if $0 != node?.mqttConfig?.tlsEnabled { hasChanges = true }
}
.onChange(of: mqttConnected) { newMqttConnected in
if newMqttConnected == false {
@ -348,13 +338,8 @@ struct MQTTConfig: View {
}
}
}
.onChange(of: mapReportingEnabled) { newMapReportingEnabled in
if node != nil && node?.mqttConfig != nil {
if newMapReportingEnabled != node!.mqttConfig!.mapReportingEnabled { hasChanges = true }
}
}
.onChange(of: preciseLocation) { _ in
hasChanges = true
.onChange(of: mapReportingEnabled) {
if $0 != node?.mqttConfig?.mapReportingEnabled { hasChanges = true }
}
.onChange(of: mapPublishIntervalSecs) { newMapPublishIntervalSecs in
if node != nil && node?.mqttConfig != nil {

View file

@ -67,14 +67,10 @@ struct PaxCounterConfig: View {
}
}
.onChange(of: enabled) {
if let val = node?.paxCounterConfig?.enabled {
hasChanges = $0 != val
}
if $0 != node?.paxCounterConfig?.enabled { hasChanges = true }
}
.onChange(of: paxcounterUpdateInterval) {
if let val = node?.paxCounterConfig?.updateInterval {
hasChanges = $0 != val
}
if $0 != node?.paxCounterConfig?.updateInterval ?? -1 { hasChanges = true }
}
SaveConfigButton(node: node, hasChanges: $hasChanges) {

View file

@ -91,20 +91,14 @@ struct RangeTestConfig: View {
}
}
}
.onChange(of: enabled) { newEnabled in
if node != nil && node!.rangeTestConfig != nil {
if newEnabled != node!.rangeTestConfig!.enabled { hasChanges = true }
}
.onChange(of: enabled) {
if $0 != node?.rangeTestConfig?.enabled { hasChanges = true }
}
.onChange(of: save) { newSave in
if node != nil && node!.rangeTestConfig != nil {
if newSave != node!.rangeTestConfig!.save { hasChanges = true }
}
.onChange(of: save) {
if $0 != node?.rangeTestConfig?.save { hasChanges = true }
}
.onChange(of: sender) { newSender in
if node != nil && node!.rangeTestConfig != nil {
if newSender != node!.rangeTestConfig!.sender { hasChanges = true }
}
.onChange(of: sender) {
if $0 != node?.rangeTestConfig?.sender ?? -1 { hasChanges = true }
}
}
}

View file

@ -145,61 +145,40 @@ struct SerialConfig: View {
_ = bleManager.requestSerialModuleConfig(fromUser: connectedNode!.user!, toUser: node!.user!, adminIndex: connectedNode?.myInfo?.adminIndex ?? 0)
}
}
}
.onChange(of: enabled) { newEnabled in
if node != nil && node!.serialConfig != nil {
if newEnabled != node!.serialConfig!.enabled { hasChanges = true }
}
.onChange(of: enabled) {
if $0 != node?.serialConfig?.enabled { hasChanges = true }
}
.onChange(of: echo) { newEcho in
if node != nil && node!.serialConfig != nil {
if newEcho != node!.serialConfig!.echo { hasChanges = true }
}
.onChange(of: echo) {
if $0 != node?.serialConfig?.echo { hasChanges = true }
}
.onChange(of: rxd) { newRxd in
if node != nil && node!.serialConfig != nil {
if newRxd != node!.serialConfig!.rxd { hasChanges = true }
}
}
.onChange(of: txd) { newTxd in
if node != nil && node!.serialConfig != nil {
if newTxd != node!.serialConfig!.txd { hasChanges = true }
}
}
.onChange(of: baudRate) { newBaud in
if node != nil && node!.serialConfig != nil {
if newBaud != node!.serialConfig!.baudRate { hasChanges = true }
}
}
.onChange(of: timeout) { newTimeout in
if node != nil && node!.serialConfig != nil {
if newTimeout != node!.serialConfig!.timeout { hasChanges = true }
}
}
.onChange(of: overrideConsoleSerialPort) { newOverrideConsoleSerialPort in
if node != nil && node!.serialConfig != nil {
if newOverrideConsoleSerialPort != node!.serialConfig!.overrideConsoleSerialPort { hasChanges = true }
}
}
.onChange(of: mode) { newMode in
if node != nil && node!.serialConfig != nil {
if newMode != node!.serialConfig!.mode { hasChanges = true }
}
}

View file

@ -128,10 +128,8 @@ struct NetworkConfig: View {
}
}
}
.onChange(of: wifiEnabled) { newEnabled in
if node != nil && node!.networkConfig != nil {
if newEnabled != node!.networkConfig!.wifiEnabled { hasChanges = true }
}
.onChange(of: wifiEnabled) {
if $0 != node?.networkConfig?.wifiEnabled { hasChanges = true }
}
.onChange(of: wifiSsid) { newSSID in
if node != nil && node!.networkConfig != nil {
@ -143,15 +141,11 @@ struct NetworkConfig: View {
if newPsk != node!.networkConfig!.wifiPsk { hasChanges = true }
}
}
.onChange(of: wifiMode) { newMode in
if node != nil && node!.networkConfig != nil {
if newMode != node!.networkConfig!.wifiMode { hasChanges = true }
}
.onChange(of: wifiMode) {
if $0 != node?.networkConfig?.wifiMode ?? -1 { hasChanges = true }
}
.onChange(of: ethEnabled) { newEthEnabled in
if node != nil && node!.networkConfig != nil {
if newEthEnabled != node!.networkConfig!.ethEnabled { hasChanges = true }
}
.onChange(of: ethEnabled) {
if $0 != node?.networkConfig?.ethEnabled { hasChanges = true }
}
}
func setNetworkValues() {

View file

@ -404,51 +404,39 @@ struct PositionConfig: View {
}
}
}
.onChange(of: gpsMode) { _ in
handleChanges()
.onChange(of: gpsMode) { newGpsMode in
if newGpsMode != node?.positionConfig?.gpsMode ?? 0 { hasChanges = true }
}
.onChange(of: rxGpio) { _ in
handleChanges()
.onChange(of: rxGpio) { newRxGpio in
if newRxGpio != node?.positionConfig?.rxGpio ?? 0 { hasChanges = true }
}
.onChange(of: txGpio) { _ in
handleChanges()
.onChange(of: txGpio) { newTxGpio in
if newTxGpio != node?.positionConfig?.txGpio ?? 0 { hasChanges = true }
}
.onChange(of: gpsEnGpio) { _ in
handleChanges()
.onChange(of: gpsEnGpio) { newGpsEnGpio in
if newGpsEnGpio != node?.positionConfig?.gpsEnGpio ?? 0 { hasChanges = true }
}
.onChange(of: smartPositionEnabled) { _ in
handleChanges()
.onChange(of: smartPositionEnabled) { newSmartPositionEnabled in
if newSmartPositionEnabled != node?.positionConfig?.smartPositionEnabled { hasChanges = true }
}
.onChange(of: positionBroadcastSeconds) { _ in
handleChanges()
.onChange(of: positionBroadcastSeconds) { newPositionBroadcastSeconds in
if newPositionBroadcastSeconds != node?.positionConfig?.positionBroadcastSeconds ?? 0 { hasChanges = true }
}
.onChange(of: broadcastSmartMinimumIntervalSecs) { _ in
handleChanges()
.onChange(of: broadcastSmartMinimumIntervalSecs) { newBroadcastSmartMinimumIntervalSecs in
if newBroadcastSmartMinimumIntervalSecs != node?.positionConfig?.broadcastSmartMinimumIntervalSecs ?? 0 { hasChanges = true }
}
.onChange(of: broadcastSmartMinimumDistance) { _ in
handleChanges()
.onChange(of: broadcastSmartMinimumDistance) { newBroadcastSmartMinimumDistance in
if newBroadcastSmartMinimumDistance != node?.positionConfig?.broadcastSmartMinimumDistance ?? 0 { hasChanges = true }
}
.onChange(of: gpsUpdateInterval) { _ in
handleChanges()
}
.onChange(of: positionFlags) { _ in
handleChanges()
.onChange(of: gpsUpdateInterval) { newGpsUpdateInterval in
if newGpsUpdateInterval != node?.positionConfig?.gpsUpdateInterval ?? 0 { hasChanges = true }
}
}
func handleChanges() {
func handlePositionFlagtChanges() {
guard let positionConfig = node?.positionConfig else { return }
let pf = PositionFlags(rawValue: self.positionFlags)
hasChanges = positionConfig.deviceGpsEnabled != deviceGpsEnabled ||
positionConfig.gpsMode != gpsMode ||
positionConfig.rxGpio != rxGpio ||
positionConfig.txGpio != txGpio ||
positionConfig.gpsEnGpio != gpsEnGpio ||
positionConfig.smartPositionEnabled != smartPositionEnabled ||
positionConfig.positionBroadcastSeconds != positionBroadcastSeconds ||
positionConfig.broadcastSmartMinimumIntervalSecs != broadcastSmartMinimumIntervalSecs ||
positionConfig.broadcastSmartMinimumDistance != broadcastSmartMinimumDistance ||
positionConfig.gpsUpdateInterval != gpsUpdateInterval ||
hasChanges =
pf.contains(.Altitude) ||
pf.contains(.AltitudeMsl) ||
pf.contains(.Satsinview) ||

View file

@ -136,12 +136,12 @@ struct PowerConfig: View {
}
}
.onChange(of: isPowerSaving) {
if let val = node?.powerConfig?.isPowerSaving {
hasChanges = $0 != val
}
if $0 != node?.powerConfig?.isPowerSaving { hasChanges = true }
}
.onChange(of: shutdownOnPowerLoss) { _ in
hasChanges = true
.onChange(of: shutdownOnPowerLoss) { newShutdownOnPowerLoss in
if newShutdownOnPowerLoss {
hasChanges = true
}
}
.onChange(of: shutdownAfterSecs) {
if let val = node?.powerConfig?.onBatteryShutdownAfterSecs {
@ -151,10 +151,8 @@ struct PowerConfig: View {
.onChange(of: adcOverride) { _ in
hasChanges = true
}
.onChange(of: adcMultiplier) {
if let val = node?.powerConfig?.adcMultiplierOverride {
hasChanges = $0 != val
}
.onChange(of: adcMultiplier) { newAdcMultiplier in
if newAdcMultiplier != node?.powerConfig?.adcMultiplierOverride ?? 0 { hasChanges = true }
}
.onChange(of: waitBluetoothSecs) {
if let val = node?.powerConfig?.waitBluetoothSecs {