import React, { Fragment } from 'react'; import { Link, Route, Switch } from 'react-router-dom'; import 'bootstrap/dist/css/bootstrap.min.css'; import './app.css'; import Header from './header'; import MapApp from './map-app'; import { Building } from './models/building'; import { User } from './models/user'; import AboutPage from './pages/about'; import ChangesPage from './pages/changes'; import ContactPage from './pages/contact'; import ContributorAgreementPage from './pages/contributor-agreement'; import DataAccuracyPage from './pages/data-accuracy'; import DataExtracts from './pages/data-extracts'; import OrdnanceSurveyLicencePage from './pages/ordnance-survey-licence'; import OrdnanceSurveyUprnPage from './pages/ordnance-survey-uprn'; import PrivacyPolicyPage from './pages/privacy-policy'; import ForgottenPassword from './user/forgotten-password'; import Login from './user/login'; import MyAccountPage from './user/my-account'; import PasswordReset from './user/password-reset'; import SignUp from './user/signup'; interface AppProps { user?: User; building?: Building; building_like?: boolean; revisionId: number; } interface AppState { user?: User; } /** * App component * * This is the top-level stateful frontend component * - rendered from props, instantiated either server-side in server.js or client-side in * client.js * - state (including user, current building) is initialised from props * - callbacks to update top-level state are passed down to subcomponents * - render method wraps a react-router switch - this drives which version of the sidebar and * map or other pages are rendered, based on the URL. Use a react-router-dom in * child components to navigate without a full page reload. */ class App extends React.Component { static mapAppPaths = ['/', '/:mode(view|edit|multi-edit)/:category/:building(\\d+)?/(history)?']; constructor(props: Readonly) { super(props); this.state = { user: props.user }; this.login = this.login.bind(this); this.updateUser = this.updateUser.bind(this); this.logout = this.logout.bind(this); } login(user) { if (user.error) { this.logout(); return; } this.setState({user: user}); } updateUser(user){ this.setState({user: { ...this.state.user, ...user }}); } logout() { this.setState({user: undefined}); } render() { return (
( )} />
); } } /** * Component to fall back on in case of 404 or no other match */ const NotFound = () => (

Page not found

We can’t find that one anywhere.

Back home
); export default App;