import clsx from "clsx"; import { formatTime, stringToDate, dateToTimeAgo } from "../../utils/utils.ts"; import { Link } from "react-router-dom"; import {useEffect, useState} from "react"; import { isThumbnailAvailable } from "../../utils/endpoints.ts"; type VideoCardProps = { id: number, title: string, duration: number, createdAt: string, className?: string } const fallbackThumbnail = "../../../public/default_thumbnail.png"; const VideoCard = ({ id, title, duration, createdAt, className }: VideoCardProps) => { const [timeAgo, setTimeAgo] = useState(dateToTimeAgo(stringToDate(createdAt))); const [thumbnailAvailable, setThumbnailAvailable] = useState(true); setTimeout(() => { setTimeAgo(dateToTimeAgo(stringToDate(createdAt))) }, 1000); useEffect(() => { isThumbnailAvailable(id) .then((available) => { setThumbnailAvailable(available); }) .catch(() => { setThumbnailAvailable(false); }); }); return (
{formatTime(duration)}
{title == "" ? "(No Title)" : title}
{timeAgo}