1- import React , { lazy , Suspense , useState } from "react" ;
2- import { BrowserRouter , Route , Switch } from "react-router-dom" ;
1+ import React , { lazy , Suspense , useState , useEffect } from "react" ;
2+ import { Router , Route , Switch , Redirect } from "react-router-dom" ;
33import {
44 StylesProvider ,
55 createGenerateClassName ,
66} from "@material-ui/core/styles" ;
7+ import { createBrowserHistory } from "history" ;
78
89import Progress from "./components/Progress" ;
910import Header from "./components/Header" ;
1011
1112const MarketingLazy = lazy ( ( ) => import ( "./components/MarketingApp" ) ) ;
1213const AuthLazy = lazy ( ( ) => import ( "./components/AuthApp" ) ) ;
14+ const DashboardLazy = lazy ( ( ) => import ( "./components/DashboardApp" ) ) ;
1315
1416
1517const generateClassName = createGenerateClassName ( {
1618 productionPrefix : "co" , // co for container
1719} ) ;
1820
21+ const history = createBrowserHistory ( ) ;
22+
1923export default ( ) => {
2024const [ isSignedIn , setIsSignedIn ] = useState ( false ) ;
25+
26+ useEffect ( ( ) => {
27+ if ( isSignedIn ) {
28+ history . push ( '/dashboard' ) ;
29+ }
30+ } , [ isSignedIn ] ) ;
31+
2132 return (
22- < BrowserRouter >
33+ < Router history = { history } >
2334 < StylesProvider generateClassName = { generateClassName } >
2435 < div >
2536 < Header onSignOut = { ( ) => setIsSignedIn ( false ) } isSignedIn = { isSignedIn } />
@@ -30,11 +41,15 @@ const [isSignedIn,setIsSignedIn] = useState(false);
3041 < Route path = "/auth" >
3142 < AuthLazy onSignIn = { ( ) => setIsSignedIn ( true ) } />
3243 </ Route >
44+ < Route path = "/dashboard" >
45+ { ! isSignedIn && < Redirect to = "/" /> }
46+ < DashboardLazy />
47+ </ Route >
3348 < Route path = "/" component = { MarketingLazy } />
3449 </ Switch >
3550 </ Suspense >
3651 </ div >
3752 </ StylesProvider >
38- </ BrowserRouter >
53+ </ Router >
3954 ) ;
4055} ;
0 commit comments