import { SyntheticEvent, useState } from "react"; import { Orbit } from "@uiball/loaders"; import clsx from "clsx"; import IconVideo from "@/assets/icons/file.video.svg"; import { formatBytes } from "../../utils"; import ExpiredMessage from "./ExpiredMessage"; import DownloadArea from "./DownloadArea"; type Props = { url: string; name: string; size: number; download: string; }; const VideoMessage = ({ url, name, size, download }: Props) => { const [canPlay, setCanPlay] = useState(false); const [error, setError] = useState(false); const _size = formatBytes(size); const handlePlay = (evt: SyntheticEvent) => { const infoEle = evt.currentTarget.previousSibling; if (infoEle) { (infoEle as HTMLDivElement).classList.add("hidden"); } }; const handlePause = (evt: SyntheticEvent) => { const infoEle = evt.currentTarget.previousSibling; if (infoEle) { (infoEle as HTMLDivElement).classList.remove("hidden"); } }; const handleCanPlay = () => { setCanPlay(true); }; const handleError = () => { setCanPlay(false); setError(true); }; const tipClass = "absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"; if (error) return ; return (
{name} {_size}
{!canPlay && !error ? (
) : null}
); }; export default VideoMessage;