unified file and image upload WIP

This commit is contained in:
zadam 2023-06-15 01:26:38 +02:00
parent 75c6afd1c3
commit 3ff5fe61b2
8 changed files with 22 additions and 36 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -89,7 +89,7 @@ const TPL = `
<div style="flex: 1 1;"></div>
</div>
<div class="attachment-deletion-warning alert alert-info"></div>
<div class="attachment-deletion-warning alert alert-info" style="margin-top: 15px;"></div>
<div class="attachment-content-wrapper"></div>
</div>

View File

@ -267,7 +267,7 @@ export default class EditableTextTypeWidget extends AbstractTextTypeWidget {
}
}
else {
this.watchdog.editor.execute('referenceLink', { notePath: notePath });
this.watchdog.editor.execute('referenceLink', { href: '#' + notePath });
}
this.watchdog.editor.editing.view.focus();

View File

@ -1,6 +1,7 @@
const becca = require("../../becca/becca");
const blobService = require("../../services/blob");
const ValidationError = require("../../errors/validation_error");
const imageService = require("../../services/image.js");
function getAttachmentBlob(req) {
const preview = req.query.preview === 'true';
@ -41,16 +42,25 @@ function uploadAttachment(req) {
const {file} = req;
const note = becca.getNoteOrThrow(noteId);
let url;
note.saveAttachment({
role: 'file',
mime: file.mimetype,
title: file.originalname,
content: file.buffer
});
if (["image/png", "image/jpg", "image/jpeg", "image/gif", "image/webp", "image/svg+xml"].includes(file.mimetype)) {
const attachment = imageService.saveImageToAttachment(noteId, file.buffer, file.originalname, true, true);
url = `api/attachments/${attachment.attachmentId}/image/${encodeURIComponent(attachment.title)}`;
} else {
const attachment = note.saveAttachment({
role: 'file',
mime: file.mimetype,
title: file.originalname,
content: file.buffer
});
url = `#${noteId}?viewMode=attachments&attachmentId=${attachment.attachmentId}`;
}
return {
uploaded: true
uploaded: true,
url
};
}

View File

@ -4,7 +4,6 @@ const imageService = require('../../services/image');
const becca = require('../../becca/becca');
const RESOURCE_DIR = require('../../services/resource_dir').RESOURCE_DIR;
const fs = require('fs');
const ValidationError = require("../../errors/validation_error");
function returnImage(req, res) {
const image = becca.getNote(req.params.noteId);
@ -59,24 +58,6 @@ function returnAttachedImage(req, res) {
res.send(attachment.getContent());
}
function uploadImage(req) {
const {noteId} = req.query;
const {file} = req;
becca.getNoteOrThrow(noteId);
if (!["image/png", "image/jpg", "image/jpeg", "image/gif", "image/webp", "image/svg+xml"].includes(file.mimetype)) {
throw new ValidationError(`Unknown image type '${file.mimetype}'`);
}
const {url} = imageService.saveImageToAttachment(noteId, file.buffer, file.originalname, true, true);
return {
uploaded: true,
url
};
}
function updateImage(req) {
const {noteId} = req.params;
const {file} = req;
@ -98,6 +79,5 @@ function updateImage(req) {
module.exports = {
returnImage,
returnAttachedImage,
uploadImage,
updateImage
};

View File

@ -201,7 +201,6 @@ function register(app) {
// :filename is not used by trilium, but instead used for "save as" to assign a human-readable filename
route(GET, '/api/images/:noteId/:filename', [auth.checkApiAuthOrElectron], imageRoute.returnImage);
route(PST, '/api/images', [auth.checkApiAuthOrElectron, uploadMiddlewareWithErrorHandling, csrfMiddleware], imageRoute.uploadImage, apiResultHandler);
route(PUT, '/api/images/:noteId', [auth.checkApiAuthOrElectron, uploadMiddlewareWithErrorHandling, csrfMiddleware], imageRoute.updateImage, apiResultHandler);
apiRoute(GET, '/api/options', optionsApiRoute.getOptions);

View File

@ -162,10 +162,7 @@ function saveImageToAttachment(noteId, uploadBuffer, originalName, shrinkImageSw
});
});
return {
attachment,
url: `api/attachments/${attachment.attachmentId}/image/${encodeURIComponent(fileName)}`
};
return attachment;
}
async function shrinkImage(buffer, originalName) {