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 ActionCode from 'material-ui/svg-icons/action/code'; import ActionHome from 'material-ui/svg-icons/action/home'; import ActionBugReport from 'material-ui/svg-icons/action/bug-report'; import ActionQuestionAnswer from 'material-ui/svg-icons/action/question-answer'; import LogoutIcon from 'material-ui/svg-icons/action/power-settings-new'; const logo = require('../images/logo.svg'); import SideMenuJournals from './SideMenuJournals'; import ErrorBoundary from '../components/ErrorBoundary'; import { routeResolver, getPalette } 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; }; 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 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 withRouter(connect( mapStateToProps )(SideMenu));