import SwiftUI

@main
struct ServDiaryApp: App {
    @StateObject private var session = SessionStore()

    var body: some Scene {
        WindowGroup {
            RootView()
                .environmentObject(session)
        }
    }
}

@MainActor
final class SessionStore: ObservableObject {
    @Published var token: String? = KeychainStore.token
    @Published var teamRole: String? = KeychainStore.teamRole

    var isLoggedIn: Bool { !(token ?? "").isEmpty }

    func applyLogin(_ response: AuthResponse) {
        token = response.token
        teamRole = response.team_role
    }

    func logout() {
        Task {
            await APIClient.shared.logout()
            token = nil
            teamRole = nil
        }
    }
}
