import React, {ReactNode} from 'react'; import {useState} from 'react'; import {PowerSchoolData, Section, Page} from "./interfaces"; import {Container} from "react-bootstrap"; import TeacherInterface from "./views/Teachers"; import Header from "./components/navigation/Header"; import Footer from "./components/navigation/Footer"; import LoginInterface from "./views/Login"; import SectionsInterface from "./views/Sections"; import DashboardInterface from "./views/Dashboard"; import ScheduleInterface from "./views/Schedule"; import GradesInterface from "./views/Grades"; import {globalContext} from "./contexts"; export const App = () => { // State holding the PowerSchool data object. This has everything that needs to be displayed const [psData, setPsData] = useState(null); // States for page routing const [currentPage, setCurrentPage] = useState(Page.login); const [selectedSection, setSelectedSection] = useState
(); // Set page to login if no data is loaded if (psData === null && currentPage !== Page.login) { setCurrentPage(Page.login) } // Redirect from login to dashboard if data has been loaded if (psData !== null && currentPage === Page.login) { setCurrentPage(Page.dashboard) } // If the grads page has been selected but no section has been defined, redirect to the sections page to avoid an error if (currentPage === Page.sectionGrades && selectedSection === undefined) { setCurrentPage(Page.sections) } // Mapping the page enum to page components const router: { [K in Page]: ReactNode } = { [Page.login]: , [Page.dashboard]: , [Page.sections]: , // @ts-ignore [Page.sectionGrades]: , [Page.schedule]: , [Page.teachers]: }; return ( <> {/* @ts-ignore */}
{ setPsData(null); setCurrentPage(Page.login); }}/> {router[currentPage]}