diff --git a/Meshtastic/Extensions/Float.swift b/Meshtastic/Extensions/Float.swift index bd217833..131c45e4 100644 --- a/Meshtastic/Extensions/Float.swift +++ b/Meshtastic/Extensions/Float.swift @@ -11,7 +11,7 @@ extension Float { func formattedTemperature() -> String { let temperature = Measurement(value: Double(self), unit: .celsius) - return temperature.formatted(.measurement(width: .abbreviated, usage: .weather)) + return temperature.formatted(.measurement(width: .narrow, usage: .weather)) } func localeTemperature() -> Double { let temperature = Measurement(value: Double(self), unit: .celsius) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index d4528061..b093c3aa 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -562,7 +562,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate // Module Config if decodedInfo.moduleConfig.isInitialized && !invalidVersion && self.connectedPeripheral?.num != 0{ nowKnown = true - moduleConfig(config: decodedInfo.moduleConfig, context: context!, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral.num), nodeLongName: self.connectedPeripheral.longName) + moduleConfig(config: decodedInfo.moduleConfig, context: context!, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral?.num ?? 0), nodeLongName: self.connectedPeripheral.longName) if decodedInfo.moduleConfig.payloadVariant == ModuleConfig.OneOf_PayloadVariant.cannedMessage(decodedInfo.moduleConfig.cannedMessage) { if decodedInfo.moduleConfig.cannedMessage.enabled { _ = self.getCannedMessageModuleMessages(destNum: self.connectedPeripheral.num, wantResponse: true) diff --git a/Meshtastic/Views/Bluetooth/Connect.swift b/Meshtastic/Views/Bluetooth/Connect.swift index 1440c56a..abf933a6 100644 --- a/Meshtastic/Views/Bluetooth/Connect.swift +++ b/Meshtastic/Views/Bluetooth/Connect.swift @@ -213,18 +213,12 @@ struct Connect: View { Button("Connect to new radio?", role: .destructive) { UserDefaults.preferredPeripheralId = selectedPeripherialId + UserDefaults.preferredPeripheralNum = 0 if bleManager.connectedPeripheral != nil && bleManager.connectedPeripheral.peripheral.state == CBPeripheralState.connected { bleManager.disconnectPeripheral() } - - do { - clearCoreDataDatabase(context: context) - PersistenceController.shared.clearDatabase() - context.reset() - UserDefaults.standard.reset() - } catch let error { - print("💣 Failed to re-create CoreData database: " + error.localizedDescription) - } + clearCoreDataDatabase(context: context) + UserDefaults.standard.reset() let radio = bleManager.peripherals.first(where: { $0.peripheral.identifier.uuidString == selectedPeripherialId }) if radio != nil { diff --git a/Meshtastic/Views/Settings/Settings.swift b/Meshtastic/Views/Settings/Settings.swift index d9d6f598..99dfe757 100644 --- a/Meshtastic/Views/Settings/Settings.swift +++ b/Meshtastic/Views/Settings/Settings.swift @@ -311,8 +311,17 @@ struct Settings: View { } } } + .onChange(of: UserDefaults.preferredPeripheralNum ) { newConnectedNode in + if nodes.count > 1 { + if selectedNode == 0 { + self.selectedNode = Int(bleManager.connectedPeripheral != nil ? newConnectedNode : 0) + } + } else { + self.selectedNode = Int(bleManager.connectedPeripheral != nil ? newConnectedNode: 0) + } + } .onAppear { - if self.preferredNodeNum == 0 { + if self.preferredNodeNum <= 0 { self.preferredNodeNum = UserDefaults.preferredPeripheralNum if nodes.count > 1 { if selectedNode == 0 {