feat(ios): unify list cards and loading states

This commit is contained in:
chick
2026-09-10 01:35:12 +08:00
parent 995206ac23
commit c841748971
32 changed files with 1297 additions and 607 deletions
@@ -231,32 +231,19 @@ public struct LogCenterService: Sendable {
modules: [String: Result<Bool, Error>],
connections: [ConnectionLogEntry]
) -> InstanceDiagnostic {
let capabilities = LogCapabilitySummary(
total: modules.count,
supported: modules.values.filter {
if case .success = $0 { return true }
return false
}.count,
unsupported: modules.values.filter {
if case .failure(UpstreamError.notSupported) = $0 { return true }
return false
}.count,
authRequired: modules.values.filter {
if case .failure(UpstreamError.unauthorized) = $0 { return true }
if case .failure(UpstreamError.forbidden) = $0 { return true }
return false
}.count,
degraded: modules.values.filter {
if case .failure = $0 {
if case .failure(UpstreamError.notSupported) = $0 { return false }
if case .failure(UpstreamError.unauthorized) = $0 { return false }
if case .failure(UpstreamError.forbidden) = $0 { return false }
return true
let featureStatus = modules
.sorted { $0.key < $1.key }
.map { key, result -> FeatureStatus in
let name = key == "connection" ? "连接" : key == "device" ? "设备" : "通知"
switch result {
case .success:
return FeatureStatus(name: name, state: .ready)
case .failure(UpstreamError.unauthorized), .failure(UpstreamError.forbidden):
return FeatureStatus(name: name, state: .requiresLogin)
case .failure:
return FeatureStatus(name: name, state: .unavailable)
}
return false
}.count,
unknown: 0
)
}
let success = connections.filter { $0.outcome == .success }.count
let failed = connections.filter { $0.outcome == .failed }.count
let average = connections.isEmpty
@@ -272,7 +259,7 @@ public struct LogCenterService: Sendable {
version: probe.version,
platform: probe.platform,
observedAt: Date(),
capabilities: capabilities,
featureStatus: featureStatus,
connection: ConnectionSummary(
total: connections.count,
success: success,