macOS: Manage tunnels: Export log pulldown menu implementation
Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
parent
361830a69e
commit
60cfceec4f
|
@ -9,6 +9,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
var statusItem: NSStatusItem?
|
var statusItem: NSStatusItem?
|
||||||
|
|
||||||
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
||||||
|
Logger.configureGlobal(withFilePath: FileManager.appLogFileURL?.path)
|
||||||
|
|
||||||
TunnelsManager.create { [weak self] result in
|
TunnelsManager.create { [weak self] result in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
guard result.isSuccess else { return } // TODO: Show alert
|
guard result.isSuccess else { return } // TODO: Show alert
|
||||||
|
|
|
@ -144,7 +144,36 @@ class TunnelsListTableViewController: NSViewController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func exportLogClicked() {
|
@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() {
|
@objc func exportTunnelsClicked() {
|
||||||
|
|
Loading…
Reference in New Issue