aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2018-10-23 17:23:46 +0530
committerRoopesh Chander <roop@roopc.net>2018-10-27 15:13:01 +0530
commit05efb453f3825415d6dbd9f6cc8e6adfaafc4fc2 (patch)
tree1939f32265e7c81ca66aaac5a069a11afc1a6856 /WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift
parentModel: Use DNSServer in the Configuration model (diff)
downloadwireguard-apple-05efb453f3825415d6dbd9f6cc8e6adfaafc4fc2.tar.xz
wireguard-apple-05efb453f3825415d6dbd9f6cc8e6adfaafc4fc2.zip
Tunnel creation: Saving a configuration
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift')
-rw-r--r--WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift29
1 files changed, 27 insertions, 2 deletions
diff --git a/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift b/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift
index 9a239c5..a98ae81 100644
--- a/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift
+++ b/WireGuard/WireGuard/UI/iOS/TunnelEditTableViewController.swift
@@ -25,9 +25,11 @@ class TunnelEditTableViewController: UITableViewController {
.deletePeer]
]
+ let tunnelsManager: TunnelsManager
let tunnelViewModel: TunnelViewModel
- init() {
+ init(tunnelsManager tm: TunnelsManager) {
+ tunnelsManager = tm
tunnelViewModel = TunnelViewModel(tunnelConfiguration: nil)
super.init(style: .grouped)
self.modalPresentationStyle = .formSheet
@@ -52,12 +54,35 @@ class TunnelEditTableViewController: UITableViewController {
}
@objc func saveTapped() {
- print("Save")
+ self.tableView.endEditing(false)
+ let tunnelSaveResult = tunnelViewModel.save()
+ switch (tunnelSaveResult) {
+ case .error(let errorMessage):
+ let erroringConfiguration = (tunnelViewModel.interfaceData.validatedConfiguration == nil) ? "Interface" : "Peer"
+ showErrorAlert(title: "Invalid \(erroringConfiguration)", message: errorMessage)
+ case .saved(let tunnelConfiguration):
+ tunnelsManager.add(tunnelConfiguration: tunnelConfiguration) { [weak self] (error) in
+ if let error = error {
+ print("Could not save: \(error)")
+ self?.showErrorAlert(title: "Could not save", message: "Internal error")
+ } else {
+ self?.dismiss(animated: true, completion: nil)
+ }
+ }
+ }
}
@objc func cancelTapped() {
dismiss(animated: true, completion: nil)
}
+
+ func showErrorAlert(title: String, message: String) {
+ let okAction = UIAlertAction(title: "Ok", style: .default)
+ let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
+ alert.addAction(okAction)
+
+ self.present(alert, animated: true, completion: nil)
+ }
}
// MARK: UITableViewDataSource