'use client'; import { deleteLink, getLinkInfo } from "@/app/utils/api"; import { Clipboard } from "lucide-react"; import { useRouter, useParams } from "next/navigation"; import { useEffect, useState } from "react"; export default function Home() { const params = useParams(); const router = useRouter(); const [errorMessage, setErrorMessage] = useState(null); const [successMessage, setSuccessMessage] = useState(null); const [loading, setLoading] = useState(false); const [shortUrl, setShortUrl] = useState(null); const [manageUrl, setManageUrl] = useState(null); const [linkInfo, setLinkInfo] = useState<{ longUrl: string; shortUrl: string; manageUrl: string; title: string; createdAt: string; clicks: number; } | null>(null); async function handleDelete(event: React.FormEvent) { event.preventDefault(); setLoading(true); try { await deleteLink(params.id?.toString() || ""); router.push("/"); } catch (err) { console.error(err); setErrorMessage("Failed to delete the link. Please try again."); setSuccessMessage(null); setLoading(false); } } function copyToClipboard(text: string, title: string) { navigator.clipboard.writeText(text).then( () => { setSuccessMessage(`Copied ${title} to clipboard!`); }, () => { setErrorMessage(`Failed to copy ${title} to clipboard.`); } ); } useEffect(() => { if (!params.id) return; getLinkInfo(params.id?.toString()).then(setLinkInfo).catch((err) => { console.error(err); setErrorMessage("Failed to retrieve link info. Please check the link ID."); }); }, [params.id]); return (
{errorMessage && (

{errorMessage}

)} {successMessage && (

{successMessage}

)} {linkInfo && (

Shareable short link:

Redirects to:

{linkInfo.longUrl}

Created at:

{new Date(linkInfo.createdAt).toLocaleString()}

Total clicks:

{linkInfo.clicks}

View analytics and manage your short link at:

{linkInfo.manageUrl}
)}

Secret link ID:
{params.id}

); }