diff --git a/src/app/components/upload-card/UploadCardRenderer.tsx b/src/app/components/upload-card/UploadCardRenderer.tsx
index 4383e204..48371f8a 100644
--- a/src/app/components/upload-card/UploadCardRenderer.tsx
+++ b/src/app/components/upload-card/UploadCardRenderer.tsx
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import React, { ReactNode, useEffect } from 'react';
import { Box, Chip, Icon, IconButton, Icons, Text, color, config, toRem } from 'folds';
import { UploadCard, UploadCardError, UploadCardProgress } from './UploadCard';
import { UploadStatus, UploadSuccess, useBindUploadAtom } from '../../state/upload';
@@ -12,8 +12,17 @@ import {
} from '../../state/room/roomInputDrafts';
import { useObjectURL } from '../../hooks/useObjectURL';
-type ImagePreviewProps = { fileItem: TUploadItem; onSpoiler: (marked: boolean) => void };
-function ImagePreview({ fileItem, onSpoiler }: ImagePreviewProps) {
+type RenderPreviewProps = {
+ style: React.CSSProperties;
+ src: string;
+ alt: string;
+};
+type MediaPreviewProps = {
+ fileItem: TUploadItem;
+ onSpoiler: (marked: boolean) => void;
+ renderPreviewElement: (props: RenderPreviewProps) => ReactNode;
+};
+function MediaPreview({ fileItem, onSpoiler, renderPreviewElement }: MediaPreviewProps) {
const { originalFile, metadata } = fileItem;
const fileUrl = useObjectURL(originalFile);
@@ -26,16 +35,16 @@ function ImagePreview({ fileItem, onSpoiler }: ImagePreviewProps) {
position: 'relative',
}}
>
-
+ },
+ src: fileUrl,
+ alt: originalFile.name,
+ })}
{fileItem.originalFile.type.startsWith('image') && (
-
+
}
+ />
+ )}
+ {fileItem.originalFile.type.startsWith('video') && (
+ }
+ />
)}
{upload.status === UploadStatus.Idle && (