mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
fix(ios): skip quick setup when a gateway is configured (#38964)
* fix(ios): hide quick setup when gateway is configured * fix: note ios quick setup gating for configured gateways (#38964) (thanks @ngutman)
This commit is contained in:
@@ -66,6 +66,23 @@ struct RootCanvas: View {
|
||||
return .none
|
||||
}
|
||||
|
||||
static func shouldPresentQuickSetup(
|
||||
quickSetupDismissed: Bool,
|
||||
showOnboarding: Bool,
|
||||
hasPresentedSheet: Bool,
|
||||
gatewayConnected: Bool,
|
||||
hasExistingGatewayConfig: Bool,
|
||||
discoveredGatewayCount: Int) -> Bool
|
||||
{
|
||||
guard !quickSetupDismissed else { return false }
|
||||
guard !showOnboarding else { return false }
|
||||
guard !hasPresentedSheet else { return false }
|
||||
guard !gatewayConnected else { return false }
|
||||
// If a gateway target is already configured (manual or last-known), skip quick setup.
|
||||
guard !hasExistingGatewayConfig else { return false }
|
||||
return discoveredGatewayCount > 0
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
ZStack {
|
||||
CanvasContent(
|
||||
@@ -220,7 +237,12 @@ struct RootCanvas: View {
|
||||
}
|
||||
|
||||
private func hasExistingGatewayConfig() -> Bool {
|
||||
if self.appModel.activeGatewayConnectConfig != nil { return true }
|
||||
if GatewaySettingsStore.loadLastGatewayConnection() != nil { return true }
|
||||
|
||||
let preferredStableID = self.preferredGatewayStableID.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
if !preferredStableID.isEmpty { return true }
|
||||
|
||||
let manualHost = self.manualGatewayHost.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
return self.manualGatewayEnabled && !manualHost.isEmpty
|
||||
}
|
||||
@@ -240,11 +262,14 @@ struct RootCanvas: View {
|
||||
}
|
||||
|
||||
private func maybeShowQuickSetup() {
|
||||
guard !self.quickSetupDismissed else { return }
|
||||
guard !self.showOnboarding else { return }
|
||||
guard self.presentedSheet == nil else { return }
|
||||
guard self.appModel.gatewayServerName == nil else { return }
|
||||
guard !self.gatewayController.gateways.isEmpty else { return }
|
||||
let shouldPresent = Self.shouldPresentQuickSetup(
|
||||
quickSetupDismissed: self.quickSetupDismissed,
|
||||
showOnboarding: self.showOnboarding,
|
||||
hasPresentedSheet: self.presentedSheet != nil,
|
||||
gatewayConnected: self.appModel.gatewayServerName != nil,
|
||||
hasExistingGatewayConfig: self.hasExistingGatewayConfig(),
|
||||
discoveredGatewayCount: self.gatewayController.gateways.count)
|
||||
guard shouldPresent else { return }
|
||||
self.presentedSheet = .quickSetup
|
||||
}
|
||||
}
|
||||
|
||||
40
apps/ios/Tests/RootCanvasPresentationTests.swift
Normal file
40
apps/ios/Tests/RootCanvasPresentationTests.swift
Normal file
@@ -0,0 +1,40 @@
|
||||
import Testing
|
||||
@testable import OpenClaw
|
||||
|
||||
@Suite struct RootCanvasPresentationTests {
|
||||
@Test func quickSetupDoesNotPresentWhenGatewayAlreadyConfigured() {
|
||||
let shouldPresent = RootCanvas.shouldPresentQuickSetup(
|
||||
quickSetupDismissed: false,
|
||||
showOnboarding: false,
|
||||
hasPresentedSheet: false,
|
||||
gatewayConnected: false,
|
||||
hasExistingGatewayConfig: true,
|
||||
discoveredGatewayCount: 1)
|
||||
|
||||
#expect(!shouldPresent)
|
||||
}
|
||||
|
||||
@Test func quickSetupPresentsForFreshInstallWithDiscoveredGateway() {
|
||||
let shouldPresent = RootCanvas.shouldPresentQuickSetup(
|
||||
quickSetupDismissed: false,
|
||||
showOnboarding: false,
|
||||
hasPresentedSheet: false,
|
||||
gatewayConnected: false,
|
||||
hasExistingGatewayConfig: false,
|
||||
discoveredGatewayCount: 1)
|
||||
|
||||
#expect(shouldPresent)
|
||||
}
|
||||
|
||||
@Test func quickSetupDoesNotPresentWhenAlreadyConnected() {
|
||||
let shouldPresent = RootCanvas.shouldPresentQuickSetup(
|
||||
quickSetupDismissed: false,
|
||||
showOnboarding: false,
|
||||
hasPresentedSheet: false,
|
||||
gatewayConnected: true,
|
||||
hasExistingGatewayConfig: false,
|
||||
discoveredGatewayCount: 1)
|
||||
|
||||
#expect(!shouldPresent)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user