do 404 modal redirect on unknown routes

This commit is contained in:
John Mitchell 2019-04-09 10:39:47 -04:00
parent 81267c7212
commit ad0e409448
No known key found for this signature in database
GPG Key ID: FE6A9B5BD4EB5C94
3 changed files with 61 additions and 11 deletions

View File

@ -0,0 +1,42 @@
import React, { Component } from 'react';
import { Redirect, withRouter } from 'react-router-dom';
import { Trans } from '@lingui/macro';
import { withRootDialog } from '../contexts/RootDialog';
class NotifyAndRedirect extends Component {
constructor (props) {
super(props);
const { setRootDialogMessage, location } = this.props;
setRootDialogMessage({
title: '404',
bodyText: (
<Trans>
Cannot find route
<strong>{` ${location.pathname}`}</strong>
.
</Trans>
),
variant: 'warning'
});
}
render () {
const { to, push, from, exact, strict, sensitive } = this.props;
return (
<Redirect
to={to}
push={push}
from={from}
exact={exact}
strict={strict}
sensitive={sensitive}
/>
);
}
}
export default withRootDialog(withRouter(NotifyAndRedirect));

View File

@ -20,6 +20,7 @@ import './components/SelectedList/styles.scss';
import { Config } from './contexts/Config';
import Background from './components/Background';
import NotifyAndRedirect from './components/NotifyAndRedirect';
import RootProvider from './RootProvider';
import App from './App';
@ -220,17 +221,22 @@ export async function main (render) {
},
]}
render={({ routeGroups }) => (
routeGroups
.reduce((allRoutes, { routes }) => allRoutes.concat(routes), [])
.map(({ component: PageComponent, path }) => (
<Route
key={path}
path={path}
render={({ match }) => (
<PageComponent match={match} />
)}
/>
))
<Switch>
{routeGroups
.reduce((allRoutes, { routes }) => allRoutes.concat(routes), [])
.map(({ component: PageComponent, path }) => (
<Route
key={path}
path={path}
render={({ match }) => (
<PageComponent match={match} />
)}
/>
))
.concat([
<NotifyAndRedirect key="redirect" to="/" />
])}
</Switch>
)}
/>
)}

View File

@ -17,6 +17,7 @@ import { withNetwork } from '../../../../contexts/Network';
import Tabs from '../../../../components/Tabs/Tabs';
import Tab from '../../../../components/Tabs/Tab';
import NotifyAndRedirect from '../../../../components/NotifyAndRedirect';
import OrganizationAccess from './OrganizationAccess';
import OrganizationDetail from './OrganizationDetail';
@ -175,6 +176,7 @@ class Organization extends Component {
/>
)}
/>
{organization && <NotifyAndRedirect to={`/organizations/${match.params.id}/details`} />}
</Switch>
{error ? 'error!' : ''}
{loading ? 'loading...' : ''}