mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	wip attachment widget
This commit is contained in:
		
							
								
								
									
										108
									
								
								src/routes/api/attachments.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								src/routes/api/attachments.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,108 @@ | ||||
| const becca = require("../../becca/becca"); | ||||
| const NotFoundError = require("../../errors/not_found_error"); | ||||
| const utils = require("../../services/utils"); | ||||
| const noteService = require("../../services/notes"); | ||||
|  | ||||
| function getAttachments(req) { | ||||
|     const includeContent = req.query.includeContent === 'true'; | ||||
|     const {noteId} = req.params; | ||||
|  | ||||
|     const note = becca.getNote(noteId); | ||||
|  | ||||
|     if (!note) { | ||||
|         throw new NotFoundError(`Note '${noteId}' doesn't exist.`); | ||||
|     } | ||||
|  | ||||
|     return note.getAttachments() | ||||
|         .map(attachment => processAttachment(attachment, includeContent)); | ||||
| } | ||||
|  | ||||
| function getAttachment(req) { | ||||
|     const includeContent = req.query.includeContent === 'true'; | ||||
|     const {noteId, attachmentId} = req.params; | ||||
|  | ||||
|     const note = becca.getNote(noteId); | ||||
|  | ||||
|     if (!note) { | ||||
|         throw new NotFoundError(`Note '${noteId}' doesn't exist.`); | ||||
|     } | ||||
|  | ||||
|     const attachment = note.getAttachmentById(attachmentId); | ||||
|  | ||||
|     if (!attachment) { | ||||
|         throw new NotFoundError(`Attachment '${attachmentId} of note '${noteId}' doesn't exist.`); | ||||
|     } | ||||
|  | ||||
|     return processAttachment(attachment, includeContent); | ||||
| } | ||||
|  | ||||
| function processAttachment(attachment, includeContent) { | ||||
|     const pojo = attachment.getPojo(); | ||||
|  | ||||
|     if (includeContent) { | ||||
|         if (utils.isStringNote(null, attachment.mime)) { | ||||
|             pojo.content = attachment.getContent()?.toString(); | ||||
|             pojo.contentLength = pojo.content.length; | ||||
|  | ||||
|             const MAX_ATTACHMENT_LENGTH = 1_000_000; | ||||
|  | ||||
|             if (pojo.content.length > MAX_ATTACHMENT_LENGTH) { | ||||
|                 pojo.content = pojo.content.substring(0, MAX_ATTACHMENT_LENGTH); | ||||
|             } | ||||
|         } else { | ||||
|             const content = attachment.getContent(); | ||||
|             pojo.contentLength = content?.length; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return pojo; | ||||
| } | ||||
|  | ||||
| function saveAttachment(req) { | ||||
|     const {noteId} = req.params; | ||||
|     const {attachmentId, role, mime, title, content} = req.body; | ||||
|  | ||||
|     const note = becca.getNote(noteId); | ||||
|  | ||||
|     if (!note) { | ||||
|         throw new NotFoundError(`Note '${noteId}' doesn't exist.`); | ||||
|     } | ||||
|  | ||||
|     note.saveAttachment({attachmentId, role, mime, title, content}); | ||||
| } | ||||
|  | ||||
| function deleteAttachment(req) { | ||||
|     const {noteId, attachmentId} = req.params; | ||||
|  | ||||
|     const note = becca.getNote(noteId); | ||||
|  | ||||
|     if (!note) { | ||||
|         throw new NotFoundError(`Note '${noteId}' doesn't exist.`); | ||||
|     } | ||||
|  | ||||
|     const attachment = note.getAttachmentById(attachmentId); | ||||
|  | ||||
|     if (attachment) { | ||||
|         attachment.markAsDeleted(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| function convertAttachmentToNote(req) { | ||||
|     const {noteId, attachmentId} = req.params; | ||||
|  | ||||
|     const note = becca.getNote(noteId); | ||||
|  | ||||
|     if (!note) { | ||||
|         throw new NotFoundError(`Note '${noteId}' doesn't exist.`); | ||||
|     } | ||||
|  | ||||
|     return note.convertAttachmentToChildNote(attachmentId); | ||||
| } | ||||
|  | ||||
| module.exports = { | ||||
|     getAttachments, | ||||
|     getAttachment, | ||||
|     saveAttachment, | ||||
|     deleteAttachment, | ||||
|     convertAttachmentToNote | ||||
| }; | ||||
		Reference in New Issue
	
	Block a user