Personal-Assistant-Client / src /context /AuthContextProvider.jsx
Cripple-Lee's picture
Sync from GitHub via hub-sync
9282e59 verified
Raw History Blame Contribute Delete
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>
}