macOS client store and API

This commit is contained in:
Ian Gulliver
2026-10-16 22:46:54 -07:00
parent b28968a0bc
commit a9bec7a7ea
22 changed files with 1508 additions and 251 deletions
+14 -7
View File
@@ -6,35 +6,42 @@ typealias ViewState = State
@main
struct ByreApp: App {
@ViewState private var server = Server()
@ViewState private var connection = Connection()
@ViewState private var spike = SpikeLog()
var body: some Scene {
Window("byre", id: "main") {
SpikeView()
.environment(server)
RootView()
.environment(connection)
.environment(spike)
.font(Fonts.font(13))
.onAppear {
installCtrlMonitor(server)
installCtrlMonitor(spike)
}
}
.commands {
CommandGroup(after: .appInfo) {
Button("Change Server…") {
connection.changeServer()
}
}
PasteboardCommands()
}
}
}
@MainActor
private func installCtrlMonitor(_ server: Server) {
private func installCtrlMonitor(_ spike: SpikeLog) {
NSEvent.addLocalMonitorForEvents(matching: .keyDown) { event in
let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
guard flags.contains(.control), !flags.contains(.command), let key = event.charactersIgnoringModifiers, ["k", "p", "l", "s", "/"].contains(key) else {
return event
}
if event.window?.firstResponder is TerminalView {
server.log("ctrl-\(key) passed to the terminal")
spike.log("ctrl-\(key) passed to the terminal")
return event
}
server.log("ctrl-\(key) taken as a Go shortcut")
spike.log("ctrl-\(key) taken as a Go shortcut")
return nil
}
}