diff --git a/services/web/frontend/js/features/ide-react/util/file-view.ts b/services/web/frontend/js/features/ide-react/util/file-view.ts index af7f7bed3c..e32f3bb4ee 100644 --- a/services/web/frontend/js/features/ide-react/util/file-view.ts +++ b/services/web/frontend/js/features/ide-react/util/file-view.ts @@ -2,6 +2,7 @@ import { FileRef } from '../../../../../types/file-ref' import { BinaryFile } from '@/features/file-view/types/binary-file' export function convertFileRefToBinaryFile(fileRef: FileRef): BinaryFile { + const timestamp = fileRef.linkedFileData?.importedAt ?? fileRef.created return { _id: fileRef._id, name: fileRef.name, @@ -9,7 +10,7 @@ export function convertFileRefToBinaryFile(fileRef: FileRef): BinaryFile { type: 'file', selected: true, linkedFileData: fileRef.linkedFileData, - created: fileRef.created ? new Date(fileRef.created) : new Date(), + created: timestamp ? new Date(timestamp) : new Date(), hash: fileRef.hash, } } @@ -22,8 +23,9 @@ export function convertFileRefToBinaryFile(fileRef: FileRef): BinaryFile { // `FileViewHeader` pass in a string for `created`, so that's what this function // does too. export function fileViewFile(fileRef: FileRef) { + const converted = convertFileRefToBinaryFile(fileRef) return { - ...convertFileRefToBinaryFile(fileRef), - created: fileRef.created, + ...converted, + created: converted.created.toISOString(), } } diff --git a/services/web/test/frontend/features/file-view/components/file-view-header.test.jsx b/services/web/test/frontend/features/file-view/components/file-view-header.test.jsx index e3e394fb72..78fcd127e6 100644 --- a/services/web/test/frontend/features/file-view/components/file-view-header.test.jsx +++ b/services/web/test/frontend/features/file-view/components/file-view-header.test.jsx @@ -4,6 +4,7 @@ import fetchMock from 'fetch-mock' import { renderWithEditorContext } from '../../../helpers/render-with-context' import FileViewHeader from '../../../../../frontend/js/features/file-view/components/file-view-header' import { USER_ID } from '../../../helpers/editor-providers' +import { fileViewFile } from '@/features/ide-react/util/file-view' describe('', function () { const urlFile = { @@ -81,4 +82,27 @@ describe('', function () { screen.getByText('Download', { exact: false }) }) }) + + it('should use importedAt as timestamp when present in the linked file data', function () { + const fileFromServer = { + name: 'example.tex', + linkedFileData: { + v1_source_doc_id: 'v1-source-id', + source_project_id: 'source-project-id', + source_entity_path: '/source-entity-path.ext', + provider: 'project_file', + importer_id: USER_ID, + importedAt: new Date(2024, 9, 16, 1, 30).getTime(), + }, + created: new Date(2021, 1, 17, 3, 24).toISOString(), + } + // FIXME: This should be tested through the component instead + const fileShown = fileViewFile(fileFromServer) + renderWithEditorContext() + screen.getByText('Imported from', { exact: false }) + screen.getByText('Another project', { exact: false }) + screen.getByText('/source-entity-path.ext, at 1:30 am Wed, 16th Oct 24', { + exact: false, + }) + }) })