import React from 'react'; import { AttachmentType } from './types/AttachmentType'; import { DocumentListItem } from './DocumentListItem'; import { ItemClickEvent } from './types/ItemClickEvent'; import { MediaGridItem } from './MediaGridItem'; import { Message } from './types/Message'; import { missingCaseError } from '../../../util/missingCaseError'; import { Localizer } from '../../../types/Util'; interface Props { i18n: Localizer; header?: string; type: AttachmentType; messages: Array; onItemClick?: (event: ItemClickEvent) => void; } export class AttachmentSection extends React.Component { public render() { const { header } = this.props; return (

{header}

{this.renderItems()}
); } private renderItems() { const { i18n, messages, type } = this.props; return messages.map((message, index, array) => { const shouldShowSeparator = index < array.length - 1; const { attachments } = message; const firstAttachment = attachments[0]; const onClick = this.createClickHandler(message); switch (type) { case 'media': return ( ); case 'documents': return ( ); default: return missingCaseError(type); } }); } private createClickHandler = (message: Message) => () => { const { onItemClick, type } = this.props; if (!onItemClick) { return; } onItemClick({ type, message }); }; }