From bab04378dc2aa4cfb174b7fddb13a8c5d3aea973 Mon Sep 17 00:00:00 2001 From: Jonathan Jogenfors Date: Thu, 9 Jan 2025 00:12:39 +0100 Subject: [PATCH] fix(server): generate thumbnails for external assets (#15183) fix: thumbnail generation of external assets --- e2e/src/api/specs/library.e2e-spec.ts | 28 +++++++++++++++++++++ server/src/services/library.service.spec.ts | 2 ++ server/src/services/library.service.ts | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/e2e/src/api/specs/library.e2e-spec.ts b/e2e/src/api/specs/library.e2e-spec.ts index 3525296fef..e2e69529fb 100644 --- a/e2e/src/api/specs/library.e2e-spec.ts +++ b/e2e/src/api/specs/library.e2e-spec.ts @@ -301,10 +301,38 @@ describe('/libraries', () => { const { assets } = await utils.searchAssets(admin.accessToken, { originalPath: `${testAssetDirInternal}/temp/directoryA/assetA.png`, + libraryId: library.id, }); expect(assets.count).toBe(1); }); + it('should process metadata and thumbnails for external asset', async () => { + const library = await utils.createLibrary(admin.accessToken, { + ownerId: admin.userId, + importPaths: [`${testAssetDirInternal}/temp/directoryA`], + }); + + const { status } = await request(app) + .post(`/libraries/${library.id}/scan`) + .set('Authorization', `Bearer ${admin.accessToken}`) + .send(); + expect(status).toBe(204); + + await utils.waitForQueueFinish(admin.accessToken, 'library'); + await utils.waitForQueueFinish(admin.accessToken, 'metadataExtraction'); + await utils.waitForQueueFinish(admin.accessToken, 'thumbnailGeneration'); + + const { assets } = await utils.searchAssets(admin.accessToken, { + originalPath: `${testAssetDirInternal}/temp/directoryA/assetA.png`, + libraryId: library.id, + }); + expect(assets.count).toBe(1); + const asset = assets.items[0]; + expect(asset.exifInfo).not.toBe(null); + expect(asset.exifInfo?.dateTimeOriginal).not.toBe(null); + expect(asset.thumbhash).not.toBe(null); + }); + it('should scan external library with exclusion pattern', async () => { const library = await utils.createLibrary(admin.accessToken, { ownerId: admin.userId, diff --git a/server/src/services/library.service.spec.ts b/server/src/services/library.service.spec.ts index 9b944045ab..e54f04381b 100644 --- a/server/src/services/library.service.spec.ts +++ b/server/src/services/library.service.spec.ts @@ -425,6 +425,7 @@ describe(LibraryService.name, () => { name: JobName.SIDECAR_DISCOVERY, data: { id: assetStub.image.id, + source: 'upload', }, }, ], @@ -469,6 +470,7 @@ describe(LibraryService.name, () => { name: JobName.SIDECAR_DISCOVERY, data: { id: assetStub.image.id, + source: 'upload', }, }, ], diff --git a/server/src/services/library.service.ts b/server/src/services/library.service.ts index 0deddc8941..0290b2e7fe 100644 --- a/server/src/services/library.service.ts +++ b/server/src/services/library.service.ts @@ -426,7 +426,7 @@ export class LibraryService extends BaseService { // We queue a sidecar discovery which, in turn, queues metadata extraction await this.jobRepository.queue({ name: JobName.SIDECAR_DISCOVERY, - data: { id: asset.id }, + data: { id: asset.id, source: 'upload' }, }); }