import React, { useState, FC, useContext } from "react"; interface UserContextInterface { user?: User; isAuthenticated: boolean; login: (user: User) => void; logout: () => void; updateUser: (user: User) => void; } export const UserContext = React.createContext({ isAuthenticated: false, login: () => {}, logout: () => {}, updateUser: () => {}, }); const UserContextProvider: FC = ({ children }) => { const [user, setUser] = useState(); const [isAuthenticated, setIsAuthenticated] = useState(false); const login = (user: User) => { setIsAuthenticated(true); setUser(user); }; const logout = () => { setIsAuthenticated(false); setUser(undefined); }; const updateUser = (newUserData: User) => { if (user) { setUser({ ...newUserData, id: typeof newUserData.id === "string" ? parseInt(newUserData.id) : newUserData.id, }); } }; return ( {children} ); }; export const useAuth = () => useContext(UserContext); export default UserContextProvider;