stream-chat-react
Version:
React components to create chat conversations or livestream style chat
31 lines (30 loc) • 2.23 kB
JavaScript
import React from 'react';
import { FileIcon } from 'react-file-utils';
import { DownloadButton } from './DownloadButton';
import { FileSizeIndicator } from './FileSizeIndicator';
import { SafeAnchor } from '../SafeAnchor/SafeAnchor';
import { useChatContext } from '../../context/ChatContext';
var UnMemoizedFileAttachmentV1 = function (_a) {
var attachment = _a.attachment;
return (React.createElement("div", { className: 'str-chat__message-attachment-file--item', "data-testid": 'attachment-file' },
React.createElement(FileIcon, { big: true, mimeType: attachment.mime_type, size: 30 }),
React.createElement("div", { className: 'str-chat__message-attachment-file--item-text' },
React.createElement(SafeAnchor, { download: true, href: attachment.asset_url, target: '_blank' }, attachment.title),
React.createElement(FileSizeIndicator, { fileSize: attachment.file_size }))));
};
var UnMemoizedFileAttachmentV2 = function (_a) {
var attachment = _a.attachment;
return (React.createElement("div", { className: 'str-chat__message-attachment-file--item', "data-testid": 'attachment-file' },
React.createElement(FileIcon, { className: 'str-chat__file-icon', mimeType: attachment.mime_type, version: '2' }),
React.createElement("div", { className: 'str-chat__message-attachment-file--item-text' },
React.createElement("div", { className: 'str-chat__message-attachment-file--item-first-row' },
React.createElement("div", { className: 'str-chat__message-attachment-file--item-name', "data-testid": 'file-title' }, attachment.title),
React.createElement(DownloadButton, { assetUrl: attachment.asset_url })),
React.createElement(FileSizeIndicator, { fileSize: attachment.file_size }))));
};
var UnMemoizedFileAttachment = function (_a) {
var attachment = _a.attachment;
var themeVersion = useChatContext('FileAttachment').themeVersion;
return themeVersion === '2' ? (React.createElement(UnMemoizedFileAttachmentV2, { attachment: attachment })) : (React.createElement(UnMemoizedFileAttachmentV1, { attachment: attachment }));
};
export var FileAttachment = React.memo(UnMemoizedFileAttachment);