diff --git a/Localizable.xcstrings b/Localizable.xcstrings index f5642a53..b0f415a3 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -5193,6 +5193,9 @@ }, "Delete Node" : { + }, + "Delete Node?" : { + }, "Description" : { diff --git a/Meshtastic/Views/Nodes/Helpers/Actions/DeleteNodeButton.swift b/Meshtastic/Views/Nodes/Helpers/Actions/DeleteNodeButton.swift index 247a4380..71c3a317 100644 --- a/Meshtastic/Views/Nodes/Helpers/Actions/DeleteNodeButton.swift +++ b/Meshtastic/Views/Nodes/Helpers/Actions/DeleteNodeButton.swift @@ -10,42 +10,55 @@ struct DeleteNodeButton: View { var connectedNode: NodeInfoEntity var node: NodeInfoEntity + + @Environment(\.dismiss) private var dismiss - @State - private var isPresentingAlert = false + @State private var isPresentingAlert = false - var body: some View { - Button(role: .destructive) { - isPresentingAlert = true - } label: { - Label { - Text("Delete Node") - } icon: { - Image(systemName: "trash") - .symbolRenderingMode(.multicolor) - } - } - .confirmationDialog( - "are.you.sure", - isPresented: $isPresentingAlert, - titleVisibility: .visible - ) { - Button("Delete Node", role: .destructive) { - guard let deleteNode = getNodeInfo( - id: node.num, - context: context - ) else { - Logger.data.error("Unable to find node info to delete node \(node.num)") - return + var body: some View { + if node.num != connectedNode.num { + Button(role: .destructive) { + isPresentingAlert = true + } label: { + Label { + Text("Delete Node") + } icon: { + Image(systemName: "trash") + .symbolRenderingMode(.multicolor) } - let success = bleManager.removeNode( - node: deleteNode, - connectedNodeNum: connectedNode.num - ) - if !success { - Logger.data.error("Failed to delete node \(deleteNode.user?.longName ?? "unknown".localized)") + } + .alert( + "are.you.sure", + isPresented: $isPresentingAlert + ) { + Button("OK") { }.keyboardShortcut(.defaultAction) + } message: { + Text("Delete Node?") + } + .confirmationDialog( + "are.you.sure", + isPresented: $isPresentingAlert, + titleVisibility: .visible + ) { + Button("Delete Node", role: .destructive) { + guard let deleteNode = getNodeInfo( + id: node.num, + context: context + ) else { + Logger.data.error("Unable to find node info to delete node \(node.num)") + return + } + let success = bleManager.removeNode( + node: deleteNode, + connectedNodeNum: connectedNode.num + ) + if !success { + Logger.data.error("Failed to delete node \(deleteNode.user?.longName ?? "unknown".localized)") + } else { + dismiss() + } } } } - } + } } diff --git a/Meshtastic/Views/Nodes/NodeList.swift b/Meshtastic/Views/Nodes/NodeList.swift index 4d7ec453..ac9aa65e 100644 --- a/Meshtastic/Views/Nodes/NodeList.swift +++ b/Meshtastic/Views/Nodes/NodeList.swift @@ -89,12 +89,12 @@ struct NodeList: View { bleManager: bleManager, node: node ) - DeleteNodeButton( - bleManager: bleManager, - context: context, - connectedNode: connectedNode, - node: node - ) +// DeleteNodeButton( +// bleManager: bleManager, +// context: context, +// connectedNode: connectedNode, +// node: node +// ) } }