File size: 737 Bytes
81fc505 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import { createContext, useContext, useMemo, useState } from "react";
import { STORAGE_KEYS } from "../lib/storage";
const AuthContext = createContext(null);
export function AuthProvider({ children }) {
const [token, setToken] = useState(() => localStorage.getItem(STORAGE_KEYS.token));
const value = useMemo(
() => ({
token,
login(nextToken) {
localStorage.setItem(STORAGE_KEYS.token, nextToken);
setToken(nextToken);
},
logout() {
localStorage.removeItem(STORAGE_KEYS.token);
setToken(null);
}
}),
[token]
);
return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;
}
export function useAuth() {
return useContext(AuthContext);
}
|