WordClockESP/interface/src/AppRouting.tsx

61 lines
2.2 KiB
TypeScript
Raw Normal View History

import React, { Component } from 'react';
import { Switch, Redirect } from 'react-router';
2019-05-14 21:47:04 +00:00
import * as Authentication from './authentication/Authentication';
import AuthenticationWrapper from './authentication/AuthenticationWrapper';
import UnauthenticatedRoute from './authentication/UnauthenticatedRoute';
import AuthenticatedRoute from './authentication/AuthenticatedRoute';
import SignIn from './SignIn';
2019-07-06 22:56:30 +00:00
import ProjectRouting from './project/ProjectRouting';
import WiFiConnection from './wifi/WiFiConnection';
import AccessPoint from './ap/AccessPoint';
import NetworkTime from './ntp/NetworkTime';
import Security from './security/Security';
import System from './system/System';
import { PROJECT_PATH } from './api';
import Mqtt from './mqtt/Mqtt';
import { withFeatures, WithFeaturesProps } from './features/FeaturesContext';
import { Features } from './features/types';
export const getDefaultRoute = (features: Features) => features.project ? `/${PROJECT_PATH}/` : "/wifi/";
class AppRouting extends Component<WithFeaturesProps> {
2019-05-14 21:47:04 +00:00
componentDidMount() {
2019-05-14 21:47:04 +00:00
Authentication.clearLoginRedirect();
}
render() {
const { features } = this.props;
2019-05-14 21:47:04 +00:00
return (
<AuthenticationWrapper>
<Switch>
{features.security && (
<UnauthenticatedRoute exact path="/" component={SignIn} />
)}
{features.project && (
<AuthenticatedRoute exact path={`/${PROJECT_PATH}/*`} component={ProjectRouting} />
)}
<AuthenticatedRoute exact path="/wifi/*" component={WiFiConnection} />
2019-05-26 20:27:35 +00:00
<AuthenticatedRoute exact path="/ap/*" component={AccessPoint} />
{features.ntp && (
2019-05-26 20:27:35 +00:00
<AuthenticatedRoute exact path="/ntp/*" component={NetworkTime} />
)}
{features.mqtt && (
<AuthenticatedRoute exact path="/mqtt/*" component={Mqtt} />
)}
{features.security && (
<AuthenticatedRoute exact path="/security/*" component={Security} />
)}
<AuthenticatedRoute exact path="/system/*" component={System} />
<Redirect to={getDefaultRoute(features)} />
2019-05-14 21:47:04 +00:00
</Switch>
</AuthenticationWrapper>
)
}
}
export default withFeatures(AppRouting);