import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react' import { authService } from '../services/authService' interface AuthContextType { isAuthenticated: boolean isLoading: boolean token: string | null login: (code: string) => Promise logout: () => void } const AuthContext = createContext(undefined) export function AuthProvider({ children }: { children: ReactNode }) { const [isAuthenticated, setIsAuthenticated] = useState(false) const [isLoading, setIsLoading] = useState(true) const [token, setToken] = useState(null) useEffect(() => { const savedToken = localStorage.getItem('daddytv_token') if (savedToken) { setToken(savedToken) setIsAuthenticated(true) } setIsLoading(false) }, []) const login = async (code: string): Promise => { try { const result = await authService.validateCode(code) if (result.success) { const userToken = result.token setToken(userToken) setIsAuthenticated(true) localStorage.setItem('daddytv_token', userToken) return true } return false } catch (error) { console.error('Login error:', error) return false } } const logout = () => { setToken(null) setIsAuthenticated(false) localStorage.removeItem('daddytv_token') localStorage.removeItem('daddytv_favorites') localStorage.removeItem('daddytv_settings') authService.logout() } return ( {children} ) } export function useAuth() { const context = useContext(AuthContext) if (context === undefined) { throw new Error('useAuth must be used within an AuthProvider') } return context }