import * as SecureStore from 'expo-secure-store'; import { createContext, ReactNode, useContext, useEffect, useState, } from 'react'; type User = { username: string; }; type AuthContextType = { user: User | null; login: (username: string) => Promise; logout: () => Promise; loading: boolean; }; const AuthContext = createContext(null); export function AuthProvider({ children }: { children: ReactNode }) { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { SecureStore.getItemAsync('user').then((storedUser) => { if (storedUser) { setUser(JSON.parse(storedUser)); } setLoading(false); }); }, []); const login = async (username: string) => { const userData = { username }; setUser(userData); await SecureStore.setItemAsync('user', JSON.stringify(userData)); }; const logout = async () => { setUser(null); await SecureStore.deleteItemAsync('user'); }; return ( {children} ); } export function useAuth() { const context = useContext(AuthContext); if (!context) { throw new Error('useAuth must be used within AuthProvider'); } return context; }