import SwiftUI

/// Gates the app on the session: signed-out → phone/OTP flow; signed-in → main tabs.
struct RootView: View {
    let container: AppContainer
    @EnvironmentObject private var session: SessionStore

    var body: some View {
        if session.isLoggedIn {
            MainTabView(container: container)
        } else {
            AuthFlowView(container: container)
        }
    }
}

/// Owns the AuthViewModel and switches between the phone and OTP steps.
struct AuthFlowView: View {
    @StateObject private var vm: AuthViewModel

    init(container: AppContainer) {
        _vm = StateObject(wrappedValue: AuthViewModel(repo: container.authRepository))
    }

    var body: some View {
        switch vm.phase {
        case .phone: LoginView(vm: vm)
        case .otp: OtpView(vm: vm)
        }
    }
}
