import React from 'react'; import { isImageTypeSupported, isVideoTypeSupported, } from '../../util/GoogleChrome'; import { Image } from './Image'; import { StagedGenericAttachment } from './StagedGenericAttachment'; import { StagedPlaceholderAttachment } from './StagedPlaceholderAttachment'; import { LocalizerType } from '../../types/Util'; import { areAllAttachmentsVisual, AttachmentType, getUrl, isVideoAttachment, } from '../../types/Attachment'; export interface Props { attachments: Array; i18n: LocalizerType; onClickAttachment: (attachment: AttachmentType) => void; onCloseAttachment: (attachment: AttachmentType) => void; onAddAttachment: () => void; onClose: () => void; } const IMAGE_WIDTH = 120; const IMAGE_HEIGHT = 120; export const AttachmentList = ({ attachments, i18n, onAddAttachment, onClickAttachment, onCloseAttachment, onClose, }: Props): JSX.Element | null => { if (!attachments.length) { return null; } const allVisualAttachments = areAllAttachmentsVisual(attachments); return (
{attachments.length > 1 ? (
) : null}
{(attachments || []).map((attachment, index) => { const { contentType } = attachment; if ( isImageTypeSupported(contentType) || isVideoTypeSupported(contentType) ) { const imageKey = getUrl(attachment) || attachment.fileName || index; const clickCallback = attachments.length > 1 ? onClickAttachment : undefined; return ( {i18n('stagedImageAttachment', { onCloseAttachment(attachment); }} /> ); } const genericKey = getUrl(attachment) || attachment.fileName || index; return ( ); })} {allVisualAttachments ? ( ) : null}
); };