From a7c377fa153be5011d801fa1d83a72e3a8f905a9 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Sun, 30 Aug 2026 16:50:37 +0800 Subject: [PATCH] fix(filebrowser): avoid duplicate list refresh (#731) --- src/components/filebrowser/FileBrowser.vue | 1 - .../filebrowser/__tests__/FileBrowser.spec.ts | 13 +++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/filebrowser/FileBrowser.vue b/src/components/filebrowser/FileBrowser.vue index 4fe5071e..70397d84 100644 --- a/src/components/filebrowser/FileBrowser.vue +++ b/src/components/filebrowser/FileBrowser.vue @@ -342,7 +342,6 @@ onUnmounted(cleanupDrag) @pathchanged="pathChanged" @loading="loadingChanged" @refreshed="refreshPending = false" - @filedeleted="refreshPending = true" @renamed="refreshPending = true" @items-updated="fileListUpdated" @switch-tree="switchDirTree" diff --git a/src/components/filebrowser/__tests__/FileBrowser.spec.ts b/src/components/filebrowser/__tests__/FileBrowser.spec.ts index f3843375..03ba8dc8 100644 --- a/src/components/filebrowser/__tests__/FileBrowser.spec.ts +++ b/src/components/filebrowser/__tests__/FileBrowser.spec.ts @@ -72,9 +72,9 @@ const FileNavigatorStub = defineComponent({ const FileListStub = defineComponent({ name: 'FileList', props: ['refreshpending', 'sort', 'showTree'], - emits: ['items-updated', 'loading', 'pathchanged', 'refreshed', 'switch-tree'], + emits: ['items-updated', 'loading', 'pathchanged', 'refreshed', 'switch-tree', 'filedeleted'], template: - '
', + '', }) function createBrowserProps() { @@ -266,6 +266,15 @@ describe('FileBrowser state and child contracts', () => { expect(wrapper.getComponent(FileListStub).props('refreshpending')).toBe(false) }) + it('does not schedule a second list refresh after the child completes a delete', async () => { + const wrapper = mountBrowser() + + await wrapper.get('.emit-filedeleted').trigger('click') + await nextTick() + + expect(wrapper.getComponent(FileListStub).props('refreshpending')).toBe(false) + }) + it('forwards the latest file list snapshot to the directory navigator', async () => { localStorage.setItem('fileBrowser.showDirTree', 'true') const wrapper = mountBrowser()