From 88c80d6694c55b3d521f7de4fb63391676d60185 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Sun, 19 May 2019 03:04:23 +0530 Subject: iOS: Refactor showing of the tunnel detail Signed-off-by: Roopesh Chander --- .../UI/iOS/ViewController/MainViewController.swift | 15 +++--------- .../TunnelsListTableViewController.swift | 27 +++++++++++++++++----- 2 files changed, 24 insertions(+), 18 deletions(-) (limited to 'WireGuard/WireGuard') 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) { -- cgit v1.2.3-59-g8ed1b