// // medmapApp.swift // medmap // // Created by Ricardo Araujo on 26/08/2026. // import SwiftUI import SwiftData @main struct medmapApp: App { @StateObject var appStateManager: AppStateManager = DIContainer.shared.resolve() @Environment(\.scenePhase) private var scenePhase var sharedModelContainer: ModelContainer = { let schema = Schema([ Item.self, ]) let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false) do { return try ModelContainer(for: schema, configurations: [modelConfiguration]) } catch { fatalError("Could not create ModelContainer: \(error)") } }() var body: some Scene { WindowGroup { createNavigationStack( SplashScreenView(viewModel: SplashScreenViewModel()) .environmentObject(appStateManager)) } .onChange(of: scenePhase) { oldPhase, newPhase in handleScenePhaseChange(from: oldPhase, to: newPhase) } } private func handleScenePhaseChange(from oldPhase: ScenePhase, to newPhase: ScenePhase) { switch newPhase { case .active: print("🟢 App became active") case .inactive: print("🟡 App became inactive") // App is transitioning (e.g., notification center pulled down) case .background: print("🔴 App entered background") handleAppEnteredBackground() @unknown default: break } } private func handleAppEnteredBackground() { // Runs when app enters background // Example: Save state, pause operations } func createNavigationStack(_ view: V) -> some View { return AnyView(NavigationStack(path: $appStateManager.path) { view .navigationDestination(for: AppState.self) { destination in switch destination { case .splashScreen: SplashScreenView(viewModel: SplashScreenViewModel()) .navigationBarHidden(true) .transition(.move(edge: .bottom)) .animation(.easeInOut, value: 10) } } }) } }