import * as React from 'react'; import { connect } from 'react-redux'; import { RouteComponentProps, withRouter } from 'react-router'; import { List, ListItem, ListSubheader, ListDivider } from '../widgets/List'; import { Theme, withTheme } from '@material-ui/core/styles'; import ActionCode from '@material-ui/icons/Code'; import ActionHome from '@material-ui/icons/Home'; import ActionBugReport from '@material-ui/icons/BugReport'; import ActionQuestionAnswer from '@material-ui/icons/QuestionAnswer'; import LogoutIcon from '@material-ui/icons/PowerSettingsNew'; const logo = require('../images/logo.svg'); import SideMenuJournals from './SideMenuJournals'; import ErrorBoundary from '../components/ErrorBoundary'; import { routeResolver } from '../App'; import { store, JournalsType, UserInfoData, StoreState, CredentialsData } from '../store'; import { logout } from '../store/actions'; import * as C from '../constants'; interface PropsType { etesync: CredentialsData | null; onCloseDrawerRequest: () => void; } type PropsTypeInner = RouteComponentProps<{}> & PropsType & { journals: JournalsType; userInfo: UserInfoData; theme: Theme; }; class SideMenu extends React.PureComponent { constructor(props: PropsTypeInner) { super(props); this.logout = this.logout.bind(this); this.journalClicked = this.journalClicked.bind(this); } logout() { store.dispatch(logout()); this.props.onCloseDrawerRequest(); } journalClicked(journalUid: string) { this.props.onCloseDrawerRequest(); this.props.history.push(routeResolver.getRoute('journals._id', { journalUid: journalUid })); } render() { const { theme } = this.props; const username = (this.props.etesync && this.props.etesync.credentials.email) ? this.props.etesync.credentials.email : C.appName; let loggedInItems; if (this.props.etesync) { const journals = (this.props.etesync.encryptionKey && this.props.journals && this.props.journals.value && this.props.userInfo) && ( Journals ); loggedInItems = ( } onClick={this.logout} /> {journals} ); } return (
{username}
} onClick={() => { this.props.onCloseDrawerRequest(); this.props.history.push(routeResolver.getRoute('home')); }} /> {loggedInItems} External Links } href={C.homePage} /> } href={C.faq} /> } href={C.sourceCode} /> } href={C.reportIssue} />
); } } const mapStateToProps = (state: StoreState, props: PropsType) => { return { journals: state.cache.journals, userInfo: state.cache.userInfo.value, }; }; export default withTheme()(withRouter(connect( mapStateToProps )(SideMenu)));