aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2019-05-19 03:04:23 +0530
committerJason A. Donenfeld <Jason@zx2c4.com>2019-05-25 13:24:01 +0200
commit88c80d6694c55b3d521f7de4fb63391676d60185 (patch)
tree8477e40b0b4ed707c80dbdf0f925b0941d51538c
parentiOS: Show Home screen quick actions for recent tunnels (diff)
downloadwireguard-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.swift15
-rw-r--r--WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift27
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) {