2018-12-25 13:03:28 +00:00
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
// Copyright © 2018 WireGuard LLC. All Rights Reserved.
|
|
|
|
|
|
|
|
import Cocoa
|
|
|
|
|
|
|
|
@NSApplicationMain
|
|
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
|
|
|
2018-12-28 13:59:09 +00:00
|
|
|
var statusItem: NSStatusItem?
|
|
|
|
|
2018-12-25 13:03:28 +00:00
|
|
|
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
2019-01-04 12:41:49 +00:00
|
|
|
Logger.configureGlobal(withFilePath: FileManager.appLogFileURL?.path)
|
|
|
|
|
2018-12-28 13:59:09 +00:00
|
|
|
TunnelsManager.create { [weak self] result in
|
|
|
|
guard let self = self else { return }
|
|
|
|
guard result.isSuccess else { return } // TODO: Show alert
|
2018-12-25 13:03:28 +00:00
|
|
|
|
2018-12-28 13:59:09 +00:00
|
|
|
let tunnelsManager: TunnelsManager = result.value!
|
|
|
|
let statusMenu = StatusMenu(tunnelsManager: tunnelsManager)
|
|
|
|
self.statusItem = createStatusBarItem(with: statusMenu)
|
2018-12-29 10:03:41 +00:00
|
|
|
|
|
|
|
tunnelsManager.tunnelsListDelegate = statusMenu
|
2019-01-05 08:56:20 +00:00
|
|
|
tunnelsManager.activationDelegate = statusMenu
|
2018-12-28 13:59:09 +00:00
|
|
|
}
|
2018-12-25 13:03:28 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-28 13:59:09 +00:00
|
|
|
func createStatusBarItem(with statusMenu: StatusMenu) -> NSStatusItem {
|
|
|
|
let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)
|
|
|
|
if let statusBarImage = NSImage(named: "WireGuardMacStatusBarIcon") {
|
|
|
|
statusBarImage.isTemplate = true
|
|
|
|
statusItem.button?.image = statusBarImage
|
|
|
|
}
|
|
|
|
statusItem.menu = statusMenu
|
|
|
|
return statusItem
|
|
|
|
}
|