@@ -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: {
104105 Task { await self . gatewayController. connectLastKnown ( ) }
106+ } ,
107+ resetOnboarding: {
108+ self . resetOnboardingFromGatewayProblem ( )
105109 } )
106110 . preferredColorScheme ( . dark)
107111
@@ -429,6 +433,13 @@ struct RootCanvas: View {
429433 guard shouldPresent else { return }
430434 self . 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}
433444
434445private struct HomeCanvasPayload : Codable {
@@ -469,6 +480,7 @@ private struct CanvasContent: View {
469480 var openChat : ( ) -> Void
470481 var openSettings : ( ) -> Void
471482 var retryGatewayConnection : ( ) -> Void
483+ var resetOnboarding : ( ) -> Void
472484
473485 private var brightenButtons : Bool {
474486 self . systemColorScheme == . light
@@ -578,12 +590,15 @@ private struct CanvasContent: View {
578590
579591 private func gatewayProblemPrimaryActionTitle( _ problem: GatewayConnectionProblem ) -> String {
580592 if problem. canTrustRotatedCertificate { return " Trust certificate " }
593+ if problem. suggestsOnboardingReset { return " Reset onboarding " }
581594 return problem. retryable ? " Retry " : " Open Settings "
582595 }
583596
584597 private func handleGatewayProblemPrimaryAction( _ problem: GatewayConnectionProblem ) {
585598 if problem. canTrustRotatedCertificate {
586599 Task { await self . gatewayController. trustRotatedGatewayCertificate ( from: problem) }
600+ } else if problem. suggestsOnboardingReset {
601+ self . resetOnboarding ( )
587602 } else if problem. retryable {
588603 self . retryGatewayConnection ( )
589604 } else {
0 commit comments