]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Disable save button if the syntax highlighter detects any errors
authorRoopesh Chander <roop@roopc.net>
Tue, 22 Jan 2019 07:27:27 +0000 (12:57 +0530)
committerRoopesh Chander <roop@roopc.net>
Tue, 22 Jan 2019 07:27:32 +0000 (12:57 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard/UI/macOS/View/ConfTextView.swift
WireGuard/WireGuard/UI/macOS/ViewController/TunnelEditViewController.swift

index bf0f8223440be8494aee5a69c51ed6662fb3cb0a..bc019f823e5367048ec9fccc94d70f51e58f61e5 100644 (file)
@@ -7,7 +7,7 @@ class ConfTextView: NSTextView {
 
     private let confTextStorage = ConfTextStorage()
 
-    var hasError: Bool { return confTextStorage.hasError }
+    @objc dynamic var hasError: Bool = false
     @objc dynamic var privateKeyString: String?
 
     override var string: String {
@@ -58,6 +58,9 @@ extension ConfTextView: NSTextViewDelegate {
 
     func textDidChange(_ notification: Notification) {
         confTextStorage.highlightSyntax()
+        if hasError != confTextStorage.hasError {
+            hasError = confTextStorage.hasError
+        }
         if privateKeyString != confTextStorage.privateKeyString {
             privateKeyString = confTextStorage.privateKeyString
         }
index 7a6a4a06230afce844453e3a2366b70163b31436..27d60c7c0495befad962b120d332ec7754097581 100644 (file)
@@ -84,7 +84,8 @@ class TunnelEditViewController: NSViewController {
 
     weak var delegate: TunnelEditViewControllerDelegate?
 
-    var textViewObservationToken: AnyObject?
+    var privateKeyObservationToken: AnyObject?
+    var hasErrorObservationToken: AnyObject?
 
     init(tunnelsManager: TunnelsManager, tunnel: TunnelContainer?) {
         self.tunnelsManager = tunnelsManager
@@ -119,7 +120,7 @@ class TunnelEditViewController: NSViewController {
             textView.string = bootstrappingText
             selectedActivateOnDemandOption = .none
         }
-        textViewObservationToken = textView.observe(\.privateKeyString) { [weak publicKeyRow] textView, _ in
+        privateKeyObservationToken = textView.observe(\.privateKeyString) { [weak publicKeyRow] textView, _ in
             if let privateKeyString = textView.privateKeyString,
                 let privateKey = Data(base64Encoded: privateKeyString),
                 privateKey.count == TunnelConfiguration.keyLength {
@@ -129,6 +130,9 @@ class TunnelEditViewController: NSViewController {
                 publicKeyRow?.value = ""
             }
         }
+        hasErrorObservationToken = textView.observe(\.hasError) { [weak saveButton] textView, _ in
+            saveButton?.isEnabled = !textView.hasError
+        }
 
         onDemandRow.valueOptions = activateOnDemandOptions.map { TunnelViewModel.activateOnDemandOptionText(for: $0) }
         onDemandRow.selectedOptionIndex = activateOnDemandOptions.firstIndex(of: selectedActivateOnDemandOption)!