Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import * as React from 'react';
- import { connect } from 'react-redux';
- import { Redirect } from 'react-router';
- import { getAuthenticatedUser } from '@/store/ducks/auth';
- import { User } from '@/store/ducks/users';
- import { State } from '@/store';
- type StateProps = {
- user: User|null;
- isLoading: boolean;
- };
- type Props<P = {}> = P & StateProps;
- export const onlyGuest = <P extends object>(Component: React.ComponentType<P>) => {
- const mapStateToProps = (state: State): StateProps => ({
- isLoading: state.auth.loading,
- user: getAuthenticatedUser(state)
- });
- class Guest extends React.PureComponent<Props<P>> {
- render(): JSX.Element {
- const { user, isLoading, ...props } = this.props;
- if (!! user && ! isLoading) {
- return (
- <Redirect to='/inbox'/>
- );
- }
- return (
- <Component {...props as P} />
- );
- }
- }
- return connect<StateProps, {}, P, State>(mapStateToProps)(Guest);
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement