-
Notifications
You must be signed in to change notification settings - Fork 272
/
FileAttachment.tsx
36 lines (31 loc) · 1.3 KB
/
FileAttachment.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import React from 'react';
import { FileIcon } from '../ReactFileUtilities';
import type { Attachment } from 'stream-chat';
import { DownloadButton, FileSizeIndicator } from './components';
import type { DefaultStreamChatGenerics } from '../../types/types';
export type FileAttachmentProps<
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics
> = {
attachment: Attachment<StreamChatGenerics>;
};
const UnMemoizedFileAttachment = <
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics
>({
attachment,
}: FileAttachmentProps<StreamChatGenerics>) => (
<div className='str-chat__message-attachment-file--item' data-testid='attachment-file'>
<FileIcon className='str-chat__file-icon' mimeType={attachment.mime_type} />
<div className='str-chat__message-attachment-file--item-text'>
<div className='str-chat__message-attachment-file--item-first-row'>
<div className='str-chat__message-attachment-file--item-name' data-testid='file-title'>
{attachment.title}
</div>
<DownloadButton assetUrl={attachment.asset_url} />
</div>
<FileSizeIndicator fileSize={attachment.file_size} />
</div>
</div>
);
export const FileAttachment = React.memo(
UnMemoizedFileAttachment,
) as typeof UnMemoizedFileAttachment;