"use client"; import { useState, useEffect } from "react"; import Image from "next/image"; import { Card, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { cn } from "@/lib/utils"; import { fetchMetadata } from "@/lib/fetchers/metadata"; import { AspectRatio } from "@/components/ui/aspect-ratio"; type LinkCardProps = { url: string; metadata?: { title: string; image?: string; description?: string; creator?: string; type?: string; "theme-color"?: string; }; className?: string; }; export default function LinkCard({ url, metadata: _metadata, className, }: LinkCardProps) { const [metadata, setMetadata] = useState(_metadata); useEffect(() => { if (!metadata) { fetchMetadata(url) ?.then((r) => { if (r) { setMetadata(r.data); } }) .catch((e) => console.log("fetch error")); } }, [url]); if (metadata) { return ( {metadata.image && (
{metadata.title}
)}
{metadata.title} {metadata.description}
); } return null; }