import VideoCard from "../components/video/VideoCard"; import PageHeader from "../components/PageHeader"; import NoAccessPage from "../components/NoAccessPage"; import { useEffect, useState } from "react"; import { Link, useNavigate } from "react-router-dom"; import { getClips, deleteClip } from "../utils/api/clips"; import { useAuth } from "../utils/AuthContext"; import type { Clip } from "../utils/types"; const MyClips = () => { const { user, loading } = useAuth(); const [clips, setClips] = useState([]); const [error, setError] = useState(null); const navigate = useNavigate(); useEffect(() => { if (!user) return; getClips() .then((data) => setClips(data.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()))) .catch((err) => setError(err instanceof Error ? err.message : "Failed to load clips")); }, [user]); const handleDelete = async (id: number) => { try { await deleteClip(id); setClips(prev => prev.filter(c => c.id !== id)); } catch (err) { setError(err instanceof Error ? err.message : "Failed to delete clip"); } }; if (loading) return null; if (!user) return ; return (

{clips.length} cut

{clips.map((clip) => ( navigate(`/clips/${clip.id}/edit`)} onDelete={() => handleDelete(clip.id)} /> ))}
{clips.length === 0 && !error && (

No clips yet.

Cut one from the stream panel, or{" "} upload a file{" "} to trim it down here.

)} {error &&

{error}

}
); } export default MyClips;