支持评论级联软删与后台回收站,并完善 Markdown 代码围栏嵌套。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-06 17:49:05 +08:00
parent e6e7ed73e3
commit bb8d415eb7
13 changed files with 479 additions and 28 deletions

View File

@@ -45,6 +45,7 @@ import { useAuth } from '../hooks/useAuth';
import { joinSEOKeywords, usePageSEO } from '../hooks/usePageSEO';
import { getCachedSiteBranding } from '../hooks/useSiteBranding';
import { formatDateTime, isTimeDiffSignificant } from '../utils/content';
import { collectCommentSubtreeIds } from '../utils/comment';
import { loadMyCommentIds } from '../utils/guest';
import { clearAllFeedCache } from '../utils/feedCache';
import { useGlobalWheelScroll } from '../hooks/useGlobalWheelScroll';
@@ -395,10 +396,11 @@ export default function PostDetailPage() {
const handleDeleteComment = async (comment: Comment) => {
try {
await api.deleteComment(comment.id);
setComments(list => list.filter(c => c.id !== comment.id));
if (replyTo?.id === comment.id) setReplyTo(null);
if (editingCommentId === comment.id) setEditingCommentId(null);
notify.success('评论已删除');
const removeIds = collectCommentSubtreeIds(comments, comment.id);
setComments(list => list.filter(c => !removeIds.has(c.id)));
if (replyTo && removeIds.has(replyTo.id)) setReplyTo(null);
if (editingCommentId != null && removeIds.has(editingCommentId)) setEditingCommentId(null);
notify.success('评论已移入回收站');
} catch (e: unknown) {
notify.error(e instanceof Error ? e.message : '删除失败');
throw e;