Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import React, { ComponentProps, FC } from 'react';
import { Router, RouteComponentProps } from "@reach/router";
import { Layout, UserData, UserOrders, UserAddresses, UserOrder } from '../components';
import { useUserContext } from '../contexts';
import { navigate } from 'gatsby';
interface CustomRouteProps extends RouteComponentProps {
component: FC,
rest?: ComponentProps<any>
}
const PrivateRoute: FC<CustomRouteProps> = ({ component: Component, ...rest }) => {
const { isAuth } = useUserContext();
if (!isAuth) {
navigate("/profile");
return null;
}
return <Component {...rest} />;
};
const DefaultRoute: FC<CustomRouteProps> = ({ component: Component, location, ...rest }) => {
if (location?.pathname !== '/profile') {
navigate("/profile");
return null;
}
return <Component {...rest} />;
};
const Profile = () => {
return (
<Layout>
<Router basepath="/profile">
<PrivateRoute path="/addresses" component={UserAddresses} />
<PrivateRoute path="/orders" component={UserOrders} />
<PrivateRoute path="/order/:number" component={UserOrder} />
<UserData path="/" />
<DefaultRoute path="/*" component={UserData} />
</Router>
</Layout>
);
}
export default Profile; |