macOS: Edit view: Validate and save

This commit is contained in:
Roopesh Chander 2019-01-08 18:58:40 +05:30
parent 309d06217f
commit 3830499ac1
2 changed files with 30 additions and 1 deletions

View File

@ -257,6 +257,9 @@
"macEditDiscard" = "Discard";
"macEditSave" = "Save";
"macAlertNameIsEmpty" = "Name is required";
"macAlertDuplicateName (%@)" = "Another tunnel already exists with the name '%@'.";
"macAlertInvalidLine (%@)" = "Invalid line: '%@'.";
"macAlertNoInterface" = "Configuration must have an 'Interface' section.";

View File

@ -116,7 +116,33 @@ class TunnelEditViewController: NSViewController {
}
@objc func saveButtonClicked() {
print("saveButtonClicked")
let name = nameRow.value
guard !name.isEmpty else {
ErrorPresenter.showErrorAlert(title: tr("macAlertNameIsEmpty"), message: "", from: self)
return
}
if let tunnel = tunnel {
// We're modifying an existing tunnel
if name != tunnel.name && tunnelsManager.tunnel(named: name) != nil {
ErrorPresenter.showErrorAlert(title: tr(format: "macAlertDuplicateName (%@)", name), message: "", from: self)
return
}
do {
let tunnelConfiguration = try TunnelConfiguration(fromWgQuickConfig: textView.string, called: nameRow.value, ignoreUnrecognizedKeys: false)
let onDemandSetting = ActivateOnDemandSetting.defaultSetting
tunnelsManager.modify(tunnel: tunnel, tunnelConfiguration: tunnelConfiguration, activateOnDemandSetting: onDemandSetting) { [weak self] error in
if let error = error {
ErrorPresenter.showErrorAlert(error: error, from: self)
return
}
self?.dismiss(self)
}
} catch let error as WireGuardAppError {
ErrorPresenter.showErrorAlert(error: error, from: self)
} catch {
fatalError()
}
}
}
@objc func discardButtonClicked() {