From f9b9598599f7426aff53faf08fb35148f4491972 Mon Sep 17 00:00:00 2001 From: Mike Fortman Date: Mon, 12 May 2025 15:16:54 -0500 Subject: [PATCH] fix: File manager rerenders (#7999) * Fix infinite rerender issue * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../components/recentFilesComponent/index.tsx | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/frontend/src/modals/fileManagerModal/components/recentFilesComponent/index.tsx b/src/frontend/src/modals/fileManagerModal/components/recentFilesComponent/index.tsx index b58071df0..ae67bd5e5 100644 --- a/src/frontend/src/modals/fileManagerModal/components/recentFilesComponent/index.tsx +++ b/src/frontend/src/modals/fileManagerModal/components/recentFilesComponent/index.tsx @@ -20,11 +20,24 @@ export default function RecentFilesComponent({ types: string[]; isList: boolean; }) { - const filesWithType = files.map((file) => ({ - ...file, - type: file.path.split(".").pop()?.toLowerCase(), - })); - const [fuse, setFuse] = useState>(new Fuse([])); + const filesWithType = useMemo( + () => + files.map((file) => ({ + ...file, + type: file.path.split(".").pop()?.toLowerCase(), + })), + [files], + ); + + const fuse = useMemo( + () => + new Fuse(filesWithType, { + keys: ["name", "type"], + threshold: 0.3, + }), + [filesWithType], + ); + const [searchQuery, setSearchQuery] = useState(""); const { mutate: renameFile } = usePostRenameFileV2(); @@ -39,18 +52,7 @@ export default function RecentFilesComponent({ return fileExtension && (!types || types.includes(fileExtension)); }); return filteredFiles; - }, [searchQuery, filesWithType, selectedFiles, types]); - - useEffect(() => { - if (filesWithType) { - setFuse( - new Fuse(filesWithType, { - keys: ["name", "type"], - threshold: 0.3, - }), - ); - } - }, [filesWithType]); + }, [searchQuery, filesWithType, types]); const handleFileSelect = (filePath: string) => { setSelectedFiles(