/
dbataeva
/
tasksApp
Обзор
Документация
Войти
/
dbataeva
/
tasksApp
Код
Запросы
2
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
task9
appProject/src/app/AuthProvider.tsx
37 строк
940 B
Daria Bataeva
refactor(task7): move code into appProject folder
26 окт 2025, 14:56
26 окт 2025, 14:56
489b5b2
Код
Авторство
О чём код?
import { FC, memo, PropsWithChildren, useCallback, useEffect, useMemo, useState, } from 'react'; import { AuthContext } from 'shared/auth'; import { getItemFromLocalStorage } from 'shared/getItemFromLocalStorage'; const LOCAL_STORAGE_ITEM_KEY = 'accessToken'; export const AuthProvider: FC<PropsWithChildren> = memo(({ children }) => { const [accessToken, setAccessToken] = useState( getItemFromLocalStorage(LOCAL_STORAGE_ITEM_KEY) ); const unsetAccessToken = useCallback(() => { setAccessToken(null); window.localStorage.removeItem(LOCAL_STORAGE_ITEM_KEY); }, []); useEffect(() => { if (accessToken) { window.localStorage.setItem(LOCAL_STORAGE_ITEM_KEY, accessToken); } }, [accessToken]); const contextValue = useMemo( () => ({ accessToken, setAccessToken, unsetAccessToken }), [accessToken, setAccessToken, unsetAccessToken] ); return <AuthContext value={contextValue}>{children}</AuthContext>; });