'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="登录后可举报" />
);
}