diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 1e911733..8e800b98 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1291,6 +1291,39 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate return 0 } + public func removeNode(node: NodeInfoEntity, connectedNodeNum: Int64) -> Bool { + var adminPacket = AdminMessage() + adminPacket.removeByNodenum = UInt32(node.num) + var meshPacket: MeshPacket = MeshPacket() + meshPacket.to = UInt32(connectedNodeNum) + meshPacket.id = UInt32.random(in: UInt32(UInt8.max).. Int64 { var adminPacket = AdminMessage() adminPacket.setHamMode = ham diff --git a/Meshtastic/Views/Nodes/NodeList.swift b/Meshtastic/Views/Nodes/NodeList.swift index c0df0167..a61b9269 100644 --- a/Meshtastic/Views/Nodes/NodeList.swift +++ b/Meshtastic/Views/Nodes/NodeList.swift @@ -83,6 +83,16 @@ struct NodeList: View { Label("Trace Route", systemImage: "signpost.right.and.left") } } + if bleManager.connectedPeripheral != nil { + Button (role: .destructive) { + let success = bleManager.removeNode(node: node, connectedNodeNum: Int64(connectedNodeNum)) + if !success { + print("Failed to delete node \(node.user?.longName ?? "unknown".localized)") + } + } label: { + Label("Delete Node", systemImage: "trash") + } + } } } .alert(