| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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<UserContextInterface>({
- isAuthenticated: false,
- login: () => {},
- logout: () => {},
- updateUser: () => {},
- });
- const UserContextProvider: FC = ({ children }) => {
- const [user, setUser] = useState<User>();
- 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 (
- <UserContext.Provider
- value={{ user, login, logout, updateUser, isAuthenticated }}
- >
- {children}
- </UserContext.Provider>
- );
- };
- export const useAuth = () => useContext(UserContext);
- export default UserContextProvider;
|