From 6c3ac6cb9cfb49d35d0a8c6765ab282357f4d8b9 Mon Sep 17 00:00:00 2001 From: Tianyang Date: Sat, 1 Aug 2026 19:39:39 +0800 Subject: [PATCH] fix: debounce sidebar refresh on upload to avoid thousands of re-fetches --- frontend/src/App.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index b1de9ce..f8adcf1 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useRef, useState } from 'react'; import FileExplorer from './components/FileExplorer'; import DocumentEditor from './components/DocumentEditor'; import SearchBar from './components/SearchBar'; @@ -15,6 +15,12 @@ export default function App() { const [isDirty, setIsDirty] = useState(false); const [refreshKey, setRefreshKey] = useState(0); const [uploadPath] = useState(''); + const refreshTimer = useRef | null>(null); + + function scheduleRefresh() { + if (refreshTimer.current) clearTimeout(refreshTimer.current); + refreshTimer.current = setTimeout(() => setRefreshKey((k) => k + 1), 400); + } function confirmDiscardIfDirty(): boolean { if (!isDirty) { @@ -52,7 +58,7 @@ export default function App() { function handleUploaded(result: UploadDocumentResponse) { setSelectedKey(result.key); - setRefreshKey((prev) => prev + 1); + scheduleRefresh(); } function handleDeleted() {