"use client"; import { Card, CardContent, CardFooter, CardHeader, } from "@/components/ui/card"; import { UserAvatar } from "./user-avatar"; import { Me, Thought } from "@/lib/api"; import { deleteThought } from "@/app/actions/thoughts"; import { format, formatDistanceToNow } from "date-fns"; import { useAuth } from "@/hooks/use-auth"; import { useState } from "react"; import { toast } from "sonner"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Button } from "@/components/ui/button"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; import { CornerUpLeft, MessageSquare, MoreHorizontal, Trash2, } from "lucide-react"; import { ReplyForm } from "@/components/reply-form"; import Link from "next/link"; import { cn } from "@/lib/utils"; interface ThoughtCardProps { thought: Thought; currentUser: Me | null; isReply?: boolean; } export function ThoughtCard({ thought, currentUser, isReply = false, }: ThoughtCardProps) { const { author } = thought; const [isAlertOpen, setIsAlertOpen] = useState(false); const [isReplyOpen, setIsReplyOpen] = useState(false); const { token } = useAuth(); const timeAgo = formatDistanceToNow(new Date(thought.createdAt), { addSuffix: true, }); const isAuthor = currentUser?.username === thought.author.username; const handleDelete = async () => { try { await deleteThought(thought.id); toast.success("Thought deleted successfully."); } catch (error) { console.error("Failed to delete thought:", error); toast.error("Failed to delete thought."); } finally { setIsAlertOpen(false); } }; return ( <>
{thought.content}
) : (