mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-01 15:15:09 +00:00
Summary: - Replace the legacy iOS shell with Pro Command, Chat, Agents, and Settings tabs. - Wire iOS chat/session/settings/diagnostics and realtime Talk flows through gateway-backed APIs. - Add gateway/session and shared chat coverage for the new iOS flow. Verification: - git diff --check - node scripts/run-vitest.mjs src/gateway/server.sessions.create.test.ts src/gateway/talk-realtime-relay.test.ts - swift test --filter ChatViewModelTests (apps/shared/OpenClawKit) - xcodebuild build for Nimrod's iPhone succeeded; install succeeded; launch was blocked because the phone was locked Known follow-up: - Preserve traceLevel in sessions.create parent runtime inheritance and keep the changelog credit in the follow-up patch.
42 lines
1.2 KiB
Swift
42 lines
1.2 KiB
Swift
import Foundation
|
|
import OpenClawKit
|
|
|
|
enum GatewayDisplayState: Equatable {
|
|
case connected
|
|
case connecting
|
|
case error
|
|
case disconnected
|
|
}
|
|
|
|
enum GatewayStatusBuilder {
|
|
@MainActor
|
|
static func build(appModel: NodeAppModel) -> GatewayDisplayState {
|
|
self.build(
|
|
gatewayServerName: appModel.gatewayServerName,
|
|
lastGatewayProblem: appModel.lastGatewayProblem,
|
|
gatewayStatusText: appModel.gatewayStatusText)
|
|
}
|
|
|
|
static func build(
|
|
gatewayServerName: String?,
|
|
lastGatewayProblem: GatewayConnectionProblem?,
|
|
gatewayStatusText: String) -> GatewayDisplayState
|
|
{
|
|
if gatewayServerName != nil { return .connected }
|
|
if let lastGatewayProblem, lastGatewayProblem.pauseReconnect { return .error }
|
|
|
|
let text = gatewayStatusText.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
if text.localizedCaseInsensitiveContains("connecting") ||
|
|
text.localizedCaseInsensitiveContains("reconnecting")
|
|
{
|
|
return .connecting
|
|
}
|
|
|
|
if text.localizedCaseInsensitiveContains("error") {
|
|
return .error
|
|
}
|
|
|
|
return .disconnected
|
|
}
|
|
}
|