import React, { useCallback } from 'react'; import classNames from 'classnames'; import moment from 'moment'; // tslint:disable-next-line:match-default-export-name import formatFileSize from 'filesize'; import { useSelector } from 'react-redux'; import { getSelectedConversationKey } from '../../../state/selectors/conversations'; import { saveAttachmentToDisk } from '../../../util/attachmentsUtil'; import { MediaItemType } from '../../lightbox/LightboxGallery'; type Props = { // Required timestamp: number; // Optional fileName?: string; fileSize?: number | null; shouldShowSeparator?: boolean; mediaItem: MediaItemType; }; export const DocumentListItem = (props: Props) => { const { shouldShowSeparator, fileName, fileSize, timestamp } = props; const defaultShowSeparator = shouldShowSeparator === undefined ? true : shouldShowSeparator; const selectedConversationKey = useSelector(getSelectedConversationKey) as string; const saveAttachmentCallback = useCallback(() => { void saveAttachmentToDisk({ messageSender: props.mediaItem.messageSender, messageTimestamp: props.mediaItem.messageTimestamp, attachment: props.mediaItem.attachment, conversationId: selectedConversationKey, }); }, [ selectedConversationKey, props.mediaItem.messageSender, props.mediaItem.messageTimestamp, props.mediaItem.attachment, ]); return (