mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Handle empty positions, allow nrf52 saving for telemetry
This commit is contained in:
parent
355e1126a2
commit
ddfcea4ace
24 changed files with 865 additions and 674 deletions
|
|
@ -13,6 +13,7 @@ enum ConfigPresets : Int, CaseIterable, Identifiable {
|
|||
case rakRotaryEncoder = 1
|
||||
case tbeamThreeButtonScreen = 2
|
||||
case cardKB = 3
|
||||
case facesKB = 4
|
||||
|
||||
var id: Int { self.rawValue }
|
||||
var description: String {
|
||||
|
|
@ -26,7 +27,9 @@ enum ConfigPresets : Int, CaseIterable, Identifiable {
|
|||
case .tbeamThreeButtonScreen:
|
||||
return "TBEAM 3 Button OLED Screen"
|
||||
case .cardKB:
|
||||
return "Card KB"
|
||||
return "M5 Stack Card KeyBoard"
|
||||
case .facesKB:
|
||||
return "M5 Stack Faces KeyBoard"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -97,7 +100,7 @@ struct CannedMessagesConfig: View {
|
|||
@Environment(\.managedObjectContext) var context
|
||||
@EnvironmentObject var bleManager: BLEManager
|
||||
|
||||
var node: NodeInfoEntity
|
||||
var node: NodeInfoEntity?
|
||||
|
||||
@State private var isPresentingSaveConfirm: Bool = false
|
||||
@State var initialLoad: Bool = true
|
||||
|
|
@ -260,7 +263,6 @@ struct CannedMessagesConfig: View {
|
|||
}
|
||||
.disabled(configPreset > 0)
|
||||
}
|
||||
.disabled(!(node.myInfo?.hasWifi ?? false))
|
||||
|
||||
Button {
|
||||
|
||||
|
|
@ -270,7 +272,7 @@ struct CannedMessagesConfig: View {
|
|||
|
||||
Label("Save", systemImage: "square.and.arrow.down")
|
||||
}
|
||||
.disabled(bleManager.connectedPeripheral == nil || !hasChanges || !(node.myInfo?.hasWifi ?? false))
|
||||
.disabled(bleManager.connectedPeripheral == nil || !hasChanges)
|
||||
.buttonStyle(.bordered)
|
||||
.buttonBorderShape(.capsule)
|
||||
.controlSize(.large)
|
||||
|
|
@ -290,7 +292,7 @@ struct CannedMessagesConfig: View {
|
|||
if rotary1Enabled {
|
||||
|
||||
/// Input event origin accepted by the canned messages
|
||||
/// Can be e.g. "rotEnc1", "upDownEnc1" or keyword "_any"
|
||||
/// Can be e.g. "rotEnc1", "upDownEnc1", "cardkb", "faceskb" 623or keyword "_any"
|
||||
cmc.allowInputSource = "rotEnc1"
|
||||
|
||||
} else if updown1Enabled {
|
||||
|
|
@ -308,7 +310,7 @@ struct CannedMessagesConfig: View {
|
|||
cmc.inputbrokerEventCcw = InputEventChars(rawValue: inputbrokerEventCcw)!.protoEnumValue()
|
||||
cmc.inputbrokerEventPress = InputEventChars(rawValue: inputbrokerEventPress)!.protoEnumValue()
|
||||
|
||||
let adminMessageId = bleManager.saveCannedMessageModuleConfig(config: cmc, fromUser: node.user!, toUser: node.user!, wantResponse: true)
|
||||
let adminMessageId = bleManager.saveCannedMessageModuleConfig(config: cmc, fromUser: node!.user!, toUser: node!.user!, wantResponse: true)
|
||||
|
||||
if adminMessageId > 0 {
|
||||
// Should show a saved successfully alert once I know that to be true
|
||||
|
|
@ -331,13 +333,13 @@ struct CannedMessagesConfig: View {
|
|||
if self.initialLoad{
|
||||
|
||||
self.bleManager.context = context
|
||||
self.enabled = node.cannedMessageConfig?.enabled ?? false
|
||||
self.sendBell = node.cannedMessageConfig?.sendBell ?? false
|
||||
self.rotary1Enabled = node.cannedMessageConfig?.rotary1Enabled ?? false
|
||||
self.updown1Enabled = node.cannedMessageConfig?.updown1Enabled ?? false
|
||||
self.inputbrokerPinA = Int(node.cannedMessageConfig?.inputbrokerPinA ?? 0)
|
||||
self.inputbrokerPinB = Int(node.cannedMessageConfig?.inputbrokerPinB ?? 0)
|
||||
self.inputbrokerPinPress = Int(node.cannedMessageConfig?.inputbrokerPinPress ?? 0)
|
||||
self.enabled = node!.cannedMessageConfig?.enabled ?? false
|
||||
self.sendBell = node!.cannedMessageConfig?.sendBell ?? false
|
||||
self.rotary1Enabled = node!.cannedMessageConfig?.rotary1Enabled ?? false
|
||||
self.updown1Enabled = node!.cannedMessageConfig?.updown1Enabled ?? false
|
||||
self.inputbrokerPinA = Int(node!.cannedMessageConfig?.inputbrokerPinA ?? 0)
|
||||
self.inputbrokerPinB = Int(node!.cannedMessageConfig?.inputbrokerPinB ?? 0)
|
||||
self.inputbrokerPinPress = Int(node!.cannedMessageConfig?.inputbrokerPinPress ?? 0)
|
||||
self.hasChanges = false
|
||||
self.initialLoad = false
|
||||
}
|
||||
|
|
@ -361,35 +363,35 @@ struct CannedMessagesConfig: View {
|
|||
}
|
||||
.onChange(of: enabled) { newEnabled in
|
||||
|
||||
if newEnabled != node.cannedMessageConfig!.enabled { hasChanges = true }
|
||||
if newEnabled != node!.cannedMessageConfig!.enabled { hasChanges = true }
|
||||
}
|
||||
.onChange(of: sendBell) { newBell in
|
||||
|
||||
if newBell != node.cannedMessageConfig!.sendBell { hasChanges = true }
|
||||
if newBell != node!.cannedMessageConfig!.sendBell { hasChanges = true }
|
||||
}
|
||||
.onChange(of: inputbrokerPinA) { newPinA in
|
||||
|
||||
if newPinA != node.cannedMessageConfig!.inputbrokerPinA { hasChanges = true }
|
||||
if newPinA != node!.cannedMessageConfig!.inputbrokerPinA { hasChanges = true }
|
||||
}
|
||||
.onChange(of: inputbrokerPinB) { newPinB in
|
||||
|
||||
if newPinB != node.cannedMessageConfig!.inputbrokerPinB { hasChanges = true }
|
||||
if newPinB != node!.cannedMessageConfig!.inputbrokerPinB { hasChanges = true }
|
||||
}
|
||||
.onChange(of: inputbrokerPinPress) { newPinPress in
|
||||
|
||||
if newPinPress != node.cannedMessageConfig!.inputbrokerPinPress { hasChanges = true }
|
||||
if newPinPress != node!.cannedMessageConfig!.inputbrokerPinPress { hasChanges = true }
|
||||
}
|
||||
.onChange(of: inputbrokerEventCw) { newKeyA in
|
||||
|
||||
if newKeyA != node.cannedMessageConfig!.inputbrokerEventCw { hasChanges = true }
|
||||
if newKeyA != node!.cannedMessageConfig!.inputbrokerEventCw { hasChanges = true }
|
||||
}
|
||||
.onChange(of: inputbrokerEventCcw) { newKeyB in
|
||||
|
||||
if newKeyB != node.cannedMessageConfig!.inputbrokerEventCcw { hasChanges = true }
|
||||
if newKeyB != node!.cannedMessageConfig!.inputbrokerEventCcw { hasChanges = true }
|
||||
}
|
||||
.onChange(of: inputbrokerEventPress) { newKeyPress in
|
||||
|
||||
if newKeyPress != node.cannedMessageConfig!.inputbrokerEventPress { hasChanges = true }
|
||||
if newKeyPress != node!.cannedMessageConfig!.inputbrokerEventPress { hasChanges = true }
|
||||
}
|
||||
.navigationViewStyle(StackNavigationViewStyle())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ struct ExternalNotificationConfig: View {
|
|||
@Environment(\.managedObjectContext) var context
|
||||
@EnvironmentObject var bleManager: BLEManager
|
||||
|
||||
var node: NodeInfoEntity
|
||||
var node: NodeInfoEntity?
|
||||
|
||||
@State private var isPresentingSaveConfirm: Bool = false
|
||||
@State var initialLoad: Bool = true
|
||||
|
|
@ -138,7 +138,7 @@ struct ExternalNotificationConfig: View {
|
|||
|
||||
Label("Save", systemImage: "square.and.arrow.down")
|
||||
}
|
||||
.disabled(bleManager.connectedPeripheral == nil || !hasChanges || !(node.myInfo?.hasWifi ?? false))
|
||||
.disabled(bleManager.connectedPeripheral == nil || !hasChanges || !(node!.myInfo?.hasWifi ?? false))
|
||||
.buttonStyle(.bordered)
|
||||
.buttonBorderShape(.capsule)
|
||||
.controlSize(.large)
|
||||
|
|
@ -158,7 +158,7 @@ struct ExternalNotificationConfig: View {
|
|||
enc.output = UInt32(output)
|
||||
enc.outputMs = UInt32(outputMilliseconds)
|
||||
|
||||
let adminMessageId = bleManager.saveExternalNotificationModuleConfig(config: enc, fromUser: node.user!, toUser: node.user!, wantResponse: true)
|
||||
let adminMessageId = bleManager.saveExternalNotificationModuleConfig(config: enc, fromUser: node!.user!, toUser: node!.user!, wantResponse: true)
|
||||
|
||||
if adminMessageId > 0{
|
||||
|
||||
|
|
@ -185,12 +185,12 @@ struct ExternalNotificationConfig: View {
|
|||
|
||||
self.bleManager.context = context
|
||||
|
||||
self.enabled = node.externalNotificationConfig?.enabled ?? false
|
||||
self.alertBell = node.externalNotificationConfig?.alertBell ?? false
|
||||
self.alertMessage = node.externalNotificationConfig?.alertMessage ?? false
|
||||
self.active = node.externalNotificationConfig?.active ?? false
|
||||
self.output = Int(node.externalNotificationConfig?.output ?? 0)
|
||||
self.outputMilliseconds = Int(node.externalNotificationConfig?.outputMilliseconds ?? 0)
|
||||
self.enabled = node!.externalNotificationConfig?.enabled ?? false
|
||||
self.alertBell = node!.externalNotificationConfig?.alertBell ?? false
|
||||
self.alertMessage = node!.externalNotificationConfig?.alertMessage ?? false
|
||||
self.active = node!.externalNotificationConfig?.active ?? false
|
||||
self.output = Int(node!.externalNotificationConfig?.output ?? 0)
|
||||
self.outputMilliseconds = Int(node!.externalNotificationConfig?.outputMilliseconds ?? 0)
|
||||
|
||||
self.hasChanges = false
|
||||
self.initialLoad = false
|
||||
|
|
@ -198,27 +198,27 @@ struct ExternalNotificationConfig: View {
|
|||
}
|
||||
.onChange(of: enabled) { newEnabled in
|
||||
|
||||
if newEnabled != node.externalNotificationConfig!.enabled { hasChanges = true }
|
||||
if newEnabled != node!.externalNotificationConfig!.enabled { hasChanges = true }
|
||||
}
|
||||
.onChange(of: alertBell) { newAlertBell in
|
||||
|
||||
if newAlertBell != node.externalNotificationConfig!.alertBell { hasChanges = true }
|
||||
if newAlertBell != node!.externalNotificationConfig!.alertBell { hasChanges = true }
|
||||
}
|
||||
.onChange(of: alertMessage) { newAlertMessage in
|
||||
|
||||
if newAlertMessage != node.externalNotificationConfig!.alertMessage { hasChanges = true }
|
||||
if newAlertMessage != node!.externalNotificationConfig!.alertMessage { hasChanges = true }
|
||||
}
|
||||
.onChange(of: active) { newActuve in
|
||||
|
||||
if newActuve != node.externalNotificationConfig!.active { hasChanges = true }
|
||||
if newActuve != node!.externalNotificationConfig!.active { hasChanges = true }
|
||||
}
|
||||
.onChange(of: output) { newOutput in
|
||||
|
||||
if newOutput != node.externalNotificationConfig!.output { hasChanges = true }
|
||||
if newOutput != node!.externalNotificationConfig!.output { hasChanges = true }
|
||||
}
|
||||
.onChange(of: outputMilliseconds) { newOutputMs in
|
||||
|
||||
if newOutputMs != node.externalNotificationConfig!.outputMilliseconds { hasChanges = true }
|
||||
if newOutputMs != node!.externalNotificationConfig!.outputMilliseconds { hasChanges = true }
|
||||
}
|
||||
.navigationViewStyle(StackNavigationViewStyle())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ struct RangeTestConfig: View {
|
|||
@Environment(\.managedObjectContext) var context
|
||||
@EnvironmentObject var bleManager: BLEManager
|
||||
|
||||
var node: NodeInfoEntity
|
||||
var node: NodeInfoEntity?
|
||||
|
||||
@State private var isPresentingSaveConfirm: Bool = false
|
||||
@State var initialLoad: Bool = true
|
||||
|
|
@ -80,13 +80,13 @@ struct RangeTestConfig: View {
|
|||
Label("Save", systemImage: "square.and.arrow.down.fill")
|
||||
}
|
||||
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
|
||||
.disabled(!(node.myInfo?.hasWifi ?? false))
|
||||
.disabled(!(node!.myInfo?.hasWifi ?? false))
|
||||
|
||||
Text("Saves a CSV with the range test message details, currently only available on ESP32 devices with a web server.")
|
||||
.font(.caption)
|
||||
}
|
||||
}
|
||||
.disabled(!(node.myInfo?.hasWifi ?? false))
|
||||
.disabled(!(node!.myInfo?.hasWifi ?? false))
|
||||
|
||||
Button {
|
||||
|
||||
|
|
@ -96,7 +96,7 @@ struct RangeTestConfig: View {
|
|||
|
||||
Label("Save", systemImage: "square.and.arrow.down")
|
||||
}
|
||||
.disabled(bleManager.connectedPeripheral == nil || !hasChanges || !(node.myInfo?.hasWifi ?? false))
|
||||
.disabled(bleManager.connectedPeripheral == nil || !hasChanges || !(node!.myInfo?.hasWifi ?? false))
|
||||
.buttonStyle(.bordered)
|
||||
.buttonBorderShape(.capsule)
|
||||
.controlSize(.large)
|
||||
|
|
@ -113,7 +113,7 @@ struct RangeTestConfig: View {
|
|||
rtc.save = save
|
||||
rtc.sender = UInt32(sender)
|
||||
|
||||
let adminMessageId = bleManager.saveRangeTestModuleConfig(config: rtc, fromUser: node.user!, toUser: node.user!, wantResponse: true)
|
||||
let adminMessageId = bleManager.saveRangeTestModuleConfig(config: rtc, fromUser: node!.user!, toUser: node!.user!, wantResponse: true)
|
||||
|
||||
if adminMessageId > 0 {
|
||||
|
||||
|
|
@ -139,33 +139,24 @@ struct RangeTestConfig: View {
|
|||
if self.initialLoad{
|
||||
|
||||
self.bleManager.context = context
|
||||
self.enabled = node.rangeTestConfig?.enabled ?? false
|
||||
self.save = node.rangeTestConfig?.save ?? false
|
||||
self.sender = Int(node.rangeTestConfig?.sender ?? 0)
|
||||
self.enabled = node!.rangeTestConfig?.enabled ?? false
|
||||
self.save = node!.rangeTestConfig?.save ?? false
|
||||
self.sender = Int(node!.rangeTestConfig?.sender ?? 0)
|
||||
self.hasChanges = false
|
||||
self.initialLoad = false
|
||||
}
|
||||
}
|
||||
.onChange(of: enabled) { newEnabled in
|
||||
|
||||
if newEnabled != node.rangeTestConfig!.enabled {
|
||||
|
||||
hasChanges = true
|
||||
}
|
||||
if newEnabled != node!.rangeTestConfig!.enabled { hasChanges = true }
|
||||
}
|
||||
.onChange(of: save) { newSave in
|
||||
|
||||
if newSave != node.rangeTestConfig!.save {
|
||||
|
||||
hasChanges = true
|
||||
}
|
||||
if newSave != node!.rangeTestConfig!.save { hasChanges = true }
|
||||
}
|
||||
.onChange(of: sender) { newSender in
|
||||
|
||||
if newSender != node.rangeTestConfig!.sender {
|
||||
|
||||
hasChanges = true
|
||||
}
|
||||
if newSender != node!.rangeTestConfig!.sender { hasChanges = true }
|
||||
}
|
||||
.navigationViewStyle(StackNavigationViewStyle())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ struct SerialConfig: View {
|
|||
@Environment(\.managedObjectContext) var context
|
||||
@EnvironmentObject var bleManager: BLEManager
|
||||
|
||||
var node: NodeInfoEntity
|
||||
var node: NodeInfoEntity?
|
||||
|
||||
@State private var isPresentingSaveConfirm: Bool = false
|
||||
@State var initialLoad: Bool = true
|
||||
|
|
@ -302,7 +302,7 @@ struct SerialConfig: View {
|
|||
sc.timeout = UInt32(timeout)
|
||||
sc.mode = SerialModeTypes(rawValue: mode)!.protoEnumValue()
|
||||
|
||||
let adminMessageId = bleManager.saveSerialModuleConfig(config: sc, fromUser: node.user!, toUser: node.user!, wantResponse: true)
|
||||
let adminMessageId = bleManager.saveSerialModuleConfig(config: sc, fromUser: node!.user!, toUser: node!.user!, wantResponse: true)
|
||||
|
||||
if adminMessageId > 0 {
|
||||
|
||||
|
|
@ -329,13 +329,13 @@ struct SerialConfig: View {
|
|||
|
||||
self.bleManager.context = context
|
||||
|
||||
self.enabled = node.serialConfig?.enabled ?? false
|
||||
self.echo = node.serialConfig?.echo ?? false
|
||||
self.rxd = Int(node.serialConfig?.rxd ?? 0)
|
||||
self.txd = Int(node.serialConfig?.txd ?? 0)
|
||||
self.baudRate = Int(node.serialConfig?.baudRate ?? 0)
|
||||
self.timeout = Int(node.serialConfig?.timeout ?? 0)
|
||||
self.mode = Int(node.serialConfig?.mode ?? 0)
|
||||
self.enabled = node!.serialConfig?.enabled ?? false
|
||||
self.echo = node!.serialConfig?.echo ?? false
|
||||
self.rxd = Int(node!.serialConfig?.rxd ?? 0)
|
||||
self.txd = Int(node!.serialConfig?.txd ?? 0)
|
||||
self.baudRate = Int(node!.serialConfig?.baudRate ?? 0)
|
||||
self.timeout = Int(node!.serialConfig?.timeout ?? 0)
|
||||
self.mode = Int(node!.serialConfig?.mode ?? 0)
|
||||
|
||||
self.hasChanges = false
|
||||
self.initialLoad = false
|
||||
|
|
@ -343,31 +343,31 @@ struct SerialConfig: View {
|
|||
}
|
||||
.onChange(of: enabled) { newEnabled in
|
||||
|
||||
if newEnabled != node.serialConfig!.enabled { hasChanges = true }
|
||||
if newEnabled != node!.serialConfig!.enabled { hasChanges = true }
|
||||
}
|
||||
.onChange(of: echo) { newEcho in
|
||||
|
||||
if newEcho != node.serialConfig!.echo { hasChanges = true }
|
||||
if newEcho != node!.serialConfig!.echo { hasChanges = true }
|
||||
}
|
||||
.onChange(of: rxd) { newRxd in
|
||||
|
||||
if newRxd != node.serialConfig!.rxd { hasChanges = true }
|
||||
if newRxd != node!.serialConfig!.rxd { hasChanges = true }
|
||||
}
|
||||
.onChange(of: txd) { newTxd in
|
||||
|
||||
if newTxd != node.serialConfig!.txd { hasChanges = true }
|
||||
if newTxd != node!.serialConfig!.txd { hasChanges = true }
|
||||
}
|
||||
.onChange(of: baudRate) { newBaud in
|
||||
|
||||
if newBaud != node.serialConfig!.baudRate { hasChanges = true }
|
||||
if newBaud != node!.serialConfig!.baudRate { hasChanges = true }
|
||||
}
|
||||
.onChange(of: timeout) { newTimeout in
|
||||
|
||||
if newTimeout != node.serialConfig!.timeout { hasChanges = true }
|
||||
if newTimeout != node!.serialConfig!.timeout { hasChanges = true }
|
||||
}
|
||||
.onChange(of: mode) { newMode in
|
||||
|
||||
if newMode != node.serialConfig!.mode { hasChanges = true }
|
||||
if newMode != node!.serialConfig!.mode { hasChanges = true }
|
||||
}
|
||||
.navigationViewStyle(StackNavigationViewStyle())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ struct TelemetryConfig: View {
|
|||
@Environment(\.managedObjectContext) var context
|
||||
@EnvironmentObject var bleManager: BLEManager
|
||||
|
||||
var node: NodeInfoEntity
|
||||
var node: NodeInfoEntity?
|
||||
|
||||
@State private var isPresentingSaveConfirm: Bool = false
|
||||
@State var initialLoad: Bool = true
|
||||
|
|
@ -289,7 +289,7 @@ struct TelemetryConfig: View {
|
|||
|
||||
Label("Save", systemImage: "square.and.arrow.down")
|
||||
}
|
||||
.disabled(bleManager.connectedPeripheral == nil || !hasChanges || !(node.myInfo?.hasWifi ?? false))
|
||||
.disabled(bleManager.connectedPeripheral == nil || !hasChanges)
|
||||
.buttonStyle(.bordered)
|
||||
.buttonBorderShape(.capsule)
|
||||
.controlSize(.large)
|
||||
|
|
@ -311,7 +311,7 @@ struct TelemetryConfig: View {
|
|||
tc.environmentRecoveryInterval = UInt32(environmentRecoveryInterval)
|
||||
tc.environmentReadErrorCountThreshold = UInt32(environmentReadErrorCountThreshold)
|
||||
|
||||
let adminMessageId = bleManager.saveTelemetryModuleConfig(config: tc, fromUser: node.user!, toUser: node.user!, wantResponse: true)
|
||||
let adminMessageId = bleManager.saveTelemetryModuleConfig(config: tc, fromUser: node!.user!, toUser: node!.user!, wantResponse: true)
|
||||
|
||||
if adminMessageId > 0 {
|
||||
|
||||
|
|
@ -338,14 +338,14 @@ struct TelemetryConfig: View {
|
|||
|
||||
self.bleManager.context = context
|
||||
|
||||
self.deviceUpdateInterval = Int(node.telemetryConfig?.deviceUpdateInterval ?? 0)
|
||||
self.environmentUpdateInterval = Int(node.telemetryConfig?.environmentUpdateInterval ?? 0)
|
||||
self.environmentMeasurementEnabled = node.telemetryConfig?.environmentMeasurementEnabled ?? false
|
||||
self.environmentSensorType = Int(node.telemetryConfig?.environmentSensorType ?? 0)
|
||||
self.environmentScreenEnabled = node.telemetryConfig?.environmentScreenEnabled ?? false
|
||||
self.environmentDisplayFahrenheit = node.telemetryConfig?.environmentDisplayFahrenheit ?? false
|
||||
self.environmentRecoveryInterval = Int(node.telemetryConfig?.environmentRecoveryInterval ?? 0)
|
||||
self.environmentReadErrorCountThreshold = Int(node.telemetryConfig?.environmentReadErrorCountThreshold ?? 0)
|
||||
self.deviceUpdateInterval = Int(node!.telemetryConfig?.deviceUpdateInterval ?? 0)
|
||||
self.environmentUpdateInterval = Int(node!.telemetryConfig?.environmentUpdateInterval ?? 0)
|
||||
self.environmentMeasurementEnabled = node!.telemetryConfig?.environmentMeasurementEnabled ?? false
|
||||
self.environmentSensorType = Int(node!.telemetryConfig?.environmentSensorType ?? 0)
|
||||
self.environmentScreenEnabled = node!.telemetryConfig?.environmentScreenEnabled ?? false
|
||||
self.environmentDisplayFahrenheit = node!.telemetryConfig?.environmentDisplayFahrenheit ?? false
|
||||
self.environmentRecoveryInterval = Int(node!.telemetryConfig?.environmentRecoveryInterval ?? 0)
|
||||
self.environmentReadErrorCountThreshold = Int(node!.telemetryConfig?.environmentReadErrorCountThreshold ?? 0)
|
||||
|
||||
self.hasChanges = false
|
||||
self.initialLoad = false
|
||||
|
|
@ -353,35 +353,35 @@ struct TelemetryConfig: View {
|
|||
}
|
||||
.onChange(of: deviceUpdateInterval) { newDeviceInterval in
|
||||
|
||||
if newDeviceInterval != node.telemetryConfig!.deviceUpdateInterval { hasChanges = true }
|
||||
if newDeviceInterval != node!.telemetryConfig!.deviceUpdateInterval { hasChanges = true }
|
||||
}
|
||||
.onChange(of: environmentUpdateInterval) { newEnvInterval in
|
||||
|
||||
if newEnvInterval != node.telemetryConfig!.environmentUpdateInterval { hasChanges = true }
|
||||
if newEnvInterval != node!.telemetryConfig!.environmentUpdateInterval { hasChanges = true }
|
||||
}
|
||||
.onChange(of: environmentMeasurementEnabled) { newEnvEnabled in
|
||||
|
||||
if newEnvEnabled != node.telemetryConfig!.environmentMeasurementEnabled { hasChanges = true }
|
||||
if newEnvEnabled != node!.telemetryConfig!.environmentMeasurementEnabled { hasChanges = true }
|
||||
}
|
||||
.onChange(of: environmentSensorType) { newEnvSensorType in
|
||||
|
||||
if newEnvSensorType != node.telemetryConfig!.environmentSensorType { hasChanges = true }
|
||||
if newEnvSensorType != node!.telemetryConfig!.environmentSensorType { hasChanges = true }
|
||||
}
|
||||
.onChange(of: environmentScreenEnabled) { newEnvScreenEnabled in
|
||||
|
||||
if newEnvScreenEnabled != node.telemetryConfig!.environmentScreenEnabled { hasChanges = true }
|
||||
if newEnvScreenEnabled != node!.telemetryConfig!.environmentScreenEnabled { hasChanges = true }
|
||||
}
|
||||
.onChange(of: environmentDisplayFahrenheit) { newEnvDisplayF in
|
||||
|
||||
if newEnvDisplayF != node.telemetryConfig!.environmentDisplayFahrenheit { hasChanges = true }
|
||||
if newEnvDisplayF != node!.telemetryConfig!.environmentDisplayFahrenheit { hasChanges = true }
|
||||
}
|
||||
.onChange(of: environmentRecoveryInterval) { newEnvRecoveryInterval in
|
||||
|
||||
if newEnvRecoveryInterval != node.telemetryConfig!.environmentRecoveryInterval { hasChanges = true }
|
||||
if newEnvRecoveryInterval != node!.telemetryConfig!.environmentRecoveryInterval { hasChanges = true }
|
||||
}
|
||||
.onChange(of: environmentReadErrorCountThreshold) { newEnvReadErrorCountThreshold in
|
||||
|
||||
if newEnvReadErrorCountThreshold != node.telemetryConfig!.environmentReadErrorCountThreshold { hasChanges = true }
|
||||
if newEnvReadErrorCountThreshold != node!.telemetryConfig!.environmentReadErrorCountThreshold { hasChanges = true }
|
||||
}
|
||||
.navigationViewStyle(StackNavigationViewStyle())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue