From 361830a69e9fe0fdfb638971dff87660644531d8 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Fri, 4 Jan 2019 16:25:57 +0530 Subject: macOS: Manage tunnels: Export tunnels pulldown menu implementation Signed-off-by: Roopesh Chander --- .../TunnelsListTableViewController.swift | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'WireGuard/WireGuard/UI') 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 -- cgit v1.2.3-59-g8ed1b