0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-01-21 00:52:43 -05:00

fix(server): handle number lists in metadata extraction (#4273)

This commit is contained in:
Jason Rasmussen 2023-09-29 11:42:33 -04:00 committed by GitHub
parent d7e970dcea
commit 3e73cfb71a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 0 deletions

View file

@ -122,4 +122,14 @@ describe(MetadataService.name, () => {
});
});
});
describe('handleMetadataExtraction', () => {
it('should handle lists of numbers', async () => {
assetMock.getByIds.mockResolvedValue([assetStub.image1]);
storageMock.stat.mockResolvedValue({ size: 123456 } as any);
metadataMock.getExifTags.mockResolvedValue({ ISO: [160] as any });
await sut.handleMetadataExtraction({ id: assetStub.image1.id });
expect(assetMock.upsertExif).toHaveBeenCalledWith(expect.objectContaining({ iso: 160 }));
});
});
});

View file

@ -32,6 +32,11 @@ type ExifEntityWithoutGeocodeAndTypeOrm = Omit<
const exifDate = (dt: ExifDateTime | string | undefined) => (dt instanceof ExifDateTime ? dt?.toDate() : null);
const validate = <T>(value: T): NonNullable<T> | null => {
// handle lists of numbers
if (Array.isArray(value)) {
value = value[0];
}
if (typeof value === 'string') {
// string means a failure to parse a number, throw out result
return null;