"use client"; import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { UserAvatar } from "./user-avatar"; import { deleteThought, Me, Thought } from "@/lib/api"; import { formatDistanceToNow } from "date-fns"; import { useAuth } from "@/hooks/use-auth"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { MoreHorizontal, Trash2 } from "lucide-react"; interface ThoughtCardProps { thought: Thought; author: { username: string; avatarUrl?: string | null; }; currentUser: Me | null; } export function ThoughtCard({ thought, author, currentUser, }: ThoughtCardProps) { const [isAlertOpen, setIsAlertOpen] = useState(false); const { token } = useAuth(); const router = useRouter(); const timeAgo = formatDistanceToNow(new Date(thought.createdAt), { addSuffix: true, }); const isAuthor = currentUser?.username === thought.authorUsername; const handleDelete = async () => { if (!token) return; try { await deleteThought(thought.id, token); toast.success("Thought deleted successfully."); router.refresh(); // Refresh the feed } catch (error) { toast.error("Failed to delete thought."); } finally { setIsAlertOpen(false); } }; return ( <> {author.username} {timeAgo} {isAuthor && ( setIsAlertOpen(true)} > Delete )} {thought.content} Are you sure? This action cannot be undone. This will permanently delete your thought. Cancel Delete > ); }
{thought.content}