macOS client store and API
This commit is contained in:
@@ -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)))"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user