panjareh
Version:
Panjareh using aparat and phoenix-video-player to play videos on desktops and tvs.
42 lines (36 loc) • 928 B
JavaScript
import React, { useReducer } from "react";
import PropTypes from "prop-types";
import UserContext from "./user-context";
const DEFAULT_VALUE = {
token: null,
isLoading: true,
isAuthenticated: false,
};
function reducer(state, action) {
switch (action.type) {
case "set-user":
return {
...state,
...action.payload,
isAuthenticated:
action.payload.token && action.payload.token.length > 0,
};
case "reset":
return { ...DEFAULT_VALUE };
default:
throw new Error();
}
}
const UserProvider = ({ children }) => {
const [state, dispatch] = useReducer(reducer, DEFAULT_VALUE);
return (
<UserContext.Provider value={{ state, dispatch }}>
{children}
</UserContext.Provider>
);
};
UserProvider.propTypes = {
children: PropTypes.node.isRequired,
};
UserProvider.displayName = "UserProvider";
export default React.memo(UserProvider);