diff --git a/digital-course-file/src/Routes.js b/digital-course-file/src/Routes.js index b94f0138cb7745d340e4f86f6425d684a91150ec..44dfbc32981b6fe54bdada32ab009b6f3136f789 100644 --- a/digital-course-file/src/Routes.js +++ b/digital-course-file/src/Routes.js @@ -1,30 +1,68 @@ -import React from "react" -import {BrowserRouter, Switch, Route} from "react-router-dom" +import React, { useState, useEffect } from 'react' +import { BrowserRouter, Switch, Route } from 'react-router-dom' // import PrivateRoutes from "./auth/helper/PrivateRoutes" // import Cart from "./core/Cart" -import Home from "./core/Home" -import Hero from "./user/Hero" -import Signin from "./user/Signin" +import Home from './core/Home' +import Hero from './user/Hero' +import Signin from './user/Signin' // import UserDashboard from "./user/UserDashboard" -import copyright from "./user/copyright" +import copyright from './user/copyright' +import { Link } from 'react-router-dom' +import { Container, Button, Navbar, Nav } from 'react-bootstrap' +import fire from './fire' -const Routes=()=>{ - return( - <BrowserRouter> - <Switch> - {/*Folders*/} - <Route path = "/folder/:folderId" component ={Hero}/> +const Routes = () => { + const [user, setUser] = useState('') + const authListener = () => { + fire.auth().onAuthStateChanged((user) => { + if (user) { + setUser(user) + } else { + setUser('') + } + }) + } - <Route path="/" exact component={Signin}/> - <Route path="/signin" exact component={Signin}/> - <Route path="/copyright" exact component={copyright}/> - {/* <Route path="/cart" exact component={Cart}/> */} - {/* <PrivateRoutes path="/user/dashboard" exact component={UserDashboard}/> */} - </Switch> - </BrowserRouter> - ); + useEffect(() => { + authListener() + }, []) + const handleLogout = () => { + fire.auth().signOut() + //this.props.history.push('/') + } + return ( + <BrowserRouter> + <section className='hero'> + <nav> + <Navbar.Brand as={Link} to='/'> + <h2>Course File System</h2> + </Navbar.Brand> + {user && ( + <Link to="/"> + <button className='logoutbutton' onClick={()=>handleLogout}> + Logout + </button></Link> + )} + </nav> + </section> + <Switch> + {/*Folders*/} + <Route path='/folder/:folderId' component={Hero} /> + <Route path='/' exact component={Signin} /> + <Route path='/signin' exact component={Signin} /> + <Route path='/copyright' exact component={copyright} /> + </Switch> + <Navbar fixed='bottom' variant='light' bg='light'> + <Container className='ml-sm-2'> + <Nav.Link eventKey={2} href='copyright'> + © Digital Course File Group 2 + </Nav.Link> + </Container> + </Navbar> + </BrowserRouter> + ) } -export default Routes; \ No newline at end of file +export default Routes diff --git a/digital-course-file/src/hooks/useFolder.js b/digital-course-file/src/hooks/useFolder.js index a770aa27e2642b866a7456059292f569222e50ec..c68f56173c4c7c82c7420de61afd24cca0782f75 100644 --- a/digital-course-file/src/hooks/useFolder.js +++ b/digital-course-file/src/hooks/useFolder.js @@ -1,6 +1,8 @@ import { useState,useReducer, useEffect } from "react"; import { database } from '../fire.js' import firebase from 'firebase' +import Loader from "react-loader-spinner"; + export const ROOT_FOLDER = {name: 'Root', id : null , path : [] }; @@ -83,6 +85,15 @@ export function useFolder( folderId = null, folder= null) { useEffect( () => { + if (!firebase.auth().currentUser) { + return <><div className='centered'><Loader + type="Puff" + color="#00BFFF" + height={100} + width={100} + timeout={3000} //3 secs + /></div></> + } return database.folders .where("parentId", "==" ,folderId) .where("userId","==", firebase.auth().currentUser.uid) diff --git a/digital-course-file/src/user/Hero.js b/digital-course-file/src/user/Hero.js index 4272da39fb687054086889fcc0f56d5b8ec342af..46b201d767c69f99b8af68f2ca1bb82c9e750f3b 100644 --- a/digital-course-file/src/user/Hero.js +++ b/digital-course-file/src/user/Hero.js @@ -1,4 +1,4 @@ -import React from 'react' +import React, { useEffect, useState } from 'react' import AddFolder from './AddFolder' import { Container, Button, Navbar, Nav } from 'react-bootstrap' import { useFolder } from '.././hooks/useFolder' @@ -8,41 +8,37 @@ import Deffolders from './Deffolders' import { useParams } from 'react-router-dom' import copyright from './copyright' import { Link } from 'react-router-dom' -import Loader from "react-loader-spinner"; +import Loader from 'react-loader-spinner' const Hero = ({ handleLogout }) => { const { folderId } = useParams() const { folder, childFolders } = useFolder(folderId) - console.log(folder); - if (!folder) { - return <><div className='centered'><Loader - type="Puff" - color="#00BFFF" - height={100} - width={100} - timeout={3000} //3 secs - /></div></> - } + + if (!folder) { + return ( + <> + <div className='centered'> + <Loader + type='Puff' + color='#00BFFF' + height={100} + width={100} + timeout={3000} //3 secs + /> + </div> + </> + ) + } return ( <> - <section className='hero'> - <nav> - <Navbar.Brand as={Link} to='/'> - <h2>Course File System</h2> - </Navbar.Brand> - - <button className='logoutbutton' onClick={handleLogout}> - Logout - </button> - </nav> - </section> - <Container fluid> <div className='d-flex align-items-center'> <FolderNav currentFolder={folder} /> <AddFolder currentFolder={folder} /> - {(childFolders.length == 0 && folder.id==null) && <Deffolders currentFolder={folder} />} + {childFolders.length == 0 && folder.id == null && ( + <Deffolders currentFolder={folder} /> + )} </div> {childFolders.length > 0 && ( @@ -59,13 +55,6 @@ const Hero = ({ handleLogout }) => { </div> )} </Container> - <Navbar fixed='bottom' variant='light' bg='light'> - <Container className='ml-sm-2'> - <Nav.Link eventKey={2} href='copyright'> - © Digital Course File Group 2 - </Nav.Link> - </Container> - </Navbar> </> ) }