diff --git a/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue b/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue index 026ddf50e85..feb22a8e1c5 100644 --- a/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue +++ b/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue @@ -366,7 +366,7 @@ const capitalizedTimestamp = computed(() => { }) watch( - () => unref(resource)?.mdate, + () => unref(resource)?.etag, async () => { if (unref(resource)) { preview.value = await loadPreview({ diff --git a/packages/web-app-files/tests/unit/components/SideBar/Details/FileDetails.spec.ts b/packages/web-app-files/tests/unit/components/SideBar/Details/FileDetails.spec.ts index 32412b35f53..3216e4274ce 100644 --- a/packages/web-app-files/tests/unit/components/SideBar/Details/FileDetails.spec.ts +++ b/packages/web-app-files/tests/unit/components/SideBar/Details/FileDetails.spec.ts @@ -7,6 +7,7 @@ import { RouteLocation } from '@opencloud-eu/web-test-helpers' import { mock, mockDeep } from 'vitest-mock-extended' +import { reactive } from 'vue' import { SpaceResource } from '@opencloud-eu/web-client' import { AncestorMetaData, ImageDimension, ProcessorType } from '@opencloud-eu/web-pkg' import { User } from '@opencloud-eu/web-client/graph/generated' @@ -87,6 +88,25 @@ describe('Details SideBar Panel', () => { expect.anything() ) }) + it('loads the preview again when the etag changes but the modification date stays the same', async () => { + const resource = reactive({ ...getResourceMock(), etag: 'initial-etag' }) as Resource + const { mocks, wrapper } = createWrapper({ resource }) + await wrapper.vm.$nextTick() + await wrapper.vm.$nextTick() + expect(mocks.$previewService.loadPreview).toHaveBeenCalledTimes(1) + + resource.etag = 'changed-etag' + await wrapper.vm.$nextTick() + await wrapper.vm.$nextTick() + + expect(mocks.$previewService.loadPreview).toHaveBeenCalledTimes(2) + expect(mocks.$previewService.loadPreview).toHaveBeenLastCalledWith( + expect.objectContaining({ resource: expect.objectContaining({ etag: 'changed-etag' }) }), + expect.anything(), + expect.anything(), + expect.anything() + ) + }) }) describe('status indicators', () => { it('show if given on non-public page', () => {