Best Value page: the button says Continue in both states
The declined state had its own "Not now" label, on the theory that declining should read as a decision rather than a skip. In practice the toggle above it already shows which answer is being given, so the second label only added a second thing to read. The label is now an unconditional Continue for both states, which also let primaryTitle drop the settings value it no longer consulted. Nothing else about the page changed: the toggle still hides the sliders when off, the "can be turned on in Settings" note still appears when declined, and the settings still save as the controls move. Verified on the simulator (OCR of the rendered screens): the announcement page, and the onboarding page with the toggle both off and on, all show Continue as the bottom button. No "Not now" remains in the app's source. 180 tests, 0 failures.
This commit is contained in:
@@ -17,12 +17,12 @@ import SwiftUI
|
|||||||
struct BestValueIntroContent: View {
|
struct BestValueIntroContent: View {
|
||||||
@Binding var settings: FuelSavingsSettings
|
@Binding var settings: FuelSavingsSettings
|
||||||
|
|
||||||
/// What the host's primary button should say. Declining is a first-class
|
/// What the host's primary button says. ONE label for both answers: the
|
||||||
/// answer: "Not now" reads as a decision where "Continue" reads as a skip.
|
/// toggle already shows whether Best Value is being switched on, so a
|
||||||
static func primaryTitle(for settings: FuelSavingsSettings) -> String {
|
/// separate "Not now" for the declined case was second-guessing a choice the
|
||||||
settings.enabled
|
/// user could see on screen.
|
||||||
? String(localized: "Continue", comment: "Best Value continue button")
|
static var primaryTitle: String {
|
||||||
: String(localized: "Not now", comment: "Best Value declined button")
|
String(localized: "Continue", comment: "Best Value continue button")
|
||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
@@ -214,7 +214,7 @@ struct BestValueIntroView: View {
|
|||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
BestValueIntroContent(settings: $settings)
|
BestValueIntroContent(settings: $settings)
|
||||||
|
|
||||||
OnboardingPrimaryButton(title: BestValueIntroContent.primaryTitle(for: settings),
|
OnboardingPrimaryButton(title: BestValueIntroContent.primaryTitle,
|
||||||
action: finish)
|
action: finish)
|
||||||
.padding(.horizontal, 20)
|
.padding(.horizontal, 20)
|
||||||
.padding(.bottom, 24)
|
.padding(.bottom, 24)
|
||||||
|
|||||||
@@ -286,11 +286,9 @@ struct OnboardingView: View {
|
|||||||
// No permission on this page — prices need none. Straight on.
|
// No permission on this page — prices need none. Straight on.
|
||||||
primaryButton(String(localized: "Continue", comment: "Onboarding continue button")) { page = 4 }
|
primaryButton(String(localized: "Continue", comment: "Onboarding continue button")) { page = 4 }
|
||||||
case 4:
|
case 4:
|
||||||
// Best Value: the button states the answer the toggle is showing, so
|
// Best Value: the settings were saved when the toggle moved, so a
|
||||||
// declining reads as a decision rather than a skip. Either way the
|
// swipe past this page keeps the choice.
|
||||||
// settings were saved when the toggle moved, so a swipe past this
|
primaryButton(BestValueIntroContent.primaryTitle) { page = 5 }
|
||||||
// page keeps the choice.
|
|
||||||
primaryButton(BestValueIntroContent.primaryTitle(for: fuelSavings)) { page = 5 }
|
|
||||||
default:
|
default:
|
||||||
primaryButton(String(localized: "Start Using FuelBoard", comment: "Finish onboarding button")) { finish() }
|
primaryButton(String(localized: "Start Using FuelBoard", comment: "Finish onboarding button")) { finish() }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user