Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
App.js 3.88 KiB
import React, { useEffect } from "react";
import './App.css';
import {
  Redirect,
  Route,
  BrowserRouter as Router,
  Switch,
} from 'react-router-dom';
import { ThemeProvider } from "@material-ui/core/styles"
import { CssBaseline } from "@material-ui/core";
import { theme } from "./style/Theme";
import { IOCListView } from './views/IOC/IOCListView';
import { HomeAccessControl } from './views/home/HomeAccessControl';
import { GlobalAppBar } from './components/navigation/GlobalAppBar/GlobalAppBar';
import { IOCDetailsAccessControl } from './views/IOC/IOCDetailsAccessControl';
import { DeploymentsAccessControl } from './views/deployments/DeploymentsAccessControl';
import { DeploymentDetailsAccessControl } from './views/deployments/DeploymentDetailsAccessControl';
import { APIProvider, UserProvider } from './api/SwaggerApi';
import { HostListView } from "./views/host/HostListView";
import { HostDetailsAccessControl } from "./views/host/HostDetailsAccessControl";
import { StatisticsView } from "./views/statistics/StatisticsView";
import { HelpView } from "./views/help/HelpView";
import { AboutView } from "./views/about/AboutView";
import { SnackbarProvider } from 'notistack';
import TokenRenew from './components/auth/TokenRenew';
import { NotificationProvider } from './components/common/notification/Notifications';
import NotFound from './components/navigation/NotFound';
import { applicationSubTitle } from './components/common/Helper';
import { AppErrorBoundary } from "./components/navigation/ErrorBoundary/ErrorBoundary";

//setting up the application (TAB)title
function App() {
  useEffect(() => {
    document.title = "CE deployment" + applicationSubTitle();
  }, []);

  return (
    <AppErrorBoundary>
      <SnackbarProvider preventDuplicate maxSnack="5">
        <ThemeProvider theme={theme}>
          <CssBaseline />
          <Router>
            <APIProvider >
              <UserProvider>
                <TokenRenew />
                <Switch>
                  <Route path="/"
                    render={({ match }) => {
                      console.log(match)
                      return (
                        <NotificationProvider>
                          <GlobalAppBar>
                            <Switch>
                              <Route exact path="/">
                                <Redirect to="/home" />
                              </Route>
                              <Route path="/home" component={HomeAccessControl} exact/>
                              <Route path="/iocs/:id([0-9]+)" component={IOCDetailsAccessControl} exact/>
                              <Route path="/iocs" component={IOCListView} exact/>
                              <Route path="/deployments/:id([0-9]+)" component={DeploymentDetailsAccessControl} exact/>
                              <Route path="/deployments" component={DeploymentsAccessControl} exact/>
                              <Route path="/hosts/:id([0-9]+)" component={HostDetailsAccessControl} exact/>
                              <Route path="/hosts" component={HostListView} exact/>
                              <Route path="/statistics" component={StatisticsView} exact/>
                              <Route path="/help" component={HelpView} exact/>
                              <Route path="/about" component={AboutView} exact/>
                              <Route>
                                <NotFound />
                              </Route>
                            </Switch>
                          </GlobalAppBar>
                        </NotificationProvider>
                      )
                    }
                    }
                  />
                  <Route>
                    <NotFound />
                  </Route>
                </Switch>
              </UserProvider>
            </APIProvider>
          </Router>
        </ThemeProvider>
      </SnackbarProvider>
    </AppErrorBoundary>
  );
}

export default App;