'use client'; import { useState } from 'react'; import { LoginPrompt } from '@/components/auth/LoginPrompt'; import { PlazaApiError, submitCommentReport } 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 CommentReportButtonProps = { commentId: string; }; export function CommentReportButton({ commentId }: CommentReportButtonProps) { const [open, setOpen] = useState(false); const [reason, setReason] = useState<(typeof REPORT_REASONS)[number]['value']>('spam'); const [busy, setBusy] = useState(false); const [loginOpen, setLoginOpen] = useState(false); const submit = async () => { setBusy(true); try { await submitCommentReport(commentId, reason); setOpen(false); } catch (error) { if (error instanceof PlazaApiError && error.code === 'unauthorized') { setLoginOpen(true); } } finally { setBusy(false); } }; if (!open) { return ( <> setLoginOpen(false)} message="登录后可举报" /> ); } return ( setLoginOpen(false)} message="登录后可举报" /> ); }