From 55ab4537b5053d2e6698b8874ab9b8b6b1a95c0c Mon Sep 17 00:00:00 2001 From: FuelBoard Contributor Date: Wed, 12 Aug 2026 15:02:16 +0100 Subject: [PATCH] Onboarding: Data page never dead-ends on Open Settings - The Prices-ready page button stays 'Continue': tapping it fires the Local Network prompt + relay probe; on grant the page auto-advances to the final slide (existing onChange), on denial it still advances. - Removed the Open Settings branch from the Data page entirely (kept for Location page, where the user can still be sent to Settings). - Denied caption no longer suggests opening Settings. 35 tests pass. --- FuelBoard/OnboardingView.swift | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/FuelBoard/OnboardingView.swift b/FuelBoard/OnboardingView.swift index 7215724..98d678e 100644 --- a/FuelBoard/OnboardingView.swift +++ b/FuelBoard/OnboardingView.swift @@ -209,7 +209,7 @@ struct OnboardingView: View { Label("Connected — prices will load", systemImage: "checkmark.circle.fill") .foregroundStyle(.green) } else if prompter.dataDenied { - Text("Local network access was denied — prices won't load until it's allowed. You can open Settings to change this.") + Text("Local network access was denied — prices won't load until it's allowed, but you can keep using FuelBoard.") .font(.footnote) .foregroundStyle(.secondary) .multilineTextAlignment(.center) @@ -282,22 +282,18 @@ struct OnboardingView: View { } } case 3: - VStack(spacing: 10) { - primaryButton( - prompter.dataDenied ? "Open Settings" : (prompter.dataGranted ? "Continue" : (prompter.dataLoading ? "Checking…" : "Continue")) - ) { - if prompter.dataDenied { - openSettings() - } else if prompter.dataGranted { - page = 4 - } else if !prompter.dataLoading { - // Fires the Local Network prompt + relay probe here, - // after the user has read the page and tapped Continue. - prompter.requestDataAccess() - } + primaryButton(prompter.dataLoading ? "Checking…" : "Continue") { + if prompter.dataGranted || prompter.dataDenied { + // Prompt answered (allowed or denied) — move on to the + // final slide. Never dead-end on an Open Settings button. + page = 4 + } else if !prompter.dataLoading { + // Fires the Local Network prompt + relay probe here, + // after the user has read the page and tapped Continue. + prompter.requestDataAccess() } - .disabled(prompter.dataLoading) } + .disabled(prompter.dataLoading) default: primaryButton("Start Using FuelBoard") { finish() } }