macOS: Update detail view after editing

Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
Roopesh Chander 2019-01-09 00:52:11 +05:30
parent 80977b95de
commit fc9e2de72c
2 changed files with 21 additions and 0 deletions

View File

@ -192,6 +192,7 @@ class TunnelDetailTableViewController: NSViewController {
@objc func editButtonClicked() { @objc func editButtonClicked() {
let tunnelEditVC = TunnelEditViewController(tunnelsManager: tunnelsManager, tunnel: tunnel) let tunnelEditVC = TunnelEditViewController(tunnelsManager: tunnelsManager, tunnel: tunnel)
tunnelEditVC.delegate = self
presentAsSheet(tunnelEditVC) presentAsSheet(tunnelEditVC)
} }
@ -234,3 +235,14 @@ extension TunnelDetailTableViewController: NSTableViewDelegate {
} }
} }
} }
extension TunnelDetailTableViewController: TunnelEditViewControllerDelegate {
func tunnelSaved(tunnel: TunnelContainer) {
tunnelViewModel = TunnelViewModel(tunnelConfiguration: tunnel.tunnelConfiguration)
tableView.reloadData()
}
func tunnelEditingCancelled() {
// Nothing to do
}
}

View File

@ -3,6 +3,11 @@
import Cocoa import Cocoa
protocol TunnelEditViewControllerDelegate: class {
func tunnelSaved(tunnel: TunnelContainer)
func tunnelEditingCancelled()
}
class TunnelEditViewController: NSViewController { class TunnelEditViewController: NSViewController {
let nameRow: EditableKeyValueRow = { let nameRow: EditableKeyValueRow = {
@ -62,6 +67,8 @@ class TunnelEditViewController: NSViewController {
let tunnelsManager: TunnelsManager let tunnelsManager: TunnelsManager
let tunnel: TunnelContainer? let tunnel: TunnelContainer?
weak var delegate: TunnelEditViewControllerDelegate?
var textViewObservationToken: AnyObject? var textViewObservationToken: AnyObject?
init(tunnelsManager: TunnelsManager, tunnel: TunnelContainer?) { init(tunnelsManager: TunnelsManager, tunnel: TunnelContainer?) {
@ -149,6 +156,7 @@ class TunnelEditViewController: NSViewController {
return return
} }
self?.dismiss(self) self?.dismiss(self)
self?.delegate?.tunnelSaved(tunnel: tunnel)
} }
} catch let error as WireGuardAppError { } catch let error as WireGuardAppError {
ErrorPresenter.showErrorAlert(error: error, from: self) ErrorPresenter.showErrorAlert(error: error, from: self)
@ -159,6 +167,7 @@ class TunnelEditViewController: NSViewController {
} }
@objc func discardButtonClicked() { @objc func discardButtonClicked() {
delegate?.tunnelEditingCancelled()
dismiss(self) dismiss(self)
} }
} }