diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index cb8608bd..e0870401 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -317,6 +317,12 @@ func nodeInfoPacket (nodeInfo: NodeInfo, channel: UInt32, context: NSManagedObje newUser.pkiEncrypted = true newUser.publicKey = nodeInfo.user.publicKey } + let roles: [Int32] = [2, 4, 5, 6, 7, 10, 11] + if roles.contains(Int32(newUser.role)) { + newUser.unmessagable = true + } else { + newUser.unmessagable = false + } newNode.user = newUser } else if nodeInfo.num > Constants.minimumNodeNum { let newUser = createUser(num: Int64(nodeInfo.num), context: context) @@ -389,6 +395,12 @@ func nodeInfoPacket (nodeInfo: NodeInfo, channel: UInt32, context: NSManagedObje fetchedNode[0].user!.role = Int32(nodeInfo.user.role.rawValue) fetchedNode[0].user!.hwModel = String(describing: nodeInfo.user.hwModel).uppercased() fetchedNode[0].user!.hwModelId = Int32(nodeInfo.user.hwModel.rawValue) + let roles: [Int32] = [-1, 2, 4, 5, 6, 7, 10, 11] + if roles.contains(Int32(fetchedNode[0].user?.role ?? -1)) { + fetchedNode[0].user!.unmessagable = true + } else { + fetchedNode[0].user!.unmessagable = false + } Task { Api().loadDeviceHardwareData { (hw) in let dh = hw.first(where: { $0.hwModel == fetchedNode[0].user!.hwModelId }) diff --git a/Meshtastic/Persistence/UpdateCoreData.swift b/Meshtastic/Persistence/UpdateCoreData.swift index d7d25a9d..2daa8d2b 100644 --- a/Meshtastic/Persistence/UpdateCoreData.swift +++ b/Meshtastic/Persistence/UpdateCoreData.swift @@ -187,8 +187,8 @@ func upsertNodeInfoPacket (packet: MeshPacket, context: NSManagedObjectContext) newUser.unmessagable = newUserMessage.isUnmessagable } else { // For older firmare make Repeater, Router, Router Late, Sensor, Tracker, TAK, and TAK Tracker unmessagable - let roles: [Int32] = [4, 2, 11, 6, 7, 10] - if roles.contains(newUser.role) { + let roles: [Int32] = [2, 4, 5, 6, 7, 10, 11] + if roles.contains(Int32(newUser.role)) { newUser.unmessagable = true } else { newUser.unmessagable = false @@ -294,8 +294,8 @@ func upsertNodeInfoPacket (packet: MeshPacket, context: NSManagedObjectContext) fetchedNode[0].user!.unmessagable = nodeInfoMessage.user.isUnmessagable } else { // For older firmare make Repeater, Router, Router Late, Sensor, Tracker, TAK, and TAK Tracker unmessagable - let roles: [Int32] = [-1, 4, 2, 11, 6, 7, 10] - if roles.contains(fetchedNode[0].user?.role ?? -1) { + let roles: [Int32] = [-1, 2, 4, 5, 6, 7, 10, 11] + if roles.contains(Int32(fetchedNode[0].user?.role ?? -1)) { fetchedNode[0].user!.unmessagable = true } else { fetchedNode[0].user!.unmessagable = false