Rework onboarding flow and move premium prompt post-setup
This commit is contained in:
@@ -3,6 +3,9 @@ import SwiftData
|
||||
|
||||
@MainActor
|
||||
final class OnboardingViewModel: ObservableObject {
|
||||
static let pendingAutoAssignPromptKey = "onboarding_pending_auto_assign_prompt"
|
||||
static let pendingPremiumPromptKey = "onboarding_pending_premium_prompt"
|
||||
|
||||
@Published var currentStep: Int = 0
|
||||
@Published var selectedMealWindows: MealWindows = .dinnerOnly
|
||||
@Published var includeWeekends: Bool = true
|
||||
@@ -24,16 +27,15 @@ final class OnboardingViewModel: ObservableObject {
|
||||
@Published var addedDishes: [(name: String, tagIds: [UUID])] = []
|
||||
let maxOnboardingDishes = 10
|
||||
|
||||
let totalSteps = 6
|
||||
let totalSteps = 5
|
||||
|
||||
var canContinue: Bool {
|
||||
switch currentStep {
|
||||
case 0: return true // Welcome
|
||||
case 1: return true // Trial
|
||||
case 2: return true // Meal windows (always has selection)
|
||||
case 3: return true // Weekends (toggle)
|
||||
case 4: return true // Calendar (optional)
|
||||
case 5: return addedDishes.count >= 2 // Need at least 2 dishes
|
||||
case 1: return true // Meal windows (always has selection)
|
||||
case 2: return true // Weekends (toggle)
|
||||
case 3: return true // Calendar (optional)
|
||||
case 4: return addedDishes.count >= 2 // Need at least 2 dishes
|
||||
default: return false
|
||||
}
|
||||
}
|
||||
@@ -149,6 +151,8 @@ final class OnboardingViewModel: ObservableObject {
|
||||
|
||||
do {
|
||||
try context.save()
|
||||
UserDefaults.standard.set(true, forKey: Self.pendingAutoAssignPromptKey)
|
||||
UserDefaults.standard.set(true, forKey: Self.pendingPremiumPromptKey)
|
||||
return true
|
||||
} catch {
|
||||
print("Onboarding save failed: \(error)")
|
||||
|
||||
Reference in New Issue
Block a user