import React, { useState } from 'react' import { Plus, Edit2, Trash2, CheckCircle, Circle, Heart, Loader2 } from 'lucide-react' import { ForumPost, ForumTopic } from '@/proxy/forum/forum' interface PostManagementProps { posts: ForumPost[] topics: ForumTopic[] loading: boolean onCreatePost: (post: { topicId: string; content: string; parentPostId?: string }) => Promise onUpdatePost: (id: string, post: Partial) => Promise onDeletePost: (id: string) => Promise onMarkPostAsAcceptedAnswer: (id: string) => Promise onUnmarkPostAsAcceptedAnswer: (id: string) => Promise } export function PostManagement({ posts, topics, loading, onCreatePost, onUpdatePost, onDeletePost, onMarkPostAsAcceptedAnswer, onUnmarkPostAsAcceptedAnswer, }: PostManagementProps) { const [showCreateForm, setShowCreateForm] = useState(false) const [editingPost, setEditingPost] = useState(null) const [formData, setFormData] = useState({ topicId: '', content: '', isAcceptedAnswer: false, }) const [submitting, setSubmitting] = useState(false) const resetForm = () => { setFormData({ topicId: '', content: '', isAcceptedAnswer: false, }) setShowCreateForm(false) setEditingPost(null) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (submitting) return try { setSubmitting(true) if (editingPost) { await onUpdatePost(editingPost.id, formData) } else { await onCreatePost(formData) } resetForm() } catch (error) { console.error('Error submitting form:', error) } finally { setSubmitting(false) } } const handleEdit = (post: ForumPost) => { setEditingPost(post) setFormData({ topicId: post.topicId, content: post.content, isAcceptedAnswer: post.isAcceptedAnswer, }) setShowCreateForm(true) } const handleToggleAcceptedAnswer = async (post: ForumPost) => { try { if (post.isAcceptedAnswer) { await onUnmarkPostAsAcceptedAnswer(post.id) } else { await onMarkPostAsAcceptedAnswer(post.id) } } catch (error) { console.error('Error toggling accepted answer:', error) } } const handleDelete = async (id: string) => { if (confirm('Are you sure you want to delete this post?')) { try { await onDeletePost(id) } catch (error) { console.error('Error deleting post:', error) } } } const getTopicTitle = (topicId: string) => { const topic = topics.find((t) => t.id === topicId) return topic ? topic.title : 'Unknown Topic' } const formatDate = (value: string | Date) => { const date = value instanceof Date ? value : new Date(value) if (isNaN(date.getTime())) return 'Invalid Date' return new Intl.DateTimeFormat('en', { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', }).format(date) } return (

Post Management

{/* Create/Edit Form */} {showCreateForm && (

{editingPost ? 'Edit Post' : 'Create New Post'}