From c8394816a43cd1bcd9338fa4d0d96ae95cf337d5 Mon Sep 17 00:00:00 2001 From: Frontend Developer Date: Tue, 10 Mar 2026 09:39:04 +0000 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF:=20=E6=B7=BB=E5=8A=A0useTras?= =?UTF-8?q?h=E5=9B=9E=E6=94=B6=E7=AB=99=E9=92=A9=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/renderer/hooks/useTrash.js | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 frontend/src/renderer/hooks/useTrash.js diff --git a/frontend/src/renderer/hooks/useTrash.js b/frontend/src/renderer/hooks/useTrash.js new file mode 100644 index 0000000..dad0c2a --- /dev/null +++ b/frontend/src/renderer/hooks/useTrash.js @@ -0,0 +1,36 @@ +import { useState } from 'react'; +import api from '../utils/api'; + +export const useTrash = () => { + const [files, setFiles] = useState([]); + const [loading, setLoading] = useState(false); + + const fetchTrash = async () => { + setLoading(true); + try { + const data = await api.get('/api/trash'); + setFiles(data.files || []); + } finally { + setLoading(false); + } + }; + + const restore = async (id) => { + await api.post(`/api/trash/${id}/restore`); + await fetchTrash(); + }; + + const permanentDelete = async (id) => { + await api.delete(`/api/trash/${id}`); + await fetchTrash(); + }; + + const emptyTrash = async () => { + await api.post('/api/trash/empty'); + setFiles([]); + }; + + return { files, loading, fetchTrash, restore, permanentDelete, emptyTrash }; +}; + +export default useTrash;