import React from "react"; import useRouter from "use-react-router"; import appStateReducer, { AppStateReducerAction } from "./reducer"; import IAppState, { initialAppState } from "./state"; export type AppStateContextType = [ IAppState, React.Dispatch ]; export const AppStateContext = React.createContext([ initialAppState, () => undefined ]); const AppStateProvider: React.FC = ({ children }) => { const { location } = useRouter(); const stateAndDispatch = React.useReducer(appStateReducer, initialAppState); const [state, dispatch] = stateAndDispatch; React.useEffect(() => { if (!!state.error) { dispatch({ payload: { error: null }, type: "displayError" }); } }, [location]); return ( {children} ); }; export const { Consumer } = AppStateContext; export default AppStateProvider;