11// System imports
22import React , { useState } from "react" ;
3- import { useNavigate } from "react-router-dom" ;
3+ import { useNavigate , useParams } from "react-router-dom" ;
4+ import { useEffect } from "react" ;
45import Form from "react-bootstrap/Form" ;
56
67// Local imports
78import CbUpload from "../components/CbUpload" ;
89import CbHeader from "../components/CbHeader" ;
10+ import CbShareNav from "../components/CbShareNav" ;
11+ import CbFiles from "../components/CbFiles" ;
912
1013// Root Component
11- export function CbRoot ( ) {
14+ export function CbRoot ( { isHome } ) {
1215
1316 // Useful hooks
14- const [ shareId , setShareId ] = useState ( "" ) ;
17+ const [ shareId , setShareId ] = useState ( useParams ( ) . shareId ) ;
18+ console . log ( shareId )
19+ console . log ( isHome )
1520 const navigate = useNavigate ( ) ;
21+ // Hooks if in share
22+ const [ viewMode , setViewMode ] = useState ( "list" ) ;
23+ const [ fileInfo , setFileInfo ] = useState ( [ ] ) ;
1624
1725 // Evaluate entered shareId
1826 function handleChange ( e ) {
@@ -24,18 +32,52 @@ export function CbRoot() {
2432 navigate ( `/share/${ encodeURIComponent ( shareId ) } ` ) ;
2533 }
2634
27- // Load files placeholder to quiet warnings
28- function loadFilesPlaceHolder ( ) { }
35+ function loadFiles ( ) {
36+ const shareId_forLoad = window . location . pathname . split ( '/' ) [ 2 ] ; // Use useRef instead?
37+ console . log ( "loadFiles" )
38+ var request = new XMLHttpRequest ( ) ;
39+ request . open ( 'GET' , `/api/search?shareId=${ shareId_forLoad } ` , true ) ;
40+ request . onload = function ( ) {
41+ if ( request . status >= 200 && request . status < 400 ) {
42+ var data = JSON . parse ( this . response ) ;
43+ if ( data . exists ) {
44+ setFileInfo ( data . files ) ;
45+ } else {
46+ // Put a warning toast here
47+ navigate ( '/' )
48+ }
49+ } else {
50+ // Put a warning toast here
51+ navigate ( '/' )
52+ }
53+ }
54+ request . send ( ) ;
55+ }
56+
57+ useEffect ( ( ) => {
58+ if ( ! isHome ) {
59+ setFileInfo ( [ ] ) ;
60+ loadFiles ( ) ;
61+ }
62+ console . log ( "useEffect" )
63+ } , [ isHome ] ) ;
2964
3065 return (
3166 < div >
3267 < CbHeader />
33- < CbUpload loadFiles = { loadFilesPlaceHolder } />
34- < Form className = "mt-3" onChange = { handleChange } onSubmit = { handleRedirect } >
35- < Form . Group >
36- < Form . Control type = "text" placeholder = "Enter Share ID to Retrieve an Existing Share" />
37- </ Form . Group >
38- </ Form >
68+ < CbUpload loadFiles = { loadFiles } />
69+ { isHome ?
70+ < Form className = "mt-3" onChange = { handleChange } onSubmit = { handleRedirect } >
71+ < Form . Group >
72+ < Form . Control type = "text" placeholder = "Enter Share ID to Retrieve an Existing Share" />
73+ </ Form . Group >
74+ </ Form >
75+ :
76+ < div >
77+ < CbShareNav changeViewMode = { setViewMode } viewMode = { viewMode } />
78+ < CbFiles fileInfo = { fileInfo } viewMode = { viewMode } loadFiles = { loadFiles } />
79+ </ div >
80+ }
3981 </ div >
4082 ) ;
4183}
0 commit comments