myems-web/src/components/email/Inbox.js

Summary

Maintainability
A
1 hr
Test Coverage
import React, { Fragment } from 'react';
import { Card } from 'reactstrap';
import InboxHeader from './inbox/InboxHeader';
import InboxBody from './inbox/InboxBody';
import InboxFooter from './inbox/InboxFooter';
import useBulkSelect from '../../hooks/useBulkSelect';
import usePagination from '../../hooks/usePagination';
import rawEmails from '../../data/email/emails';

const emailIds = rawEmails.map(email => email.id);

const Inbox = () => {
  // Hook
  const { data: paginationData, meta: paginationMeta, handler: paginationHandler } = usePagination(emailIds, 10);
  const {
    selectedItems,
    isSelectedItem,
    isAllSelected,
    isIndeterminate,
    toggleSelectedItem,
    toggleIsAllSelected
  } = useBulkSelect(emailIds);

  return (
    <Fragment>
      <Card>
        <InboxHeader
          isAllSelected={isAllSelected}
          isIndeterminate={isIndeterminate}
          toggleIsAllSelected={toggleIsAllSelected}
          selectedItems={selectedItems}
        />
        <InboxBody
          isSelectedItem={isSelectedItem}
          toggleSelectedItem={toggleSelectedItem}
          currentItems={paginationData}
        />
        <InboxFooter meta={paginationMeta} handler={paginationHandler} />
      </Card>
    </Fragment>
  );
};

export default Inbox;