import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { Copy, Check, ArrowRight } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog"; import { Separator } from "@/components/ui/separator"; import { Spinner } from "@/components/ui/spinner"; import { useDateFormat } from "@/hooks/useDateFormat"; import { NotificationIcon, getTypeAccent, getTypeButtonClasses, resolveNotificationLink } from "@/components/generic/notificationDisplay"; export default function NotificationDetailDialog({ notification, onOpenChange }) { const { fmtDateTime } = useDateFormat(); const navigate = useNavigate(); const [copiedCode, setCopiedCode] = useState(false); const [navigating, setNavigating] = useState(false); async function handleCopyCode(code) { await navigator.clipboard.writeText(code); setCopiedCode(true); setTimeout(() => setCopiedCode(false), 2000); } const link = notification ? resolveNotificationLink(notification.type, notification.data) : null; async function handleGo() { if (!link) return; setNavigating(true); await link.go(navigate); setNavigating(false); onOpenChange(false); } return ( { if (!open) { onOpenChange(false); setCopiedCode(false); } }}>
{notification?.title}
{notification?.message}
{notification?.data?.groupCode && ( <>

Group Code

{notification.data.groupCode}

Share this code with others so they can join your group.

)} {link && ( )}
{notification?.type?.replace("_", " ")} {notification ? fmtDateTime(notification.createdAt) : ""}
); }