Fix timestamp offset parsing
This commit is contained in:
parent
95a7cc336e
commit
4e3fdc3c29
@ -43,6 +43,7 @@ export const convertExifToFormData = (
|
|||||||
) => getCompatibleExifValue(key, exif, exifr, exifrSpecificKey);
|
) => getCompatibleExifValue(key, exif, exifr, exifrSpecificKey);
|
||||||
|
|
||||||
const dateTimeOriginal = getExifValue('DateTimeOriginal');
|
const dateTimeOriginal = getExifValue('DateTimeOriginal');
|
||||||
|
const offset = getOffsetFromExif(exif, exifr);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
aspectRatio: getAspectRatioFromExif(exif).toString(),
|
aspectRatio: getAspectRatioFromExif(exif).toString(),
|
||||||
@ -74,7 +75,7 @@ export const convertExifToFormData = (
|
|||||||
...dateTimeOriginal && {
|
...dateTimeOriginal && {
|
||||||
takenAt: convertTimestampWithOffsetToPostgresString(
|
takenAt: convertTimestampWithOffsetToPostgresString(
|
||||||
dateTimeOriginal,
|
dateTimeOriginal,
|
||||||
getOffsetFromExif(exif, exifr),
|
offset,
|
||||||
),
|
),
|
||||||
takenAtNaive:
|
takenAtNaive:
|
||||||
convertTimestampToNaivePostgresString(dateTimeOriginal),
|
convertTimestampToNaivePostgresString(dateTimeOriginal),
|
||||||
|
|||||||
@ -101,11 +101,8 @@ const dateFromTimestamp = (timestamp?: AmbiguousTimestamp): Date => {
|
|||||||
? /.+Z/i.test(timestamp)
|
? /.+Z/i.test(timestamp)
|
||||||
? new Date(timestamp)
|
? new Date(timestamp)
|
||||||
: new Date(`${timestamp}Z`)
|
: new Date(`${timestamp}Z`)
|
||||||
// Check for date last to avoid destabilizing status quo
|
: timestamp;
|
||||||
: isDate(timestamp)
|
return isDate(date) ? date : new Date();
|
||||||
? timestamp
|
|
||||||
: undefined;
|
|
||||||
return date && !isNaN(date.getTime()) ? date : new Date();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const createNaiveDateWithOffset = (
|
const createNaiveDateWithOffset = (
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
import { OrientationTypes, type ExifData, ExifTags } from 'ts-exif-parser';
|
import { OrientationTypes, type ExifData, ExifTags } from 'ts-exif-parser';
|
||||||
|
|
||||||
const OFFSET_REGEX = /[+-]\d\d:\d\d/;
|
|
||||||
|
|
||||||
export const getCompatibleExifValue = (
|
export const getCompatibleExifValue = (
|
||||||
key: keyof ExifTags,
|
key: keyof ExifTags,
|
||||||
exif: ExifData,
|
exif: ExifData,
|
||||||
@ -11,7 +9,7 @@ export const getCompatibleExifValue = (
|
|||||||
|
|
||||||
const isValueOffset = (value: any) =>
|
const isValueOffset = (value: any) =>
|
||||||
typeof value === 'string' &&
|
typeof value === 'string' &&
|
||||||
OFFSET_REGEX.test(value);
|
/^[+-]\d\d:\d\d$/.test(value);
|
||||||
|
|
||||||
export const getOffsetFromExif = (
|
export const getOffsetFromExif = (
|
||||||
exif: ExifData,
|
exif: ExifData,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user