| | import { FileTypeCategory } from '$lib/enums';
|
| | import { getFileTypeCategory, getFileTypeCategoryByExtension, isImageFile } from '$lib/utils';
|
| |
|
| | export interface AttachmentDisplayItemsOptions {
|
| | uploadedFiles?: ChatUploadedFile[];
|
| | attachments?: DatabaseMessageExtra[];
|
| | }
|
| |
|
| | |
| | |
| |
|
| | function getUploadedFileCategory(file: ChatUploadedFile): FileTypeCategory | null {
|
| | const categoryByMime = getFileTypeCategory(file.type);
|
| |
|
| | if (categoryByMime) {
|
| | return categoryByMime;
|
| | }
|
| |
|
| | return getFileTypeCategoryByExtension(file.name);
|
| | }
|
| |
|
| | |
| | |
| | |
| |
|
| | export function getAttachmentDisplayItems(
|
| | options: AttachmentDisplayItemsOptions
|
| | ): ChatAttachmentDisplayItem[] {
|
| | const { uploadedFiles = [], attachments = [] } = options;
|
| | const items: ChatAttachmentDisplayItem[] = [];
|
| |
|
| |
|
| | for (const file of uploadedFiles) {
|
| | items.push({
|
| | id: file.id,
|
| | name: file.name,
|
| | size: file.size,
|
| | preview: file.preview,
|
| | isImage: getUploadedFileCategory(file) === FileTypeCategory.IMAGE,
|
| | uploadedFile: file,
|
| | textContent: file.textContent
|
| | });
|
| | }
|
| |
|
| |
|
| | for (const [index, attachment] of attachments.entries()) {
|
| | const isImage = isImageFile(attachment);
|
| |
|
| | items.push({
|
| | id: `attachment-${index}`,
|
| | name: attachment.name,
|
| | preview: isImage && 'base64Url' in attachment ? attachment.base64Url : undefined,
|
| | isImage,
|
| | attachment,
|
| | attachmentIndex: index,
|
| | textContent: 'content' in attachment ? attachment.content : undefined
|
| | });
|
| | }
|
| |
|
| | return items.reverse();
|
| | }
|
| |
|