44 lines
1.1 KiB
Swift
44 lines
1.1 KiB
Swift
import Cocoa
|
|
|
|
@main
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
|
|
let delegate = ServiceDelegate(exportedObject: Updater())
|
|
let listener = NSXPCListener(machServiceName: Bundle.main.bundleIdentifier!)
|
|
|
|
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
|
listener.delegate = delegate
|
|
listener.resume()
|
|
Task {
|
|
try! await delegate.exported.authorize()
|
|
}
|
|
}
|
|
|
|
func applicationWillTerminate(_ aNotification: Notification) {
|
|
}
|
|
|
|
func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
|
|
return false
|
|
}
|
|
|
|
|
|
}
|
|
|
|
class ServiceDelegate: NSObject, NSXPCListenerDelegate {
|
|
|
|
let exported: UpdaterProtocol
|
|
|
|
init(exportedObject: UpdaterProtocol) {
|
|
self.exported = exportedObject
|
|
}
|
|
|
|
func listener(_ listener: NSXPCListener, shouldAcceptNewConnection newConnection: NSXPCConnection) -> Bool {
|
|
newConnection.exportedInterface = NSXPCInterface(with: UpdaterProtocol.self)
|
|
newConnection.exportedObject = exported
|
|
newConnection.resume()
|
|
return true
|
|
}
|
|
|
|
}
|
|
|