diff options
author | Roopesh Chander <roop@roopc.net> | 2019-01-04 16:25:57 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2019-01-14 14:52:32 +0530 |
commit | 361830a69e9fe0fdfb638971dff87660644531d8 (patch) | |
tree | 769e002bebe620e3146cf54d058b3022fe445f11 /WireGuard | |
parent | macOS: Xcode: Add ablity to save files (diff) | |
download | wireguard-apple-361830a69e9fe0fdfb638971dff87660644531d8.tar.xz wireguard-apple-361830a69e9fe0fdfb638971dff87660644531d8.zip |
macOS: Manage tunnels: Export tunnels pulldown menu implementation
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to 'WireGuard')
-rw-r--r-- | WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift index 310d13a..9bdccea 100644 --- a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift +++ b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift @@ -146,8 +146,27 @@ class TunnelsListTableViewController: NSViewController { @objc func exportLogClicked() { print("exportLogClicked") } + @objc func exportTunnelsClicked() { - print("exportTunnelsClicked") + guard let window = view.window else { return } + let savePanel = NSSavePanel() + savePanel.allowedFileTypes = ["zip"] + savePanel.prompt = "Save" + savePanel.nameFieldLabel = "Export tunnels to" + savePanel.nameFieldStringValue = "wireguard-export.zip" + savePanel.beginSheetModal(for: window) { [weak tunnelsManager] response in + guard let tunnelsManager = tunnelsManager else { return } + guard response == .OK else { return } + guard let destinationURL = savePanel.url else { return } + let count = tunnelsManager.numberOfTunnels() + let tunnelConfigurations = (0 ..< count).compactMap { tunnelsManager.tunnel(at: $0).tunnelConfiguration } + ZipExporter.exportConfigFiles(tunnelConfigurations: tunnelConfigurations, to: destinationURL) { [weak self] error in + if let error = error { + ErrorPresenter.showErrorAlert(error: error, from: self) + return + } + } + } } @discardableResult |