diff options
author | Roopesh Chander <roop@roopc.net> | 2019-05-19 03:04:23 +0530 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-05-25 13:24:01 +0200 |
commit | 88c80d6694c55b3d521f7de4fb63391676d60185 (patch) | |
tree | 8477e40b0b4ed707c80dbdf0f925b0941d51538c | |
parent | iOS: Show Home screen quick actions for recent tunnels (diff) | |
download | wireguard-apple-88c80d6694c55b3d521f7de4fb63391676d60185.tar.xz wireguard-apple-88c80d6694c55b3d521f7de4fb63391676d60185.zip |
iOS: Refactor showing of the tunnel detail
Signed-off-by: Roopesh Chander <roop@roopc.net>
-rw-r--r-- | WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift | 15 | ||||
-rw-r--r-- | WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift | 27 |
2 files changed, 24 insertions, 18 deletions
diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift index 1929c79..c61302b 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/MainViewController.swift @@ -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) diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift index eda1ffa..8c40438 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift @@ -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) { |