From: Jason A. Donenfeld Date: Wed, 23 Jan 2019 23:33:22 +0000 (+0100) Subject: macOS: show runtime configuration in tunnel manager X-Git-Tag: 0.0.20190207-1~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2fe9f83ba52043b70d803d329b368bb169043a1a;p=thirdparty%2Fwireguard-apple.git macOS: show runtime configuration in tunnel manager Signed-off-by: Jason A. Donenfeld --- diff --git a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelDetailTableViewController.swift b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelDetailTableViewController.swift index 6c3a0e9..6a9aff1 100644 --- a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelDetailTableViewController.swift +++ b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelDetailTableViewController.swift @@ -37,7 +37,8 @@ class TunnelDetailTableViewController: NSViewController { let peerFields: [TunnelViewModel.PeerField] = [ .publicKey, .preSharedKey, .endpoint, - .allowedIPs, .persistentKeepAlive + .allowedIPs, .persistentKeepAlive, + .rxBytes, .txBytes, .lastHandshakeTime ] let tableView: NSTableView = { @@ -96,6 +97,8 @@ class TunnelDetailTableViewController: NSViewController { statusObservationToken = tunnel.observe(\TunnelContainer.status) { [weak self] _, _ in self?.updateStatus() } + + // TODO(roopc): call reloadRuntimeConfiguration() once per second } required init?(coder: NSCoder) { @@ -196,6 +199,7 @@ class TunnelDetailTableViewController: NSViewController { let shouldBeEnabled = (tunnel.status == .active || tunnel.status == .inactive) statusCheckbox.state = shouldBeChecked ? .on : .off statusCheckbox.isEnabled = shouldBeEnabled + reloadRuntimeConfiguration() } @objc func handleEditTunnelAction() { @@ -228,6 +232,19 @@ class TunnelDetailTableViewController: NSViewController { dismiss(tunnelEditVC) } } + + private func reloadRuntimeConfiguration() { + tunnel.getRuntimeTunnelConfiguration(completionHandler: { + guard let tunnelConfiguration = $0 else { return } + if tunnelConfiguration == self.tunnel.tunnelConfiguration { + return + } + self.tunnelViewModel = TunnelViewModel(tunnelConfiguration: tunnelConfiguration) + // TODO(roopc): make this not loose scroll position + self.tableView.reloadData() + self.tunnelEditVC = nil + }) + } } extension TunnelDetailTableViewController: NSTableViewDataSource { @@ -271,6 +288,7 @@ extension TunnelDetailTableViewController: TunnelEditViewControllerDelegate { tunnelViewModel = TunnelViewModel(tunnelConfiguration: tunnel.tunnelConfiguration) tableView.reloadData() self.tunnelEditVC = nil + updateStatus() } func tunnelEditingCancelled() {