diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-11-08 15:22:14 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-08 15:22:14 +0000 |
| commit | 31960fcd11daa2dfaf8ae409c80b572c9b22940f (patch) | |
| tree | 17bd227dac336ccabd2b6ffc6558920c68e053d0 /packages/open-api | |
| parent | 99413db0e79a156a1b87eacd3c6a7b83e9df946e (diff) | |
| download | karakeep-31960fcd11daa2dfaf8ae409c80b572c9b22940f.tar.zst | |
feat: Add support for user uploaded files (#2100)
* feat: add user file upload support for bookmarks
Add a new "user-uploaded" asset type that allows users to upload and
attach their own files to bookmarks from the attachment box in the
bookmark preview page.
Changes:
- Add USER_UPLOADED asset type to database schema
- Add userUploaded to zAssetTypesSchema for type safety
- Update attachment permissions to allow attaching/detaching user files
- Add fileName field to asset schema for displaying custom filenames
- Add "Upload File" button in AttachmentBox component
- Display actual filename for user-uploaded files
- Allow any file type for user uploads (respects existing upload limits)
- Add Upload icon for user-uploaded files
Fixes #1863 related asset attachment improvements
* fix: ensure fileName is returned and remove edit button for user uploads
- Fix attachAsset mutation to fetch and return complete asset with fileName
instead of just returning the input (which lacks fileName)
- Remove replace/edit button for user-uploaded files - users can only
delete and re-upload instead
- This ensures the filename displays correctly in the UI immediately
after upload
Fixes fileName propagation issue for user-uploaded assets
* fix asset file name
* remove filename from attach asset api
---------
Co-authored-by: Claude <noreply@anthropic.com>
Diffstat (limited to 'packages/open-api')
| -rw-r--r-- | packages/open-api/karakeep-openapi-spec.json | 11 | ||||
| -rw-r--r-- | packages/open-api/lib/bookmarks.ts | 6 |
2 files changed, 16 insertions, 1 deletions
diff --git a/packages/open-api/karakeep-openapi-spec.json b/packages/open-api/karakeep-openapi-spec.json index 0b520b00..2e791fbf 100644 --- a/packages/open-api/karakeep-openapi-spec.json +++ b/packages/open-api/karakeep-openapi-spec.json @@ -317,8 +317,13 @@ "video", "bookmarkAsset", "precrawledArchive", + "userUploaded", "unknown" ] + }, + "fileName": { + "type": "string", + "nullable": true } }, "required": [ @@ -1703,6 +1708,7 @@ "video", "bookmarkAsset", "precrawledArchive", + "userUploaded", "unknown" ] } @@ -1737,8 +1743,13 @@ "video", "bookmarkAsset", "precrawledArchive", + "userUploaded", "unknown" ] + }, + "fileName": { + "type": "string", + "nullable": true } }, "required": [ diff --git a/packages/open-api/lib/bookmarks.ts b/packages/open-api/lib/bookmarks.ts index d49a20ff..0a3806b9 100644 --- a/packages/open-api/lib/bookmarks.ts +++ b/packages/open-api/lib/bookmarks.ts @@ -6,6 +6,7 @@ import { z } from "zod"; import { zAssetSchema, + zAssetTypesSchema, zBareBookmarkSchema, zManipulatedTagSchema, zNewBookmarkRequestSchema, @@ -418,7 +419,10 @@ registry.registerPath({ description: "The asset to attach", content: { "application/json": { - schema: zAssetSchema, + schema: z.object({ + id: z.string(), + assetType: zAssetTypesSchema, + }), }, }, }, |
