From e7a5aa40f0ecd7c2d1e7a9e4f8b7dcb9ef6a58c6 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 20 Nov 2023 13:20:55 -0800 Subject: [PATCH] Group box for Position Altitude Chart on the node map Save Prefered node id so messages show up when not connected via ble --- Meshtastic/Extensions/UserDefaults.swift | 9 +++++++++ Meshtastic/Helpers/BLEManager.swift | 1 + Meshtastic/Views/Messages/ChannelMessageList.swift | 3 ++- Meshtastic/Views/Messages/Messages.swift | 2 +- .../Views/Nodes/Helpers/Map/PositionAltitudeChart.swift | 4 ++-- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Meshtastic/Extensions/UserDefaults.swift b/Meshtastic/Extensions/UserDefaults.swift index 07c230ad..1c9e21fd 100644 --- a/Meshtastic/Extensions/UserDefaults.swift +++ b/Meshtastic/Extensions/UserDefaults.swift @@ -12,6 +12,7 @@ extension UserDefaults { case enableRangeTest case meshtasticUsername case preferredPeripheralId + case preferredPeripheralNum case provideLocation case provideLocationInterval case mapLayer @@ -53,6 +54,14 @@ extension UserDefaults { UserDefaults.standard.set(newValue, forKey: "preferredPeripheralId") } } + static var preferredPeripheralNum: Int { + get { + UserDefaults.standard.integer(forKey: "preferredPeripheralNum") + } + set { + UserDefaults.standard.set(newValue, forKey: "preferredPeripheralNum") + } + } static var provideLocation: Bool { get { UserDefaults.standard.bool(forKey: "provideLocation") diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index aa88a530..07ef857a 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -486,6 +486,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate let myInfo = myInfoPacket(myInfo: decodedInfo.myInfo, peripheralId: self.connectedPeripheral.id, context: context!) if myInfo != nil { + UserDefaults.preferredPeripheralNum = Int(myInfo!.myNodeNum) connectedPeripheral.num = myInfo!.myNodeNum connectedPeripheral.name = myInfo?.bleName ?? "unknown".localized connectedPeripheral.longName = myInfo?.bleName ?? "unknown".localized diff --git a/Meshtastic/Views/Messages/ChannelMessageList.swift b/Meshtastic/Views/Messages/ChannelMessageList.swift index 49281d65..aa1b1a20 100644 --- a/Meshtastic/Views/Messages/ChannelMessageList.swift +++ b/Meshtastic/Views/Messages/ChannelMessageList.swift @@ -30,6 +30,7 @@ struct ChannelMessageList: View { @State private var deleteMessageId: Int64 = 0 @State private var replyMessageId: Int64 = 0 @State private var sendPositionWithMessage: Bool = false + @AppStorage("preferredPeripheralNum") private var preferredPeripheralNum = -1 var body: some View { VStack { @@ -39,7 +40,7 @@ struct ChannelMessageList: View { ScrollView { LazyVStack { ForEach( channel.allPrivateMessages ) { (message: MessageEntity) in - let currentUser: Bool = (bleManager.connectedPeripheral?.num ?? -1 == message.fromUser?.num ? true : false) + let currentUser: Bool = (Int64(preferredPeripheralNum) == message.fromUser?.num ? true : false) if message.replyID > 0 { let messageReply = channel.allPrivateMessages.first(where: { $0.messageId == message.replyID }) HStack { diff --git a/Meshtastic/Views/Messages/Messages.swift b/Meshtastic/Views/Messages/Messages.swift index 6c261dfd..879a361c 100644 --- a/Meshtastic/Views/Messages/Messages.swift +++ b/Meshtastic/Views/Messages/Messages.swift @@ -72,7 +72,7 @@ struct Messages: View { } if UserDefaults.preferredPeripheralId.count > 0 { let fetchNodeInfoRequest: NSFetchRequest = NSFetchRequest.init(entityName: "NodeInfoEntity") - fetchNodeInfoRequest.predicate = NSPredicate(format: "num == %lld", Int64(bleManager.connectedPeripheral?.num ?? -1)) + fetchNodeInfoRequest.predicate = NSPredicate(format: "num == %lld", Int64(UserDefaults.preferredPeripheralNum)) do { guard let fetchedNode = try context.fetch(fetchNodeInfoRequest) as? [NodeInfoEntity] else { return diff --git a/Meshtastic/Views/Nodes/Helpers/Map/PositionAltitudeChart.swift b/Meshtastic/Views/Nodes/Helpers/Map/PositionAltitudeChart.swift index de10f6a5..eba287e7 100644 --- a/Meshtastic/Views/Nodes/Helpers/Map/PositionAltitudeChart.swift +++ b/Meshtastic/Views/Nodes/Helpers/Map/PositionAltitudeChart.swift @@ -25,7 +25,8 @@ struct PositionAltitudeChart: View { var body: some View { let nodePositions = Array(node.positions!) as! [PositionEntity] let data = nodePositions.map { PositionAltitude(time: $0.time ?? Date(), altitude: Measurement(value: Double($0.altitude), unit: .meters) ) } - HStack { + GroupBox(label: Label("Altitude", systemImage: "mountain.2")) { + Chart(data, id: \.time) { LineMark( x: .value("Time", $0.time), @@ -56,7 +57,6 @@ struct PositionAltitudeChart: View { } .chartXAxis(.visible) } - .padding() .background(Color(UIColor.secondarySystemBackground)) .opacity(/*@START_MENU_TOKEN@*/0.8/*@END_MENU_TOKEN@*/) }