Download frontend/src/context/AuthContext.jsx from Shiva7706/BlueFin: direct link, hf CLI and curl.
- Browser
- Download file 2.03 kB
-
https://huggingface.co/spaces/Shiva7706/BlueFin/resolve/main/frontend/src/context/AuthContext.jsx
- Command line
-
hf download hf://spaces/Shiva7706/BlueFin/frontend/src/context/AuthContext.jsx
-
curl -L -o AuthContext.jsx https://huggingface.co/spaces/Shiva7706/BlueFin/resolve/main/frontend/src/context/AuthContext.jsx
2.03 kB
| import { createContext, useContext, useState, useEffect } from "react"; | |
| import { login, logout, signup } from "../api/client.js"; | |
| const AuthContext = createContext(null); | |
| export function AuthProvider({ children }) { | |
| const [user, setUser] = useState(null); | |
| const [loading, setLoading] = useState(true); | |
| // Load user from localStorage on mount | |
| useEffect(() => { | |
| const storedUser = localStorage.getItem("intelli_user"); | |
| if (storedUser) { | |
| try { | |
| setUser(JSON.parse(storedUser)); | |
| } catch (e) { | |
| localStorage.removeItem("intelli_user"); | |
| } | |
| } | |
| setLoading(false); | |
| }, []); | |
| const handleLogin = async (email, password) => { | |
| const data = await login(email, password); | |
| const userData = { email: data.user.email, id: data.user.id }; | |
| setUser(userData); | |
| localStorage.setItem("intelli_user", JSON.stringify(userData)); | |
| // Optional: store token if passing via headers later | |
| if (data.session?.access_token) { | |
| localStorage.setItem("intelli_token", data.session.access_token); | |
| } | |
| }; | |
| const handleSignup = async (email, password) => { | |
| const data = await signup(email, password); | |
| const userData = { email: data.user.email, id: data.user.id }; | |
| setUser(userData); | |
| localStorage.setItem("intelli_user", JSON.stringify(userData)); | |
| if (data.session?.access_token) { | |
| localStorage.setItem("intelli_token", data.session.access_token); | |
| } | |
| }; | |
| const handleLogout = async () => { | |
| try { | |
| await logout(); | |
| } catch (e) { | |
| console.error("Logout API error", e); | |
| } | |
| setUser(null); | |
| localStorage.removeItem("intelli_user"); | |
| localStorage.removeItem("intelli_token"); | |
| }; | |
| return ( | |
| <AuthContext.Provider value={{ user, loading, login: handleLogin, signup: handleSignup, logout: handleLogout }}> | |
| {children} | |
| </AuthContext.Provider> | |
| ); | |
| } | |
| export function useAuth() { | |
| const ctx = useContext(AuthContext); | |
| if (!ctx) throw new Error("useAuth must be used within AuthProvider"); | |
| return ctx; | |
| } | |