'use client'; import { useState } from 'react'; import { LoginPrompt } from '@/components/auth/LoginPrompt'; import { PlazaApiError, submitPostReport } from '@/lib/api'; const REPORT_REASONS = [ { value: 'spam', label: '垃圾广告' }, { value: 'violence', label: '暴力内容' }, { value: 'porn', label: '色情低俗' }, { value: 'political', label: '政治敏感' }, { value: 'privacy', label: '侵犯隐私' }, { value: 'other', label: '其他' }, ] as const; type PostReportButtonProps = { postId: string; }; export function PostReportButton({ postId }: PostReportButtonProps) { const [open, setOpen] = useState(false); const [reason, setReason] = useState<(typeof REPORT_REASONS)[number]['value']>('spam'); const [detail, setDetail] = useState(''); const [message, setMessage] = useState(''); const [busy, setBusy] = useState(false); const [loginOpen, setLoginOpen] = useState(false); const submit = async () => { setBusy(true); setMessage(''); try { await submitPostReport(postId, reason, detail.trim() || undefined); setMessage('举报已提交,感谢反馈'); setOpen(false); setDetail(''); } catch (error) { if (error instanceof PlazaApiError && error.code === 'unauthorized') { setLoginOpen(true); } else { setMessage(error instanceof Error ? error.message : '提交失败'); } } finally { setBusy(false); } }; return ( <> {open ? (

举报此帖子