2024-07-23 18:37:59 +02:00
|
|
|
import React, {useEffect, useState} from "react";
|
2024-07-22 14:45:21 +02:00
|
|
|
import ReactDOM from "react-dom/client";
|
2024-07-23 18:37:59 +02:00
|
|
|
import TextPage from "./pages/TextPage";
|
2024-07-25 02:09:49 +02:00
|
|
|
import {HashRouter, Navigate, Route, Routes} from "react-router-dom";
|
2024-07-23 18:37:59 +02:00
|
|
|
|
|
|
|
|
import tosContent from "./content/tos.md"
|
|
|
|
|
import privacyContent from "./content/privacy.md"
|
|
|
|
|
import LoginPage from "./pages/LoginPage";
|
|
|
|
|
import {createTheme, PaletteMode, ThemeProvider} from "@mui/material";
|
|
|
|
|
import CssBaseline from "@mui/material/CssBaseline";
|
|
|
|
|
import AppAppBar from "./components/AppAppBar";
|
2024-07-25 02:09:49 +02:00
|
|
|
import {getUser} from "./utils/api/user";
|
2024-07-23 21:57:23 +02:00
|
|
|
import DrawerBox from "./components/DrawerBox";
|
|
|
|
|
import Box from "@mui/material/Box";
|
2024-07-25 02:09:49 +02:00
|
|
|
import DomainFinderPage from "./pages/DomainFinderPage";
|
|
|
|
|
import EntityFinderPage from "./pages/EntityFinderPage";
|
|
|
|
|
import NameserverFinderPage from "./pages/NameserverFinderPage";
|
|
|
|
|
import ReverseDirectoryPage from "./pages/ReverseDirectoryPage";
|
|
|
|
|
import TldPage from "./pages/TldPage";
|
|
|
|
|
import WatchlistsPage from "./pages/WatchlistsPage";
|
2024-07-22 14:45:21 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement);
|
2024-07-23 18:37:59 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
function App() {
|
|
|
|
|
const [mode, setMode] = React.useState<PaletteMode>('dark')
|
|
|
|
|
const [isAuthenticated, setIsAuthenticated] = useState<boolean>(false);
|
|
|
|
|
|
|
|
|
|
const toggleColorMode = () => {
|
|
|
|
|
setMode((prev) => (prev === 'dark' ? 'light' : 'dark'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
getUser().then(() => setIsAuthenticated(true)).catch(() => setIsAuthenticated(false))
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
return <React.StrictMode>
|
|
|
|
|
<ThemeProvider theme={createTheme({palette: {mode: mode}})}>
|
|
|
|
|
<HashRouter>
|
2024-07-23 21:57:23 +02:00
|
|
|
<Box sx={{display: 'flex'}}>
|
|
|
|
|
<CssBaseline/>
|
|
|
|
|
{isAuthenticated && <DrawerBox/>}
|
|
|
|
|
|
|
|
|
|
<AppAppBar mode={mode} toggleColorMode={toggleColorMode} isAuthenticated={isAuthenticated}/>
|
|
|
|
|
<Routes>
|
|
|
|
|
{isAuthenticated ?
|
2024-07-25 02:09:49 +02:00
|
|
|
<>
|
|
|
|
|
<Route path="/" element={<Navigate to="/finder/domain"/>}/>
|
|
|
|
|
<Route path="/finder/domain" element={<DomainFinderPage/>}/>
|
|
|
|
|
<Route path="/finder/entity" element={<EntityFinderPage/>}/>
|
|
|
|
|
<Route path="/finder/nameserver" element={<NameserverFinderPage/>}/>
|
|
|
|
|
<Route path="/reverse" element={<ReverseDirectoryPage/>}/>
|
|
|
|
|
<Route path="/tld" element={<TldPage/>}/>
|
|
|
|
|
<Route path="/watchlist" element={<WatchlistsPage/>}/>
|
|
|
|
|
</>
|
2024-07-23 21:57:23 +02:00
|
|
|
:
|
|
|
|
|
<Route path="*" element={<LoginPage setIsAuthenticated={setIsAuthenticated}/>}/>
|
|
|
|
|
}
|
|
|
|
|
<Route path="/tos" element={<TextPage content={tosContent}/>}/>
|
|
|
|
|
<Route path="/privacy" element={<TextPage content={privacyContent}/>}/>
|
|
|
|
|
|
|
|
|
|
</Routes>
|
|
|
|
|
</Box>
|
2024-07-23 18:37:59 +02:00
|
|
|
</HashRouter>
|
|
|
|
|
</ThemeProvider>
|
2024-07-22 14:45:21 +02:00
|
|
|
</React.StrictMode>
|
2024-07-23 18:37:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
root.render(<App/>)
|