import React, { useEffect, useState } from 'react'; import ReactPlayer from 'react-player'; import { Badge } from '../../Badge'; import { intervalToDuration } from 'date-fns'; export interface VideoCardProps { source: any; tags?: Tags; callback?: any; } interface Tags { category: { id: number; name: string; slug: string }[]; } export function VideoCard({ source, tags, callback }: VideoCardProps) { const [videoDuration, setVideoDuration] = useState(0); const [videoTitle, setVideoTitle] = useState(''); const handleDuration = (duration: any) => { setVideoDuration(duration); }; useEffect(() => { let link = source.toString(); if (link.includes('vimeo')) { fetch(`https://vimeo.com/api/oembed.json?url=${source}`) .then(res => res.json()) .then(data => setVideoTitle(data.title)); } else { fetch(`https://noembed.com/embed?url=${source}`) .then(res => res.json()) .then(data => setVideoTitle(data.title)); } }, [source]); const duration = intervalToDuration({ start: 0, end: videoDuration * 1000 }); useEffect(() => { callback(videoDuration); }, [callback, videoDuration]); return (
Duration: {`${duration.minutes}m : ${duration.seconds}s`}
)}