aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI
diff options
context:
space:
mode:
Diffstat (limited to 'WireGuard/WireGuard/UI')
-rw-r--r--WireGuard/WireGuard/UI/macOS/ViewController/TunnelDetailTableViewController.swift20
1 files changed, 19 insertions, 1 deletions
diff --git a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelDetailTableViewController.swift b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelDetailTableViewController.swift
index 6c3a0e98..6a9aff16 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() {