From: Roopesh Chander Date: Sat, 18 May 2019 21:34:23 +0000 (+0530) Subject: iOS: Refactor showing of the tunnel detail X-Git-Tag: 0.0.20190531-9~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=88c80d6694c55b3d521f7de4fb63391676d60185;p=thirdparty%2Fwireguard-apple.git iOS: Refactor showing of the tunnel detail Signed-off-by: Roopesh Chander --- 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) {