"use client"; import { useEffect, useState } from "react"; interface FilePreviewProps { fileId: string; fileType: string; // Pass the file type as a prop } export function FilePreview({ fileId, fileType }: FilePreviewProps) { const [mediaSrc, setMediaSrc] = useState(null); const [error, setError] = useState(null); useEffect(() => { if (!fileId) { setError("File ID is required."); return; } let objectUrl: string | null = null; const fetchMedia = async () => { try { const response = await fetch(`/api/files/serv?id=${encodeURIComponent(fileId)}`); if (!response.ok) { throw new Error("Failed to fetch media"); } const blob = await response.blob(); objectUrl = URL.createObjectURL(blob); setMediaSrc(objectUrl); } catch (err) { console.error(err); setError("Failed to load media."); } }; fetchMedia(); return () => { if (objectUrl) { URL.revokeObjectURL(objectUrl); } }; }, [fileId]); if (error) { return
{error}
; } if (!mediaSrc) { return
Loading...
; } if (fileType.startsWith("video")) { return ( ); } if (fileType.startsWith("audio")) { return ( ); } return Media preview; }