import React, { useState } from 'react'; import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar"; import { Textarea } from "@/components/ui/textarea"; import { ScrollArea } from "@/components/ui/scroll-area"; import { MessageCircle, ThumbsUp, Reply, X } from "lucide-react"; const DiscussionSection = () => { const [comment, setComment] = useState(''); const [replyingTo, setReplyingTo] = useState(null); const [discussions, setDiscussions] = useState([ { id: 1, user: 'Sarah Chen', avatar: '/api/placeholder/32/32', content: 'This is really interesting! I particularly liked the section about state management.', likes: 12, replies: [ { id: 101, user: 'Alex Kim', avatar: '/api/placeholder/32/32', content: '@Sarah Chen Thanks for sharing your thoughts!', timestamp: '1 hour ago' } ], timestamp: '2 hours ago' }, { id: 2, user: 'Alex Kim', avatar: '/api/placeholder/32/32', content: 'Great explanation! Could you elaborate more on the useEffect implementation?', likes: 8, replies: [], timestamp: '1 hour ago' } ]); const handleSubmit = () => { if (comment.trim()) { if (replyingTo) { // Add reply to existing comment const updatedDiscussions = discussions.map(discussion => { if (discussion.id === replyingTo.commentId) { return { ...discussion, replies: [...discussion.replies, { id: Date.now(), user: 'Current User', avatar: '/api/placeholder/32/32', content: comment, timestamp: 'Just now' }] }; } return discussion; }); setDiscussions(updatedDiscussions); setReplyingTo(null); } else { // Add new top-level comment const newComment = { id: Date.now(), user: 'Current User', avatar: '/api/placeholder/32/32', content: comment, likes: 0, replies: [], timestamp: 'Just now' }; setDiscussions([...discussions, newComment]); } setComment(''); } }; const handleReply = (commentId, userName) => { setReplyingTo({ commentId, userName }); setComment(`@${userName} `); }; const cancelReply = () => { setReplyingTo(null); setComment(''); }; return ( <>
{discussions.map((discussion) => (
{discussion.user[0]}
{discussion.user} {discussion.timestamp}

{discussion.content}

{discussion.replies.length} replies
{/* Nested replies */} {discussion.replies.length > 0 && (
{discussion.replies.map((reply) => (
{reply.user[0]}
{reply.user} {reply.timestamp}

{reply.content}

))}
)}
))}
U
{replyingTo && (
Replying to {replyingTo.userName}
)}