From 7cb66f5c7ea4e24f9ebbb996af97af649ac1c4e8 Mon Sep 17 00:00:00 2001 From: Maarten Draijer Date: Tue, 7 Jul 2026 18:11:18 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(frontend)=20refresh=20the=20Recent?= =?UTF-8?q?=20view=20after=20item=20mutations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit useGetQueryKeyToRefresh invalidated only ["items", "infinite"] (+ the folder ["items", , "children"]). React Query invalidation is prefix-based, so that matches the general list views (My files, Shared, Favorites) but not the Recent view, whose key is ["items", "recent", "infinite"] (useInfiniteRecentItems). As a result, a mutation performed while viewing Recent (create, convert, delete, rename, upload) did not refresh the list until a manual reload. Also invalidate the recent key. --- CHANGELOG.md | 1 + .../src/features/explorer/hooks/useRefreshItems.ts | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf354c789..34f77f6bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to ### Fixed +- 🐛(frontend) refresh the Recent view after item mutations - 🐛(frontend) keep uploaded items usable while malware analysis runs - 🐛(backend) stream export files from S3 without buffering diff --git a/src/frontend/apps/drive/src/features/explorer/hooks/useRefreshItems.ts b/src/frontend/apps/drive/src/features/explorer/hooks/useRefreshItems.ts index 1b87f5ce5..b1be03674 100644 --- a/src/frontend/apps/drive/src/features/explorer/hooks/useRefreshItems.ts +++ b/src/frontend/apps/drive/src/features/explorer/hooks/useRefreshItems.ts @@ -10,14 +10,17 @@ import { generateTreeId } from "../components/GlobalExplorerContext"; export const useGetQueryKeyToRefresh = () => { return (parentId?: string) => { - const queryKeys = [["items", "infinite"]]; + const queryKeys = [ + ["items", "infinite"], + // The Recent view has its own key prefix (useInfiniteRecentItems), so + // invalidating ["items", "infinite"] does not prefix-match it. Without this, + // a mutation performed while viewing Recent (create, convert, delete, + // rename, upload…) doesn't refresh the list until a manual reload. + ["items", "recent", "infinite"], + ]; if (parentId) { queryKeys.push(["items", parentId, "children"]); } - // let queryKey = parentId ? ["items", parentId, "children"] : []; - // if (queryKeyForRoute.length > 0) { - // queryKey = queryKeyForRoute; - // } return queryKeys; }; };