aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI/iOS/ViewController
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2019-01-23 15:45:24 +0530
committerRoopesh Chander <roop@roopc.net>2019-01-23 16:11:55 +0530
commit11e44f9ae5b2fa02164053089babb6b326f23634 (patch)
treeb12230b11f8dd63b383236a8cf20e52b53c153f8 /WireGuard/WireGuard/UI/iOS/ViewController
parentiOS: Fix handling of deletion outside app (diff)
downloadwireguard-apple-11e44f9ae5b2fa02164053089babb6b326f23634.tar.xz
wireguard-apple-11e44f9ae5b2fa02164053089babb6b326f23634.zip
iOS: Fix stale tunnel being shown on iPad
When the detail view is shown in the iPad and we delete the current tunnel with a list view swipe rather than the delete button, the detail view should go blank. Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard/UI/iOS/ViewController')
-rw-r--r--WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift8
-rw-r--r--WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift11
2 files changed, 7 insertions, 12 deletions
diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift
index 9531c17..867eda7 100644
--- a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift
+++ b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift
@@ -239,14 +239,6 @@ extension TunnelDetailTableViewController {
return
}
}
- if self.splitViewController?.isCollapsed != false {
- self.navigationController?.navigationController?.popToRootViewController(animated: true)
- } else {
- let detailVC = UIViewController()
- detailVC.view.backgroundColor = .white
- let detailNC = UINavigationController(rootViewController: detailVC)
- self.showDetailViewController(detailNC, sender: self)
- }
}
}
return cell
diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift
index 6a2f3a1..ccef4cd 100644
--- a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift
+++ b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelsListTableViewController.swift
@@ -31,6 +31,8 @@ class TunnelsListTableViewController: UIViewController {
return busyIndicator
}()
+ var detailDisplayedTunnel: TunnelContainer?
+
override func loadView() {
view = UIView()
view.backgroundColor = .white
@@ -217,6 +219,7 @@ extension TunnelsListTableViewController: UITableViewDelegate {
let tunnelDetailNC = UINavigationController(rootViewController: tunnelDetailVC)
tunnelDetailNC.restorationIdentifier = "DetailNC"
showDetailViewController(tunnelDetailNC, sender: self) // Shall get propagated up to the split-vc
+ detailDisplayedTunnel = tunnel
}
func tableView(_ tableView: UITableView,
@@ -251,19 +254,19 @@ extension TunnelsListTableViewController: TunnelsManagerListDelegate {
tableView.moveRow(at: IndexPath(row: oldIndex, section: 0), to: IndexPath(row: newIndex, section: 0))
}
- func tunnelRemoved(at index: Int) {
- let selectedIndex = tableView.indexPathForSelectedRow?.row
+ func tunnelRemoved(at index: Int, tunnel: TunnelContainer) {
tableView.deleteRows(at: [IndexPath(row: index, section: 0)], with: .automatic)
centeredAddButton.isHidden = tunnelsManager?.numberOfTunnels() ?? 0 > 0
- if let selectedIndex = selectedIndex, selectedIndex == index, let splitViewController = splitViewController {
+ if detailDisplayedTunnel == tunnel, let splitViewController = splitViewController {
if splitViewController.isCollapsed != false {
- (splitViewController.viewControllers[0] as? UINavigationController)?.popViewController(animated: false)
+ (splitViewController.viewControllers[0] as? UINavigationController)?.popToRootViewController(animated: false)
} else {
let detailVC = UIViewController()
detailVC.view.backgroundColor = .white
let detailNC = UINavigationController(rootViewController: detailVC)
splitViewController.showDetailViewController(detailNC, sender: self)
}
+ detailDisplayedTunnel = nil
if let presentedNavController = self.presentedViewController as? UINavigationController, presentedNavController.viewControllers.first is TunnelEditTableViewController {
self.presentedViewController?.dismiss(animated: false, completion: nil)
}