import React, { Component } from "react"; import Main from "./Main"; import { connect } from "react-redux"; import { withRouter } from "react-router-dom"; import { fetchMe } from "../modules/auth"; import "./App.css"; import "../components/ConfirmAlert.css"; import Header from "../components/Header"; import PrimaryNavigation from "../components/PrimaryNavigation"; import Loading from "../components/Loading"; import ErrorPage from "../components/ErrorPage"; import Footer from "../components/Footer"; type Props = { me: any, error: Error, loading: boolean, authenticated?: boolean, fetchMe: () => void }; class App extends Component { componentDidMount() { this.props.fetchMe(); } render() { const { entry, loading, error, authenticated } = this.props; let content; const navigation = authenticated ? : ""; if (loading) { content = ; } else if (error) { content = ( ); } else { content =
; } return (
{navigation}
{content}
); } } const mapDispatchToProps = (dispatch: any) => { return { fetchMe: () => dispatch(fetchMe()) }; }; const mapStateToProps = state => { let mapped = state.auth.me || {}; if (state.auth.login) { mapped.authenticated = state.auth.login.authenticated; } return mapped; }; export default withRouter( connect( mapStateToProps, mapDispatchToProps )(App) );