]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Tunnel list, detail: Deletion of tunnels
authorRoopesh Chander <roop@roopc.net>
Sun, 28 Oct 2018 23:25:50 +0000 (04:55 +0530)
committerRoopesh Chander <roop@roopc.net>
Mon, 29 Oct 2018 00:49:43 +0000 (06:19 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/iOS/TunnelDetailTableViewController.swift
WireGuard/WireGuard/UI/iOS/TunnelsListTableViewController.swift

index e3a4341c95164ec84d89a982e145c93f1b503951..c2e929e8832f4d1ec7c26ebd73d0489651597f0d 100644 (file)
@@ -60,6 +60,22 @@ class TunnelDetailTableViewController: UITableViewController {
 
         self.present(alert, animated: true, completion: nil)
     }
+
+    func showConfirmationAlert(message: String, buttonTitle: String, from sourceView: UIView,
+                               onConfirmed: @escaping (() -> Void)) {
+        let destroyAction = UIAlertAction(title: buttonTitle, style: .destructive) { (action) in
+            onConfirmed()
+        }
+        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel)
+        let alert = UIAlertController(title: "", message: message, preferredStyle: .actionSheet)
+        alert.addAction(destroyAction)
+        alert.addAction(cancelAction)
+
+        // popoverPresentationController will be nil on iPhone and non-nil on iPad
+        alert.popoverPresentationController?.sourceView = sourceView
+
+        self.present(alert, animated: true, completion: nil)
+    }
 }
 
 // MARK: TunnelEditTableViewControllerDelegate
@@ -213,8 +229,17 @@ extension TunnelDetailTableViewController {
             // Delete configuration
             let cell = tableView.dequeueReusableCell(withIdentifier: TunnelDetailTableViewButtonCell.id, for: indexPath) as! TunnelDetailTableViewButtonCell
             cell.buttonText = "Delete tunnel"
-            cell.onTapped = {
-                print("Delete peer unimplemented")
+            cell.onTapped = { [weak self] in
+                guard let s = self else { return }
+                s.tunnelsManager.remove(tunnel: s.tunnel) { (error) in
+                    if (error != nil) {
+                        print("Error removing tunnel: \(String(describing: error))")
+                        return
+                    }
+                    s.showConfirmationAlert(message: "Delete this tunnel?", buttonTitle: "Delete", from: cell) { [weak s] in
+                        s?.navigationController?.navigationController?.popToRootViewController(animated: true)
+                    }
+                }
             }
             return cell
         }
index b2b59445a542dde747063f565138693cec098599..eacd8967b030ec30932dc6ac56a3222c52315712 100644 (file)
@@ -263,6 +263,10 @@ extension TunnelsListTableViewController: TunnelsManagerDelegate {
     func tunnelsChanged() {
         tableView.reloadData()
     }
+
+    func tunnelRemoved(at index: Int) {
+        tableView.deleteRows(at: [IndexPath(row: index, section: 0)], with: .automatic)
+    }
 }
 
 class TunnelsListTableViewCell: UITableViewCell {