From 82cd3bb8fa2814b7e27b610682cd04d6f471ac2d Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 17 Nov 2024 02:39:06 +0000 Subject: feature: Allow setting bookmark metadata during creation --- packages/shared/types/bookmarks.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'packages/shared') diff --git a/packages/shared/types/bookmarks.ts b/packages/shared/types/bookmarks.ts index 1d8052f4..a02a4b29 100644 --- a/packages/shared/types/bookmarks.ts +++ b/packages/shared/types/bookmarks.ts @@ -114,7 +114,32 @@ const zBookmarkTypeAssetSchema = zBareBookmarkSchema.merge( export type ZBookmarkTypeAsset = z.infer; // POST /v1/bookmarks -export const zNewBookmarkRequestSchema = zBookmarkContentSchema; +export const zNewBookmarkRequestSchema = z + .object({ + title: z.string().max(MAX_TITLE_LENGTH).nullish(), + archived: z.boolean().optional(), + favourited: z.boolean().optional(), + note: z.string().optional(), + summary: z.string().optional(), + createdAt: z.date().optional(), + }) + .and( + z.discriminatedUnion("type", [ + z.object({ type: z.literal(BookmarkTypes.LINK), url: z.string().url() }), + z.object({ + type: z.literal(BookmarkTypes.TEXT), + text: z.string(), + sourceUrl: z.string().optional(), + }), + z.object({ + type: z.literal(BookmarkTypes.ASSET), + assetType: z.enum(["image", "pdf"]), + assetId: z.string(), + fileName: z.string().optional(), + sourceUrl: z.string().optional(), + }), + ]), + ); export type ZNewBookmarkRequest = z.infer; // GET /v1/bookmarks -- cgit v1.2.3-70-g09d2