import "./Docs.scss"; import { H3 } from "@blueprintjs/core"; import * as React from "react"; import { connect } from "react-redux"; import { Dispatch } from "redux"; import { IDocumentJSON } from "~../../src/entity/Document"; import { LoadingStub } from "~LoadingStub"; import { fetchDocsStart } from "~redux/docs/actions"; import { IAppState } from "~redux/reducers"; import { DocsList } from "./DocsList"; export interface IOverviewComponentProps { allDocs: { [key: number]: IDocumentJSON }; fetching: boolean; spinner: boolean; fetchDocs: () => void; } export class OverviewComponent extends React.PureComponent< IOverviewComponentProps, null > { constructor(props: IOverviewComponentProps) { super(props); } public componentDidMount() { if (!this.props.allDocs) { this.props.fetchDocs(); } } public render() { if (this.props.allDocs) { const docs = Object.values(this.props.allDocs); const recent = [...docs]; recent.sort((a, b) => b.editedAt - a.editedAt); const recentCut = recent.splice(0, 4); return (

Recent

All documents

); } else { return this.props.spinner && ; } } } function mapStateToProps(state: IAppState) { return { allDocs: state.docs.all, fetching: state.docs.fetching, spinner: state.docs.spinner, }; } function mapDispatchToProps(dispatch: Dispatch) { return { fetchDocs: () => dispatch(fetchDocsStart()), }; } export const Overview = connect( mapStateToProps, mapDispatchToProps, )(OverviewComponent);