]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
iOS: Refactor showing of the tunnel detail
authorRoopesh Chander <roop@roopc.net>
Sat, 18 May 2019 21:34:23 +0000 (03:04 +0530)
committerJason A. Donenfeld <Jason@zx2c4.com>
Sat, 25 May 2019 11:24:01 +0000 (13:24 +0200)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift
WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift

index 1929c793f47b1c06acb9f5a378ff16648365f957..c61302beae7f107cc9461c9ae56f26676f1c5fdd 100644 (file)
@@ -90,19 +90,10 @@ extension MainViewController {
 
     func showTunnelDetailForTunnel(named tunnelName: String, animated: Bool, shouldToggleStatus: Bool) {
         let showTunnelDetailBlock: (TunnelsManager) -> Void = { [weak self] tunnelsManager in
+            guard let self = self else { return }
+            guard let tunnelsListVC = self.tunnelsListVC else { return }
             if let tunnel = tunnelsManager.tunnel(named: tunnelName) {
-                let tunnelDetailVC = TunnelDetailTableViewController(tunnelsManager: tunnelsManager, tunnel: tunnel)
-                let tunnelDetailNC = UINavigationController(rootViewController: tunnelDetailVC)
-                tunnelDetailNC.restorationIdentifier = "DetailNC"
-                if let self = self {
-                    if animated {
-                        self.showDetailViewController(tunnelDetailNC, sender: self)
-                    } else {
-                        UIView.performWithoutAnimation {
-                            self.showDetailViewController(tunnelDetailNC, sender: self)
-                        }
-                    }
-                }
+                tunnelsListVC.showTunnelDetail(for: tunnel, animated: false)
                 if shouldToggleStatus {
                     if tunnel.status == .inactive {
                         tunnelsManager.startActivation(of: tunnel)
index eda1ffac135345ea452d921846516f68e16ccf6f..8c40438ef14dd44767fbc6500e61258809e99d88 100644 (file)
@@ -251,6 +251,26 @@ class TunnelsListTableViewController: UIViewController {
             }
         }
     }
+
+    func showTunnelDetail(for tunnel: TunnelContainer, animated: Bool) {
+        guard let tunnelsManager = tunnelsManager else { return }
+        guard let splitViewController = splitViewController else { return }
+
+        if detailDisplayedTunnel != tunnel {
+            let tunnelDetailVC = TunnelDetailTableViewController(tunnelsManager: tunnelsManager,
+                                                                 tunnel: tunnel)
+            let tunnelDetailNC = UINavigationController(rootViewController: tunnelDetailVC)
+            tunnelDetailNC.restorationIdentifier = "DetailNC"
+            if animated {
+                splitViewController.showDetailViewController(tunnelDetailNC, sender: self)
+            } else {
+                UIView.performWithoutAnimation {
+                    splitViewController.showDetailViewController(tunnelDetailNC, sender: self)
+                }
+            }
+            detailDisplayedTunnel = tunnel
+        }
+    }
 }
 
 extension TunnelsListTableViewController: UIDocumentPickerDelegate {
@@ -309,12 +329,7 @@ extension TunnelsListTableViewController: UITableViewDelegate {
         }
         guard let tunnelsManager = tunnelsManager else { return }
         let tunnel = tunnelsManager.tunnel(at: indexPath.row)
-        let tunnelDetailVC = TunnelDetailTableViewController(tunnelsManager: tunnelsManager,
-                                                             tunnel: tunnel)
-        let tunnelDetailNC = UINavigationController(rootViewController: tunnelDetailVC)
-        tunnelDetailNC.restorationIdentifier = "DetailNC"
-        showDetailViewController(tunnelDetailNC, sender: self) // Shall get propagated up to the split-vc
-        detailDisplayedTunnel = tunnel
+        showTunnelDetail(for: tunnel, animated: true)
     }
 
     func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {