diff --git a/apps/client/src/features/exif-editor/components/entries/add/ExifEntryAddEditorFields.tsx b/apps/client/src/features/exif-editor/components/entries/add/ExifEntryAddEditorFields.tsx index 6f070be..18779db 100644 --- a/apps/client/src/features/exif-editor/components/entries/add/ExifEntryAddEditorFields.tsx +++ b/apps/client/src/features/exif-editor/components/entries/add/ExifEntryAddEditorFields.tsx @@ -76,6 +76,7 @@ const ExifEntryAddEditorFields = ({ /> ); case "ascii": + case "xp": return ( { exifEntryObject.format === "SRATIONAL" || exifEntryObject.format === "RATIONAL"; + // TODO: Explicitly return null return ( (exifEntryObject.format === "ASCII" || + XP_TAGS.includes(exifEntryObject.tag) || isRationalOrSRational || exifEntryObject.tag === "USER_COMMENT") && ( diff --git a/apps/client/src/features/exif-editor/components/entries/edit/ExifEntryEditor.tsx b/apps/client/src/features/exif-editor/components/entries/edit/ExifEntryEditor.tsx index ecaad24..936d7ea 100644 --- a/apps/client/src/features/exif-editor/components/entries/edit/ExifEntryEditor.tsx +++ b/apps/client/src/features/exif-editor/components/entries/edit/ExifEntryEditor.tsx @@ -33,6 +33,7 @@ const ExifEntryEditor = () => { /> )); case "ascii": + case "xp": return ( { /> ); case "ascii": + case "xp": return ( { + if ( + exifEntryObject.format === "BYTE" && + exifEntryObject.tag !== undefined && + XP_TAGS.includes(exifEntryObject.tag) + ) { + return { + kind: "xp", + exifEntryObject, + value: + exifEntryObject.value.length === 0 ? + undefined + : parseXp(new Uint8Array(exifEntryObject.value)), + onValueChange: (value) => { + if (value === "") { + onValueChange([]); + } + + return onValueChange(Array.from(formatXp(value))); + }, + }; + } + + return null; +}; + +export { resolveXp }; diff --git a/apps/client/src/features/exif-editor/editors/add/types.ts b/apps/client/src/features/exif-editor/editors/add/types.ts index d74d6a4..c0fe878 100644 --- a/apps/client/src/features/exif-editor/editors/add/types.ts +++ b/apps/client/src/features/exif-editor/editors/add/types.ts @@ -29,6 +29,7 @@ type AddEditor = ( | ({ kind: "versionId" } & ResolvedAddEditor) | ({ kind: "datetime" } & ResolvedAddEditor) | ({ kind: "ascii" } & ResolvedAddEditor) + | ({ kind: "xp" } & ResolvedAddEditor) | ({ kind: "exifVersion" } & ResolvedAddEditor) | ({ kind: "timeStamp" } & ResolvedAddEditor