import { useReducer, useEffect } from "react"; import AsyncStorage from "@react-native-community/async-storage"; import { makeProvider } from "../../_lib"; import { authReducer } from "./auth-reducer"; import { useApiProvider } from "../api-provider"; import { useContentProvider } from "../content-provider"; import { User } from "./types"; import { AuthResult } from "../../services/auth"; function useAuth() { const [authState, dispatch] = useReducer(authReducer, {}); const { content: { signIn: { INVALID_CODE_MESSAGE }, }, } = useContentProvider(); const { setNewApi } = useApiProvider(); useEffect(() => { (async () => { /* const accessCode = await AsyncStorage.getItem('access-code'); if (accessCode) { login(accessCode); }*/ })(); }, []); async function login(authResult: AuthResult) { dispatch({ type: "loginSuccess", payload: { auth: authResult }, }); } function logout() { dispatch({ type: "logout" }); } return { ...authState, login, logout, }; } export const { Provider: AuthProvider, useProvider: useAuthProvider, } = makeProvider(useAuth);