Use versioned API client for server summary
This commit is contained in:
@@ -132,8 +132,13 @@ struct MainView: View {
|
||||
print("❌ [MainView] fetchServerInfo: server not found for id \(id)")
|
||||
return
|
||||
}
|
||||
guard let api = ServerAPI(server: server) else {
|
||||
print("❌ [MainView] fetchServerInfo: could not create API for \(server.hostname)")
|
||||
guard let apiKey = KeychainHelper.loadApiKey(for: server.hostname)?.trimmingCharacters(in: .whitespacesAndNewlines),
|
||||
!apiKey.isEmpty else {
|
||||
print("❌ [MainView] fetchServerInfo: missing API key for \(server.hostname)")
|
||||
return
|
||||
}
|
||||
guard let baseURL = URL(string: "https://\(server.hostname)") else {
|
||||
print("❌ [MainView] Invalid base URL for \(server.hostname)")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -142,12 +147,15 @@ struct MainView: View {
|
||||
Task {
|
||||
defer { isFetchingInfo = false }
|
||||
do {
|
||||
let info = try await api.fetchServerInfo()
|
||||
if let index = servers.firstIndex(where: { $0.id == id }) {
|
||||
var updated = servers[index]
|
||||
updated.info = info
|
||||
servers[index] = updated
|
||||
print("✅ [MainView] Updated server info for \(updated.hostname)")
|
||||
let api = try await APIFactory.detectAndCreateAPI(baseURL: baseURL)
|
||||
let info = try await api.fetchServerSummary(apiKey: apiKey)
|
||||
await MainActor.run {
|
||||
if let index = servers.firstIndex(where: { $0.id == id }) {
|
||||
var updated = servers[index]
|
||||
updated.info = info
|
||||
servers[index] = updated
|
||||
print("✅ [MainView] Updated server info for \(updated.hostname)")
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
print("❌ Failed to fetch server data: \(error)")
|
||||
@@ -212,9 +220,10 @@ struct MainView: View {
|
||||
for (index, server) in servers.enumerated() {
|
||||
Task {
|
||||
let apiKey = KeychainHelper.loadApiKey(for: server.hostname)?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
|
||||
let api = ServerAPI(hostname: server.hostname, apiKey: apiKey)
|
||||
let pingable = await api.ping()
|
||||
servers[index].pingable = pingable
|
||||
let pingable = await PingService.ping(hostname: server.hostname, apiKey: apiKey)
|
||||
await MainActor.run {
|
||||
servers[index].pingable = pingable
|
||||
}
|
||||
print("📶 [MainView] Ping \(server.hostname): \(pingable ? "online" : "offline")")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user