import "./Home.scss"; import { Alignment, Breadcrumbs, Button, Classes, IBreadcrumbProps, Icon, Menu, Navbar, Popover, Spinner, } from "@blueprintjs/core"; import * as React from "react"; import { connect } from "react-redux"; import { Route, RouteComponentProps, Switch, withRouter } from "react-router"; import { animated, config, Transition } from "react-spring/renderprops"; import { Dispatch } from "redux"; import { IDocumentJSON } from "~../../src/entity/Document"; import { IUserJSON } from "~../../src/entity/User"; import { Account } from "~Account/Account"; import { DocumentEdit } from "~Documents/DocumentEdit"; import { DocumentView } from "~Documents/DocumentView"; import { Overview } from "~Documents/Overview"; import { toggleDarkMode } from "~redux/localSettings/actions"; import { IAppState } from "~redux/reducers"; import { logoutUser } from "~redux/user/actions"; export interface IHomeProps extends RouteComponentProps { allDocs: { [key: number]: IDocumentJSON }; user: IUserJSON | null; fetching: boolean; uploading: boolean; dirty: boolean; darkMode: boolean; logout: () => void; dispatchToggleDarkMode: () => void; } export class HomeComponent extends React.PureComponent { constructor(props: IHomeProps) { super(props); } public render() { const { location } = this.props.history; const breadcrumbs: IBreadcrumbProps[] = [ { icon: "home", text: "Home", onClick: () => this.props.history.push("/"), }, ]; if ((this.props.match.params as any).id && this.props.allDocs) { const { id } = this.props.match.params as { id: number }; if (this.props.allDocs[id]) { breadcrumbs.push({ icon: "document", text: this.props.allDocs[id].name, onClick: () => this.props.history.push(`/docs/${id}`), }); } } return ( this.props.user && (
{this.props.user.username} } content={this.menu()} />
{(_location: any) => (style: any) => ( )}
) ); } private menu() { return ( this.props.history.push("/account")} /> {this.props.darkMode ? ( ) : ( )} ); } } function mapStateToProps(state: IAppState) { return { allDocs: state.docs.all, user: state.user.user, darkMode: state.localSettings.darkMode, fetching: state.docs.fetching, uploading: state.docs.uploading, dirty: state.docs.dirty, }; } function mapDispatchToProps(dispatch: Dispatch) { return { logout: () => dispatch(logoutUser()), dispatchToggleDarkMode: () => dispatch(toggleDarkMode()), }; } export const Home = withRouter( connect(mapStateToProps, mapDispatchToProps)(HomeComponent), );