"use client"; import dynamic from "next/dynamic"; import { useState } from "react"; import { z } from "zod"; import { Loader, Status } from "~/components/global"; import useLoading from "~/hooks/useLoading"; import { Schema_File } from "~/types/schema"; import { CreateDownloadToken } from "actions"; const Plyr = dynamic(() => import("plyr-react"), { ssr: false, loading: () => , }); type Props = { file: z.infer; }; export default function PreviewVideo({ file }: Props) { const [videoSrc, setVideoSrc] = useState(""); const [error, setError] = useState(""); const loading = useLoading(async () => { try { if (!file.encryptedWebContentLink) { setError("No video to preview"); return; } const token = await CreateDownloadToken(); setVideoSrc(`/api/stream/${file.encryptedId}?token=${token}`); } catch (error) { const e = error as Error; console.error(e); setError(e.message); } }, [file]); return (
{loading ? ( ) : error ? ( ) : (
)}
); }