Use versioned API client for server summary

This commit is contained in:
Micha
2025-11-16 12:59:05 +01:00
parent d818af18bb
commit df32af064d
7 changed files with 233 additions and 13 deletions

View File

@@ -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")")
}
}