diff --git a/src/photo/form/server.ts b/src/photo/form/server.ts index 8b644a7e..744b1bd4 100644 --- a/src/photo/form/server.ts +++ b/src/photo/form/server.ts @@ -43,6 +43,7 @@ export const convertExifToFormData = ( ) => getCompatibleExifValue(key, exif, exifr, exifrSpecificKey); const dateTimeOriginal = getExifValue('DateTimeOriginal'); + const offset = getOffsetFromExif(exif, exifr); return { aspectRatio: getAspectRatioFromExif(exif).toString(), @@ -74,7 +75,7 @@ export const convertExifToFormData = ( ...dateTimeOriginal && { takenAt: convertTimestampWithOffsetToPostgresString( dateTimeOriginal, - getOffsetFromExif(exif, exifr), + offset, ), takenAtNaive: convertTimestampToNaivePostgresString(dateTimeOriginal), diff --git a/src/utility/date.ts b/src/utility/date.ts index 636bc506..c229a51d 100644 --- a/src/utility/date.ts +++ b/src/utility/date.ts @@ -101,11 +101,8 @@ const dateFromTimestamp = (timestamp?: AmbiguousTimestamp): Date => { ? /.+Z/i.test(timestamp) ? new Date(timestamp) : new Date(`${timestamp}Z`) - // Check for date last to avoid destabilizing status quo - : isDate(timestamp) - ? timestamp - : undefined; - return date && !isNaN(date.getTime()) ? date : new Date(); + : timestamp; + return isDate(date) ? date : new Date(); }; const createNaiveDateWithOffset = ( diff --git a/src/utility/exif.ts b/src/utility/exif.ts index bb645cc6..99348393 100644 --- a/src/utility/exif.ts +++ b/src/utility/exif.ts @@ -1,7 +1,5 @@ import { OrientationTypes, type ExifData, ExifTags } from 'ts-exif-parser'; -const OFFSET_REGEX = /[+-]\d\d:\d\d/; - export const getCompatibleExifValue = ( key: keyof ExifTags, exif: ExifData, @@ -11,7 +9,7 @@ export const getCompatibleExifValue = ( const isValueOffset = (value: any) => typeof value === 'string' && - OFFSET_REGEX.test(value); + /^[+-]\d\d:\d\d$/.test(value); export const getOffsetFromExif = ( exif: ExifData,