macOS: include node hardware identifiers

This commit is contained in:
Peter Steinberger
2025-12-17 20:10:50 +00:00
parent 0321174519
commit fca6e466b1
4 changed files with 39 additions and 1 deletions

View File

@@ -8,6 +8,8 @@ struct BridgeNodeInfo: Sendable {
var displayName: String?
var platform: String?
var version: String?
var deviceFamily: String?
var modelIdentifier: String?
var remoteAddress: String?
var caps: [String]?
}
@@ -145,6 +147,8 @@ actor BridgeConnectionHandler {
displayName: hello.displayName,
platform: hello.platform,
version: hello.version,
deviceFamily: hello.deviceFamily,
modelIdentifier: hello.modelIdentifier,
remoteAddress: self.remoteAddressString(),
caps: hello.caps))
}
@@ -178,6 +182,8 @@ actor BridgeConnectionHandler {
displayName: enriched.displayName,
platform: enriched.platform,
version: enriched.version,
deviceFamily: enriched.deviceFamily,
modelIdentifier: enriched.modelIdentifier,
remoteAddress: enriched.remoteAddress,
caps: enriched.caps))
}

View File

@@ -403,7 +403,29 @@ actor BridgeServer {
guard let token = hello.token, token == paired.token else {
return .unauthorized
}
do { try await store.touchSeen(nodeId: nodeId) } catch { /* ignore */ }
do {
var updated = paired
let name = hello.displayName?.trimmingCharacters(in: .whitespacesAndNewlines).nonEmpty
let platform = hello.platform?.trimmingCharacters(in: .whitespacesAndNewlines).nonEmpty
let version = hello.version?.trimmingCharacters(in: .whitespacesAndNewlines).nonEmpty
let deviceFamily = hello.deviceFamily?.trimmingCharacters(in: .whitespacesAndNewlines).nonEmpty
let modelIdentifier = hello.modelIdentifier?.trimmingCharacters(in: .whitespacesAndNewlines).nonEmpty
if updated.displayName != name { updated.displayName = name }
if updated.platform != platform { updated.platform = platform }
if updated.version != version { updated.version = version }
if updated.deviceFamily != deviceFamily { updated.deviceFamily = deviceFamily }
if updated.modelIdentifier != modelIdentifier { updated.modelIdentifier = modelIdentifier }
if updated != paired {
try await store.upsert(updated)
} else {
try await store.touchSeen(nodeId: nodeId)
}
} catch {
// ignore
}
return .ok
}
@@ -429,6 +451,8 @@ actor BridgeServer {
displayName: request.displayName,
platform: request.platform,
version: request.version,
deviceFamily: request.deviceFamily,
modelIdentifier: request.modelIdentifier,
token: token,
createdAtMs: nowMs,
lastSeenAtMs: nowMs)

View File

@@ -5,6 +5,8 @@ struct PairedNode: Codable, Equatable {
var displayName: String?
var platform: String?
var version: String?
var deviceFamily: String?
var modelIdentifier: String?
var token: String
var createdAtMs: Int
var lastSeenAtMs: Int?

View File

@@ -10,6 +10,8 @@ enum ControlRequestHandler {
var displayName: String?
var platform: String?
var version: String?
var deviceFamily: String?
var modelIdentifier: String?
var remoteAddress: String?
var connected: Bool
var capabilities: [String]?
@@ -434,6 +436,8 @@ enum ControlRequestHandler {
displayName: (live?.displayName ?? p.displayName),
platform: (live?.platform ?? p.platform),
version: (live?.version ?? p.version),
deviceFamily: (live?.deviceFamily ?? p.deviceFamily),
modelIdentifier: (live?.modelIdentifier ?? p.modelIdentifier),
remoteAddress: live?.remoteAddress,
connected: live != nil,
capabilities: live?.caps)
@@ -445,6 +449,8 @@ enum ControlRequestHandler {
displayName: c.displayName,
platform: c.platform,
version: c.version,
deviceFamily: c.deviceFamily,
modelIdentifier: c.modelIdentifier,
remoteAddress: c.remoteAddress,
connected: true,
capabilities: c.caps)