






















@@ -15,6 +15,7 @@ struct RootCanvas: View {
1515@AppStorage("onboarding.requestID") private var onboardingRequestID: Int = 0
1616@AppStorage("gateway.onboardingComplete") private var onboardingComplete: Bool = false
1717@AppStorage("gateway.hasConnectedOnce") private var hasConnectedOnce: Bool = false
18+@AppStorage("node.instanceId") private var instanceId: String = UUID().uuidString
1819@AppStorage("gateway.preferredStableID") private var preferredGatewayStableID: String = ""
1920@AppStorage("gateway.manual.enabled") private var manualGatewayEnabled: Bool = false
2021@AppStorage("gateway.manual.host") private var manualGatewayHost: String = ""
@@ -102,6 +103,9 @@ struct RootCanvas: View {
102103},
103104 retryGatewayConnection: {
104105Task { await self.gatewayController.connectLastKnown() }
106+},
107+ resetOnboarding: {
108+self.resetOnboardingFromGatewayProblem()
105109})
106110.preferredColorScheme(.dark)
107111@@ -429,6 +433,13 @@ struct RootCanvas: View {
429433guard shouldPresent else { return }
430434self.presentedSheet = .quickSetup
431435}
436+437+private func resetOnboardingFromGatewayProblem() {
438+GatewayOnboardingReset.reset(appModel: self.appModel, instanceId: self.instanceId)
439+self.presentedSheet = nil
440+self.onboardingAllowSkip = false
441+self.showOnboarding = true
442+}
432443}
433444434445private struct HomeCanvasPayload: Codable {
@@ -469,6 +480,7 @@ private struct CanvasContent: View {
469480var openChat: () -> Void
470481var openSettings: () -> Void
471482var retryGatewayConnection: () -> Void
483+var resetOnboarding: () -> Void
472484473485private var brightenButtons: Bool {
474486self.systemColorScheme == .light
@@ -578,12 +590,15 @@ private struct CanvasContent: View {
578590579591private func gatewayProblemPrimaryActionTitle(_ problem: GatewayConnectionProblem) -> String {
580592if problem.canTrustRotatedCertificate { return "Trust certificate" }
593+if problem.suggestsOnboardingReset { return "Reset onboarding" }
581594return problem.retryable ? "Retry" : "Open Settings"
582595}
583596584597private func handleGatewayProblemPrimaryAction(_ problem: GatewayConnectionProblem) {
585598if problem.canTrustRotatedCertificate {
586599Task { await self.gatewayController.trustRotatedGatewayCertificate(from: problem) }
600+} else if problem.suggestsOnboardingReset {
601+self.resetOnboarding()
587602} else if problem.retryable {
588603self.retryGatewayConnection()
589604} else {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。