import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { RotateCcw } from 'lucide-react' import { api } from '../lib/api' import type { NoteItem } from '../lib/api' import { invalidatePublic } from '../lib/invalidate' import { formatDateTime } from '../lib/utils' export default function AdminTrash() { const qc = useQueryClient() const { data, isLoading } = useQuery({ queryKey: ['admin', 'trash'], queryFn: () => api<{ items: NoteItem[]; total: number }>('/api/admin/trash'), }) const restore = useMutation({ mutationFn: (id: number) => api(`/api/admin/trash/${id}/restore`, { method: 'POST' }), onSuccess: () => { void qc.invalidateQueries({ queryKey: ['admin'] }) invalidatePublic(qc) }, }) return (

回收站({data?.total ?? 0})

软删除的笔记保留 30 天,到期由每日 gc 物理清除;恢复后图片引用天然保全。

{isLoading ? (

加载中…

) : !data || data.items.length === 0 ? (

回收站是空的

) : ( )} {restore.isError &&

恢复失败,请重试

}
) }