1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-22 21:14:18 +00:00
pds-2021-g2-nest/code/frontend/src/App.js

88 lines
2.8 KiB
JavaScript
Raw Normal View History

2021-04-20 22:23:35 +00:00
import {useState} from "react"
import classNames from "classnames"
import Style from "./App.module.css"
2021-04-21 13:08:54 +00:00
import Layout from "./components/Layout"
2021-04-21 13:37:12 +00:00
import ContextTheme from "./contexts/ContextTheme"
import { BrowserRouter } from "react-router-dom"
2021-04-21 16:21:30 +00:00
import { Route, Switch } from "react-router"
import PageHome from "./routes/PageHome"
import PageRepositories from "./routes/PageRepositories"
import PageAlerts from "./routes/PageAlerts"
import PageSettings from "./routes/PageSettings"
import PageSandbox from "./routes/PageSandbox"
2021-04-20 22:09:13 +00:00
2021-04-20 22:07:39 +00:00
2021-04-20 22:23:35 +00:00
export default function App() {
const loadTheme = () => {
if(localStorage) {
console.debug(`Loading theme from localStorage...`)
let value = localStorage.getItem("theme")
if(value) {
console.debug(`Loaded theme ${value}!`)
return value
}
else {
console.debug(`There is no theme stored in the localStorage; setting to "ThemeDark"...`)
return "ThemeDark"
}
}
else {
console.warn(`Can't load theme; localStorage doesn't seem to be available; setting to "ThemeDark"...`)
return "ThemeDark"
}
}
const [theme, _setTheme] = useState(loadTheme());
const setTheme = (value) => {
console.debug(`Changing theme to ${value}...`)
_setTheme(value)
}
const saveTheme = (value) => {
if(localStorage) {
console.debug(`Saving theme ${value} to localStorage...`)
localStorage.setItem("theme", value)
}
else {
console.warn(`Can't save theme; localStorage doesn't seem to be available...`)
}
}
const setAndSaveTheme = (value) => {
setTheme(value)
saveTheme(value)
}
2021-04-20 22:23:35 +00:00
2021-04-20 22:09:13 +00:00
return (
<ContextTheme.Provider value={[theme, setAndSaveTheme]}>
<BrowserRouter>
2021-04-21 13:37:12 +00:00
<div className={classNames(Style.App, theme)}>
<Layout>
2021-04-21 16:21:30 +00:00
<Switch>
<Route path={"/repositories"} exact={true}>
2021-04-21 16:21:30 +00:00
<PageRepositories/>
</Route>
<Route path={"/alerts"} exact={true}>
2021-04-21 16:21:30 +00:00
<PageAlerts/>
</Route>
<Route path={"/settings"} exact={true}>
2021-04-21 16:21:30 +00:00
<PageSettings/>
</Route>
<Route path={"/sandbox"} exact={true}>
<PageSandbox/>
</Route>
<Route path={"/"} exact={true}>
2021-04-21 16:32:05 +00:00
<PageHome/>
</Route>
2021-04-21 16:21:30 +00:00
</Switch>
2021-04-21 13:37:12 +00:00
</Layout>
</div>
</BrowserRouter>
2021-04-21 13:37:12 +00:00
</ContextTheme.Provider>
2021-04-20 22:09:13 +00:00
)
2021-04-20 22:07:39 +00:00
}