11import Workspace from 'components/Workspace' ;
22import { useEffect , useState } from 'react' ;
3- import { Route , Routes , useNavigate } from 'react-router-dom' ;
3+ import { Route , Routes , useNavigate , useParams } from 'react-router-dom' ;
44import { getWorkspaces } from 'src/apis/user' ;
55import DefaultWorkspace from 'src/components/Workspace/DefaultWorkspace' ;
66import WorkspacesContext from 'src/contexts/workspaces' ;
77import useUserContext from 'src/hooks/context/useUserContext' ;
8+ import LoadingPage from 'src/pages/Loading' ;
89import { Workspace as TWorkspace } from 'src/types/workspace' ;
910
1011import Layout from './Layout' ;
1112
1213function WorkspacePage ( ) {
1314 const { user } = useUserContext ( ) ;
15+
16+ const params = useParams ( ) ;
1417 const navigate = useNavigate ( ) ;
1518
1619 const [ workspaces , setWorkspaces ] = useState < TWorkspace [ ] > ( [ ] ) ;
20+ const [ isLoaded , setIsLoaded ] = useState < boolean > ( false ) ;
1721
1822 const loadWorkspaces = async ( ) => {
1923 if ( ! user ) {
@@ -27,13 +31,17 @@ function WorkspacePage() {
2731 id : userId ,
2832 } ) ;
2933
34+ setIsLoaded ( true ) ;
35+
3036 setWorkspaces ( userWorkspaces ) ;
3137
3238 if ( ! userWorkspaces . length ) {
3339 navigate ( '/workspace' ) ;
3440 return ;
3541 }
3642
43+ if ( params [ '*' ] ?. length ) return ;
44+
3745 const defaultWorkspace = userWorkspaces [ 0 ] ;
3846 const { id : workspaceId } = defaultWorkspace ;
3947
@@ -46,12 +54,16 @@ function WorkspacePage() {
4654
4755 return (
4856 < WorkspacesContext . Provider value = { { workspaces, setWorkspaces } } >
49- < Routes >
50- < Route path = "/" element = { < Layout /> } >
51- < Route index element = { < DefaultWorkspace /> } />
52- < Route path = "/:id" element = { < Workspace /> } />
53- </ Route >
54- </ Routes >
57+ { isLoaded ? (
58+ < Routes >
59+ < Route path = "/" element = { < Layout /> } >
60+ < Route index element = { < DefaultWorkspace /> } />
61+ < Route path = "/:id" element = { < Workspace /> } />
62+ </ Route >
63+ </ Routes >
64+ ) : (
65+ < LoadingPage />
66+ ) }
5567 </ WorkspacesContext . Provider >
5668 ) ;
5769}
0 commit comments