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
+8 -4
View File
@@ -1,5 +1,6 @@
import AppKit
import CoreText
import OpenAPIRuntime
import SwiftUI
func runFonts(_ font: CTFont, _ text: String) -> String {
@@ -52,7 +53,7 @@ struct FontSpike: View {
}
struct SVGSpike: View {
@Environment(Server.self) private var server
@Environment(Store.self) private var store
@ViewState private var path = "web/favicon.svg"
@ViewState private var image: NSImage?
@ViewState private var failure = ""
@@ -92,18 +93,21 @@ struct SVGSpike: View {
private func load() async {
image = nil
failure = ""
guard !server.taskId.isEmpty else {
guard let taskId = store.selectedTaskId else {
return
}
do {
let data = try await server.data(URLRequest(url: try server.url("/api/tasks/\(server.taskId)/image", [URLQueryItem(name: "path", value: path)])))
let body = switch try await store.api.client.getTaskImage(path: .init(taskId: taskId), query: .init(path: path)).ok.body {
case .png(let b), .jpeg(let b), .imageGif(let b), .imageWebp(let b), .imageSvgXml(let b): b
}
let data = try await Data(collecting: body, upTo: 32 << 20)
guard let img = NSImage(data: data) else {
failure = "image not available: \(path)"
return
}
image = img
} catch {
failure = "image not available: \(path) (\(error))"
failure = "image not available: \(path) (\(errorText(error)))"
}
}
}