]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Tunnel editing: Modifying a tunnel configuration
authorRoopesh Chander <roop@roopc.net>
Wed, 24 Oct 2018 11:49:14 +0000 (17:19 +0530)
committerRoopesh Chander <roop@roopc.net>
Sat, 27 Oct 2018 09:43:01 +0000 (15:13 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/iOS/TunnelDetailTableViewController.swift
WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift

index 87e1b628bd6d52f865052b3b55ff211f99f98c33..18a2fe3e9004c54caa491800b112c0aba2c882ad 100644 (file)
@@ -20,7 +20,7 @@ class TunnelDetailTableViewController: UITableViewController {
 
     let tunnelsManager: TunnelsManager
     let tunnel: TunnelContainer
-    let tunnelViewModel: TunnelViewModel
+    var tunnelViewModel: TunnelViewModel
 
     init(tunnelsManager tm: TunnelsManager, tunnel t: TunnelContainer) {
         tunnelsManager = tm
@@ -44,7 +44,19 @@ class TunnelDetailTableViewController: UITableViewController {
     }
 
     @objc func editTapped() {
-        print("Edit")
+        let editVC = TunnelEditTableViewController(tunnelsManager: tunnelsManager, tunnel: tunnel)
+        editVC.delegate = self
+        let editNC = UINavigationController(rootViewController: editVC)
+        present(editNC, animated: true)
+    }
+}
+
+// MARK: TunnelEditTableViewControllerDelegate
+
+extension TunnelDetailTableViewController: TunnelEditTableViewControllerDelegate {
+    func saved(tunnel: TunnelContainer) {
+        tunnelViewModel = TunnelViewModel(tunnelConfiguration: tunnel.tunnelProvider.tunnelConfiguration)
+        self.tableView.reloadData()
     }
 }
 
index 6be42b8a2dd9ee521004eaa10fd5f6b5eaac04c7..2543444254169bcd8d53e7046d9f22ceec94225b 100644 (file)
@@ -63,13 +63,27 @@ class TunnelEditTableViewController: UITableViewController {
             let erroringConfiguration = (tunnelViewModel.interfaceData.validatedConfiguration == nil) ? "Interface" : "Peer"
             showErrorAlert(title: "Invalid \(erroringConfiguration)", message: errorMessage)
         case .saved(let tunnelConfiguration):
-            tunnelsManager.add(tunnelConfiguration: tunnelConfiguration) { [weak self] (tunnel, error) in
-                if let error = error {
-                    print("Could not save: \(error)")
-                    self?.showErrorAlert(title: "Could not save", message: "Internal error")
-                } else {
-                    self?.delegate?.saved(tunnel: tunnel)
-                    self?.dismiss(animated: true, completion: nil)
+            if let tunnel = tunnel {
+                // We're modifying an existing tunnel
+                tunnelsManager.modify(tunnel: tunnel, with: tunnelConfiguration) { [weak self] (error) in
+                    if let error = error {
+                        print("Could not modify tunnel: \(error)")
+                        self?.showErrorAlert(title: "Could not save", message: "Internal error")
+                    } else {
+                        self?.delegate?.saved(tunnel: tunnel)
+                        self?.dismiss(animated: true, completion: nil)
+                    }
+                }
+            } else {
+                // We're adding a new tunnel
+                tunnelsManager.add(tunnelConfiguration: tunnelConfiguration) { [weak self] (tunnel, error) in
+                    if let error = error {
+                        print("Could not add tunnel: \(error)")
+                        self?.showErrorAlert(title: "Could not save", message: "Internal error")
+                    } else {
+                        self?.delegate?.saved(tunnel: tunnel)
+                        self?.dismiss(animated: true, completion: nil)
+                    }
                 }
             }
         }