diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 7b237b2c..6e259c84 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -288,6 +288,12 @@ func nodeInfoPacket (nodeInfo: NodeInfo, channel: UInt32, context: NSManagedObje newUser.shortName = nodeInfo.user.shortName newUser.hwModel = String(describing: nodeInfo.user.hwModel).uppercased() newUser.hwModelId = Int32(nodeInfo.user.hwModel.rawValue) + Task { + Api().loadDeviceHardwareData { (hw) in + let dh = hw.first(where: { $0.hwModel == newUser.hwModelId }) + newUser.hwDisplayName = dh?.displayName + } + } newUser.isLicensed = nodeInfo.user.isLicensed newUser.role = Int32(nodeInfo.user.role.rawValue) newNode.user = newUser diff --git a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 42.xcdatamodel/contents b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 42.xcdatamodel/contents index bb7621d8..6b2eaa00 100644 --- a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 42.xcdatamodel/contents +++ b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 42.xcdatamodel/contents @@ -414,6 +414,7 @@ + diff --git a/Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift b/Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift index 34dcdece..69235f11 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift @@ -12,8 +12,6 @@ import MapKit struct NodeInfoItem: View { @ObservedObject var node: NodeInfoEntity - @State private var currentDevice: DeviceHardware? - @State private var deviceHardware: [DeviceHardware] = [] var modemPreset: ModemPresets = ModemPresets( rawValue: UserDefaults.modemPreset @@ -30,7 +28,7 @@ struct NodeInfoItem: View { .aspectRatio(contentMode: .fit) .frame(width: 65, height: 65) .cornerRadius(5) - Text(String(currentDevice?.displayName ?? (node.user?.hwModel ?? "unset".localized))) + Text(String(node.user?.hwDisplayName ?? (node.user?.hwModel ?? "unset".localized))) .font(.callout) } else { Image(systemName: "person.crop.circle.badge.questionmark") @@ -42,30 +40,6 @@ struct NodeInfoItem: View { .font(.callout) } } - .onAppear(perform: { - if currentDevice == nil { - Api().loadDeviceHardwareData { (hw) in - for device in hw { - let currentHardware = node.user?.hwModel ?? "UNSET" - let deviceString = device.hwModelSlug.replacingOccurrences(of: "_", with: "") - if deviceString == currentHardware { - currentDevice = device - } - } - } - } - }) - .onChange(of: node) { newNode in - Api().loadDeviceHardwareData { (hw) in - for device in hw { - let currentHardware = newNode.user?.hwModel ?? "UNSET" - let deviceString = device.hwModelSlug.replacingOccurrences(of: "_", with: "") - if deviceString == currentHardware { - currentDevice = device - } - } - } - } } HStack(alignment: .center) { Spacer()