From 01b2ae625450b7fb31ebb826918ff27f41a0dc35 Mon Sep 17 00:00:00 2001 From: Frontend Developer Date: Tue, 10 Mar 2026 09:19:24 +0000 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF:=20=E6=B7=BB=E5=8A=A0useFile?= =?UTF-8?q?s=E6=96=87=E4=BB=B6=E7=AE=A1=E7=90=86=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/useFiles.js | 34 +++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 frontend/src/renderer/hooks/useFiles.js diff --git a/frontend/src/renderer/hooks/useFiles.js b/frontend/src/renderer/hooks/useFiles.js new file mode 100644 index 0000000..5df0ed1 --- /dev/null +++ b/frontend/src/renderer/hooks/useFiles.js @@ -0,0 +1,34 @@ +import { useState, useCallback } from 'react'; +import api from '../utils/api'; + +export const useFiles = () => { + const [files, setFiles] = useState([]); + const [loading, setLoading] = useState(false); + + const fetchFiles = useCallback(async (folderId = null) => { + setLoading(true); + try { + const url = folderId ? `/api/files?parentId=${folderId}` : '/api/files'; + const data = await api.get(url); + setFiles(data.files || []); + } catch (error) { + console.error('Failed to fetch files:', error); + } finally { + setLoading(false); + } + }, []); + + const uploadFile = async (file) => { + await api.upload('/api/files/upload', file); + await fetchFiles(); + }; + + const deleteFile = async (id) => { + await api.delete(`/api/files/${id}`); + await fetchFiles(); + }; + + return { files, loading, fetchFiles, uploadFile, deleteFile }; +}; + +export default useFiles;