aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI/iOS
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2018-11-12 15:53:18 +0530
committerRoopesh Chander <roop@roopc.net>2018-11-12 19:24:13 +0530
commitabb0312d38333c662637617e7268fb51c4f49d7f (patch)
tree5bebe023c49811b64312b9d795039ed000a99aef /WireGuard/WireGuard/UI/iOS
parentTunnel view model: VPN-on-demand stuff shouldn't be part of the tunnel model (diff)
downloadwireguard-apple-abb0312d38333c662637617e7268fb51c4f49d7f.tar.xz
wireguard-apple-abb0312d38333c662637617e7268fb51c4f49d7f.zip
Tunnel edit: Update for VPN-on-demand changes
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard/UI/iOS')
-rw-r--r--WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift40
1 files changed, 26 insertions, 14 deletions
diff --git a/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift b/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift
index ed3dc83..f18fb14 100644
--- a/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift
+++ b/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift
@@ -26,8 +26,8 @@ class TunnelEditTableViewController: UITableViewController {
.deletePeer
]
- let activateOnDemandOptions: [ActivationType] = [
- .useOnDemandOverWifiAndCellular,
+ let activateOnDemandOptions: [ActivateOnDemandOption] = [
+ .useOnDemandOverWifiOrCellular,
.useOnDemandOverWifiOnly,
.useOnDemandOverCellularOnly
]
@@ -35,12 +35,14 @@ class TunnelEditTableViewController: UITableViewController {
let tunnelsManager: TunnelsManager
let tunnel: TunnelContainer?
let tunnelViewModel: TunnelViewModel
+ var activateOnDemandSetting: ActivateOnDemandSetting
init(tunnelsManager tm: TunnelsManager, tunnel t: TunnelContainer) {
// Use this initializer to edit an existing tunnel.
tunnelsManager = tm
tunnel = t
tunnelViewModel = TunnelViewModel(tunnelConfiguration: t.tunnelConfiguration())
+ activateOnDemandSetting = t.activateOnDemandSetting()
super.init(style: .grouped)
}
@@ -50,6 +52,7 @@ class TunnelEditTableViewController: UITableViewController {
tunnelsManager = tm
tunnel = nil
tunnelViewModel = TunnelViewModel(tunnelConfiguration: tunnelConfiguration)
+ activateOnDemandSetting = ActivateOnDemandSetting.defaultSetting
super.init(style: .grouped)
}
@@ -83,7 +86,9 @@ class TunnelEditTableViewController: UITableViewController {
case .saved(let tunnelConfiguration):
if let tunnel = tunnel {
// We're modifying an existing tunnel
- tunnelsManager.modify(tunnel: tunnel, with: tunnelConfiguration) { [weak self] (error) in
+ tunnelsManager.modify(tunnel: tunnel,
+ tunnelConfiguration: tunnelConfiguration,
+ activateOnDemandSetting: activateOnDemandSetting) { [weak self] (error) in
if let error = error {
ErrorPresenter.showErrorAlert(error: error, from: self)
} else {
@@ -93,7 +98,8 @@ class TunnelEditTableViewController: UITableViewController {
}
} else {
// We're adding a new tunnel
- tunnelsManager.add(tunnelConfiguration: tunnelConfiguration) { [weak self] (tunnel, error) in
+ tunnelsManager.add(tunnelConfiguration: tunnelConfiguration,
+ activateOnDemandSetting: activateOnDemandSetting) { [weak self] (tunnel, error) in
if let error = error {
ErrorPresenter.showErrorAlert(error: error, from: self)
} else {
@@ -149,10 +155,10 @@ extension TunnelEditTableViewController {
return 1
} else {
// On-Demand Rules
- if (tunnelViewModel.activationType == .activateManually) {
- return 1
- } else {
+ if (activateOnDemandSetting.isActivateOnDemandEnabled) {
return 4
+ } else {
+ return 1
}
}
}
@@ -385,15 +391,18 @@ extension TunnelEditTableViewController {
if (row == 0) {
let cell = tableView.dequeueReusableCell(withIdentifier: TunnelEditTableViewSwitchCell.id, for: indexPath) as! TunnelEditTableViewSwitchCell
cell.message = "Activate on demand"
- cell.isOn = (tunnelViewModel.activationType != .activateManually)
+ cell.isOn = activateOnDemandSetting.isActivateOnDemandEnabled
cell.onSwitchToggled = { [weak self] (isOn) in
guard let s = self else { return }
let indexPaths: [IndexPath] = (1 ..< 4).map { IndexPath(row: $0, section: section) }
if (isOn) {
- s.tunnelViewModel.activationType = .useOnDemandOverWifiAndCellular
+ s.activateOnDemandSetting.isActivateOnDemandEnabled = true
+ if (s.activateOnDemandSetting.activateOnDemandOption == .none) {
+ s.activateOnDemandSetting.activateOnDemandOption = s.tunnelViewModel.defaultActivateOnDemandOption()
+ }
s.tableView.insertRows(at: indexPaths, with: .automatic)
} else {
- s.tunnelViewModel.activationType = .activateManually
+ s.activateOnDemandSetting.isActivateOnDemandEnabled = false
s.tableView.deleteRows(at: indexPaths, with: .automatic)
}
}
@@ -401,9 +410,11 @@ extension TunnelEditTableViewController {
} else {
assert(row < 4)
let cell = tableView.dequeueReusableCell(withIdentifier: TunnelEditTableViewSelectionListCell.id, for: indexPath) as! TunnelEditTableViewSelectionListCell
- let option = activateOnDemandOptions[row - 1]
- cell.message = tunnelViewModel.activateOnDemandOptionText(for: option)
- cell.isChecked = (tunnelViewModel.activationType == option)
+ let rowOption = activateOnDemandOptions[row - 1]
+ let selectedOption = activateOnDemandSetting.activateOnDemandOption
+ assert(selectedOption != .none)
+ cell.message = tunnelViewModel.activateOnDemandOptionText(for: rowOption)
+ cell.isChecked = (selectedOption == rowOption)
return cell
}
}
@@ -475,7 +486,8 @@ extension TunnelEditTableViewController {
assert(row > 0)
let option = activateOnDemandOptions[row - 1]
- tunnelViewModel.activationType = option
+ assert(option != .none)
+ activateOnDemandSetting.activateOnDemandOption = option
let indexPaths: [IndexPath] = (1 ..< 4).map { IndexPath(row: $0, section: section) }
tableView.reloadRows(at: indexPaths, with: .automatic)