// // SeveredApp.swift // Severed // // Created by Brendan Chen on 2025.08.09. // import SwiftData import SwiftUI @main struct SeveredApp: App { private let container: ModelContainer @State private var authorization: ScreenTimeAuthorization @State private var enforcer: RuleEnforcer init() { let config = LaunchConfiguration.current if let onboardingCompleted = config.onboardingCompleted { UserDefaults.standard.set(onboardingCompleted, forKey: "hasCompletedOnboarding") } let schema = Schema([BlockingRule.self]) let modelConfiguration = ModelConfiguration( schema: schema, isStoredInMemoryOnly: config.isUITesting ) do { container = try ModelContainer(for: schema, configurations: [modelConfiguration]) } catch { fatalError("Could not create ModelContainer: \(error)") } if let scenario = config.seedScenario { SampleRules.seed(scenario, into: container.mainContext) } let authProvider: AuthorizationProviding = config.isUITesting ? MockAuthorizationProvider( status: config.onboardingCompleted == false ? .notDetermined : .approved ) : FamilyControlsAuthorizationProvider() _authorization = State(initialValue: ScreenTimeAuthorization(provider: authProvider)) let shields: ShieldApplying = config.isUITesting ? MockShieldController() : ManagedSettingsShieldController() _enforcer = State(initialValue: RuleEnforcer(shields: shields)) } var body: some Scene { WindowGroup { RootView() .environment(authorization) .environment(enforcer) .preferredColorScheme(.dark) .tint(Theme.accent) } .modelContainer(container) } }