Changes
3 changed files (+37/-4)
-
-
@@ -38,6 +38,14 @@ var version: String {return String(cString: ptr.pointee.version) } var ipAddress: String { return String(cString: ptr.pointee.ip_addr) } var port: UInt16 { return ptr.pointee.http_port } init(ptr: UnsafeMutablePointer<PlacKit.plac_discovery_server>) { self.ptr = ptr }
-
-
-
@@ -32,6 +32,8 @@@State private var state: MainViewState = .loading @AppStorage("PlacApp.token") private var savedToken: String? @AppStorage("PlacApp.serverIp") private var serverIp: String? @AppStorage("PlacApp.serverPort") private var serverPort: Int? private let logger = Logger() private let queue = DispatchQueue(label: "plac.server-find")
-
@@ -81,7 +83,7 @@ }.onAppear { if let serverId = serverId { queue.async { let ptr = PlacKit.plac_discovery_find(serverId) let ptr = findServer(serverId) guard let ptr = ptr else { logger.error("Failed to scan servers: Out of memory") DispatchQueue.main.async {
-
@@ -107,12 +109,27 @@ return} DispatchQueue.main.async { let entry = result.entries[0] serverIp = entry.ipAddress serverPort = Int(entry.port) state = .found( Connection(server: result.entries[0], token: savedToken) Connection(server: entry, token: savedToken) ) } } } } } func findServer(_ serverId: String) -> UnsafeMutablePointer< PlacKit.plac_discovery_scan_result >? { if let ip = serverIp, let port = serverPort { return PlacKit.plac_discovery_resolve(serverId, ip, UInt16(port)) } else { return PlacKit.plac_discovery_find(serverId) } } }
-
-
-
@@ -50,6 +50,8 @@ @AppStorage("PlacApp.connectedServerId") private var connectedServerId:String? @AppStorage("PlacApp.token") private var savedToken: String? @AppStorage("PlacApp.serverIp") private var serverIp: String? @AppStorage("PlacApp.serverPort") private var serverPort: Int? var body: some Scene { WindowGroup("Plac", id: "main-window") {
-
@@ -59,16 +61,22 @@ } else {ServerDiscovery() .onConnect { server in connectedServerId = server.id savedToken = nil clearConnectionState() } } } .commands { ConnectionCommands(onDisconnect: { connectedServerId = nil savedToken = nil clearConnectionState() }) } .defaultSize(width: 800, height: 600) } func clearConnectionState() { savedToken = nil serverIp = nil serverPort = nil } }
-