import React, { Component, Fragment } from "react" import { Login, Logout, ResetPassword, ForgotPassword, ConfirmEmail, ProtectedRoute, DefaultRoute, } from "./Auth" import { Home } from "./Home" import { Profile } from "./Profile" import { Users } from "./Users" import { Teams } from "./Teams" import { System } from "./System" import { HeaderButton, HeaderText, Column, Row, Text, Box } from "ui" import { BrowserRouter as Router, Route, Switch } from "react-router-dom" import logoImage from "images/logo.png" import { versionInfo } from "./version" import { sizeInfo, colorInfo } from "ui/style" import { api } from "src/API" import PropTypes from "prop-types" import autobind from "autobind-decorator" export class App extends Component { static propTypes = { history: PropTypes.oneOfType([PropTypes.array, PropTypes.object]), } constructor(props) { super(props) this.state = { loggedInUser: api.loggedInUser, } } componentDidMount() { api.addListener("login", this.handleUpdate) api.addListener("logout", this.handleUpdate) } componentWillUnmount() { api.removeListener("login", this.handleUpdate) api.removeListener("logout", this.handleUpdate) } @autobind handleUpdate() { this.setState({ loggedInUser: api.loggedInUser }) } handleLogout() { // We have to use window here because App does not have history in it's props window.location.replace("/logout") } handleHome() { window.location.replace("/") } handleProfile() { window.location.replace("/profile") } @autobind handleChangeTitle(title) { this.setState({ title }) } render() { const { loggedInUser } = this.state let headerButtonsRight = null let headerButtonsLeft = null if (loggedInUser) { headerButtonsLeft = ( ) headerButtonsRight = ( ) } return ( {headerButtonsLeft} {headerButtonsRight} ( )} /> ( )} /> ( )} /> ( )} /> ( )} /> {"v" + versionInfo.fullVersion} {versionInfo.copyright} ) } }