Download src/context/AuthContextProvider.jsx from Cripple-Lee/Personal-Assistant-Client: direct link, hf CLI and curl.
- Browser
- Download file 1.09 kB
-
https://huggingface.co/spaces/Cripple-Lee/Personal-Assistant-Client/resolve/main/src/context/AuthContextProvider.jsx
- Command line
-
hf download hf://spaces/Cripple-Lee/Personal-Assistant-Client/src/context/AuthContextProvider.jsx
-
curl -L -o AuthContextProvider.jsx https://huggingface.co/spaces/Cripple-Lee/Personal-Assistant-Client/resolve/main/src/context/AuthContextProvider.jsx
1.09 kB
| import { useState, useCallback } from 'react' | |
| import { AuthContext } from './AuthContext.js' | |
| const STORAGE_KEY = 'pa_auth' | |
| function loadSession() { | |
| try { | |
| const raw = sessionStorage.getItem(STORAGE_KEY) | |
| return raw ? JSON.parse(raw) : null | |
| } catch { | |
| return null | |
| } | |
| } | |
| export default function AuthProvider({ children }) { | |
| const [session, setSession] = useState(loadSession) | |
| const login = useCallback((accessToken, user) => { | |
| const next = { accessToken, user } | |
| setSession(next) | |
| try { | |
| sessionStorage.setItem(STORAGE_KEY, JSON.stringify(next)) | |
| } catch { | |
| /* storage unavailable — keep in memory only */ | |
| } | |
| }, []) | |
| const logout = useCallback(() => { | |
| setSession(null) | |
| try { | |
| sessionStorage.removeItem(STORAGE_KEY) | |
| } catch { | |
| /* ignore */ | |
| } | |
| }, []) | |
| const value = { | |
| accessToken: session?.accessToken ?? null, | |
| user: session?.user ?? null, | |
| isAuthenticated: Boolean(session?.accessToken), | |
| login, | |
| logout, | |
| } | |
| return <AuthContext.Provider value={value}>{children}</AuthContext.Provider> | |
| } | |