From 60cfceec4fe526214db184cc2175a7940d2b5251 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Fri, 4 Jan 2019 18:11:49 +0530 Subject: macOS: Manage tunnels: Export log pulldown menu implementation Signed-off-by: Roopesh Chander --- .../TunnelsListTableViewController.swift | 31 +++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'WireGuard/WireGuard/UI/macOS/ViewController') diff --git a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift index 9bdccea..2d0b6fe 100644 --- a/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift +++ b/WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift @@ -144,7 +144,36 @@ class TunnelsListTableViewController: NSViewController { } @objc func exportLogClicked() { - print("exportLogClicked") + guard let window = view.window else { return } + let savePanel = NSSavePanel() + savePanel.prompt = "Save" + savePanel.nameFieldLabel = "Export log to" + + let dateFormatter = ISO8601DateFormatter() + dateFormatter.formatOptions = [.withFullDate, .withTime, .withTimeZone] // Avoid ':' in the filename + let timeStampString = dateFormatter.string(from: Date()) + savePanel.nameFieldStringValue = "wireguard-log-\(timeStampString).txt" + + guard let networkExtensionLogFilePath = FileManager.networkExtensionLogFileURL?.path else { + ErrorPresenter.showErrorAlert(title: tr("alertUnableToFindExtensionLogPathTitle"), message: tr("alertUnableToFindExtensionLogPathMessage"), from: self) + return + } + + savePanel.beginSheetModal(for: window) { response in + guard response == .OK else { return } + guard let destinationURL = savePanel.url else { return } + + DispatchQueue.global(qos: .userInitiated).async { + let isWritten = Logger.global?.writeLog(called: "APP", mergedWith: networkExtensionLogFilePath, called: "NET", to: destinationURL.path) ?? false + guard isWritten else { + DispatchQueue.main.async { [weak self] in + ErrorPresenter.showErrorAlert(title: tr("alertUnableToWriteLogTitle"), message: tr("alertUnableToWriteLogMessage"), from: self) + } + return + } + } + + } } @objc func exportTunnelsClicked() { -- cgit v1.2.3-59-g8ed1b