mirror of
https://github.com/maxgoedjen/secretive.git
synced 2025-08-19 11:40:56 +00:00
* Enable language mode
* WIP
* WIP
* Fix concurrency issues in SmartCardStore
* Switch to SMAppService
* Bump runners
* Base
* Finish Testing migration
* Tweak async for updater
* More
* Backport mutex
* Revert "Backport mutex"
This reverts commit 9b02afb20c
.
* WIP
* Reenable
* Fix preview.
* Update package.
* Bump to latest public macOS and Xcode
* Bump back down to 6.1
* Update to Xcode 26.
* Fixed tests.
* More cleanup
* Env fixes
* var->let
* Cleanup
* Persist auth async
* Whitespace.
* Whitespace.
* Cleanup.
* Cleanup
* Redoing locks in actors bc of observable
* Actors.
* .
* Specify b5
* Update package to 6.2
* Fix disabled updater
* Remove preconcurrency warning
* Move updater init
60 lines
2.1 KiB
Swift
60 lines
2.1 KiB
Swift
import Cocoa
|
|
import OSLog
|
|
import Combine
|
|
import SecretKit
|
|
import SecureEnclaveSecretKit
|
|
import SmartCardSecretKit
|
|
import SecretAgentKit
|
|
import Brief
|
|
import Observation
|
|
|
|
@main
|
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
|
|
|
@MainActor private let storeList: SecretStoreList = {
|
|
let list = SecretStoreList()
|
|
list.add(store: SecureEnclave.Store())
|
|
list.add(store: SmartCard.Store())
|
|
return list
|
|
}()
|
|
private let updater = Updater(checkOnLaunch: true)
|
|
private let notifier = Notifier()
|
|
private let publicKeyFileStoreController = PublicKeyFileStoreController(homeDirectory: NSHomeDirectory())
|
|
private lazy var agent: Agent = {
|
|
Agent(storeList: storeList, witness: notifier)
|
|
}()
|
|
private lazy var socketController: SocketController = {
|
|
let path = (NSHomeDirectory() as NSString).appendingPathComponent("socket.ssh") as String
|
|
return SocketController(path: path)
|
|
}()
|
|
private var updateSink: AnyCancellable?
|
|
private let logger = Logger(subsystem: "com.maxgoedjen.secretive.secretagent", category: "AppDelegate")
|
|
|
|
func applicationDidFinishLaunching(_ aNotification: Notification) {
|
|
logger.debug("SecretAgent finished launching")
|
|
Task { @MainActor in
|
|
socketController.handler = { [agent] reader, writer in
|
|
await agent.handle(reader: reader, writer: writer)
|
|
}
|
|
}
|
|
Task {
|
|
for await _ in NotificationCenter.default.notifications(named: .secretStoreReloaded) {
|
|
try? publicKeyFileStoreController.generatePublicKeys(for: storeList.allSecrets, clear: true)
|
|
}
|
|
}
|
|
try? publicKeyFileStoreController.generatePublicKeys(for: storeList.allSecrets, clear: true)
|
|
notifier.prompt()
|
|
_ = withObservationTracking {
|
|
updater.update
|
|
} onChange: { [updater, notifier] in
|
|
Task {
|
|
await notifier.notify(update: updater.update!) { release in
|
|
await updater.ignore(release: release)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|