mirror of
https://github.com/zadam/trilium.git
synced 2026-05-07 18:15:34 +02:00
fix(core): error due to CLS on standalone
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
import sanitizeFilename from "sanitize-filename";
|
||||
|
||||
import becca from "../becca/becca.js";
|
||||
import { getContext } from "./context.js";
|
||||
import { getLog } from "./log.js";
|
||||
import { getImageProvider } from "./image_provider.js";
|
||||
import noteService from "./notes.js";
|
||||
@@ -33,10 +34,12 @@ function updateImage(noteId: string, uploadBuffer: Uint8Array, originalName: str
|
||||
|
||||
// Process image asynchronously
|
||||
getImageProvider().processImage(uploadBuffer, originalName, true).then(({ buffer, format }) => {
|
||||
getSql().transactional(() => {
|
||||
note.mime = getImageMimeFromExtension(format.ext);
|
||||
note.save();
|
||||
note.setContent(buffer);
|
||||
getContext().init(() => {
|
||||
getSql().transactional(() => {
|
||||
note.mime = getImageMimeFromExtension(format.ext);
|
||||
note.save();
|
||||
note.setContent(buffer);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -73,16 +76,18 @@ function saveImage(
|
||||
|
||||
// Process image asynchronously
|
||||
getImageProvider().processImage(uploadBuffer, originalName, shrinkImageSwitch).then(({ buffer, format }) => {
|
||||
getSql().transactional(() => {
|
||||
note.mime = getImageMimeFromExtension(format.ext);
|
||||
getContext().init(() => {
|
||||
getSql().transactional(() => {
|
||||
note.mime = getImageMimeFromExtension(format.ext);
|
||||
|
||||
if (!originalName.includes(".")) {
|
||||
originalName += `.${format.ext}`;
|
||||
note.setLabel("originalFileName", originalName);
|
||||
note.title = sanitizeFilename(originalName);
|
||||
}
|
||||
if (!originalName.includes(".")) {
|
||||
originalName += `.${format.ext}`;
|
||||
note.setLabel("originalFileName", originalName);
|
||||
note.title = sanitizeFilename(originalName);
|
||||
}
|
||||
|
||||
note.setContent(buffer, { forceSave: true });
|
||||
note.setContent(buffer, { forceSave: true });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -118,29 +123,33 @@ function saveImageToAttachment(
|
||||
|
||||
// Schedule post-processing to mark unused attachments
|
||||
setTimeout(() => {
|
||||
getSql().transactional(() => {
|
||||
const note = becca.getNoteOrThrow(noteId);
|
||||
noteService.asyncPostProcessContent(note, note.getContent());
|
||||
getContext().init(() => {
|
||||
getSql().transactional(() => {
|
||||
const note = becca.getNoteOrThrow(noteId);
|
||||
noteService.asyncPostProcessContent(note, note.getContent());
|
||||
});
|
||||
});
|
||||
}, 5000);
|
||||
|
||||
// Process image asynchronously
|
||||
const attachmentId = attachment.attachmentId;
|
||||
getImageProvider().processImage(uploadBuffer, originalName, !!shrinkImageSwitch).then(({ buffer, format }) => {
|
||||
getSql().transactional(() => {
|
||||
if (!attachmentId) {
|
||||
throw new Error("Missing attachment ID.");
|
||||
}
|
||||
attachment = becca.getAttachmentOrThrow(attachmentId);
|
||||
getContext().init(() => {
|
||||
getSql().transactional(() => {
|
||||
if (!attachmentId) {
|
||||
throw new Error("Missing attachment ID.");
|
||||
}
|
||||
attachment = becca.getAttachmentOrThrow(attachmentId);
|
||||
|
||||
attachment.mime = getImageMimeFromExtension(format.ext);
|
||||
attachment.mime = getImageMimeFromExtension(format.ext);
|
||||
|
||||
if (!originalName.includes(".")) {
|
||||
originalName += `.${format.ext}`;
|
||||
attachment.title = sanitizeFilename(originalName);
|
||||
}
|
||||
if (!originalName.includes(".")) {
|
||||
originalName += `.${format.ext}`;
|
||||
attachment.title = sanitizeFilename(originalName);
|
||||
}
|
||||
|
||||
attachment.setContent(buffer, { forceSave: true });
|
||||
attachment.setContent(buffer, { forceSave: true });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -636,41 +636,43 @@ function downloadImages(noteId: string, content: string) {
|
||||
// are downloaded and the IMG references are not updated. For this occasion we have this code
|
||||
// which upon the download of all the images will update the note if the links have not been fixed before
|
||||
|
||||
getSql().transactional(() => {
|
||||
const imageNotes = becca.getNotes(Object.values(imageUrlToAttachmentIdMapping), true);
|
||||
const log = getLog();
|
||||
cls.getContext().init(() => {
|
||||
getSql().transactional(() => {
|
||||
const imageNotes = becca.getNotes(Object.values(imageUrlToAttachmentIdMapping), true);
|
||||
const log = getLog();
|
||||
|
||||
const origNote = becca.getNote(noteId);
|
||||
const origNote = becca.getNote(noteId);
|
||||
|
||||
if (!origNote) {
|
||||
log.error(`Cannot find note '${noteId}' to replace image link.`);
|
||||
return;
|
||||
}
|
||||
|
||||
const origContent = origNote.getContent();
|
||||
let updatedContent = origContent;
|
||||
|
||||
if (typeof updatedContent !== "string") {
|
||||
log.error(`Note '${noteId}' has a non-string content, cannot replace image link.`);
|
||||
return;
|
||||
}
|
||||
|
||||
for (const url in imageUrlToAttachmentIdMapping) {
|
||||
const imageNote = imageNotes.find((note) => note.noteId === imageUrlToAttachmentIdMapping[url]);
|
||||
|
||||
if (imageNote) {
|
||||
updatedContent = replaceUrl(updatedContent, url, imageNote);
|
||||
if (!origNote) {
|
||||
log.error(`Cannot find note '${noteId}' to replace image link.`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// update only if the links have not been already fixed.
|
||||
if (updatedContent !== origContent) {
|
||||
origNote.setContent(updatedContent);
|
||||
const origContent = origNote.getContent();
|
||||
let updatedContent = origContent;
|
||||
|
||||
asyncPostProcessContent(origNote, updatedContent);
|
||||
if (typeof updatedContent !== "string") {
|
||||
log.error(`Note '${noteId}' has a non-string content, cannot replace image link.`);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`Fixed the image links for note '${noteId}' to the offline saved.`);
|
||||
}
|
||||
for (const url in imageUrlToAttachmentIdMapping) {
|
||||
const imageNote = imageNotes.find((note) => note.noteId === imageUrlToAttachmentIdMapping[url]);
|
||||
|
||||
if (imageNote) {
|
||||
updatedContent = replaceUrl(updatedContent, url, imageNote);
|
||||
}
|
||||
}
|
||||
|
||||
// update only if the links have not been already fixed.
|
||||
if (updatedContent !== origContent) {
|
||||
origNote.setContent(updatedContent);
|
||||
|
||||
asyncPostProcessContent(origNote, updatedContent);
|
||||
|
||||
console.log(`Fixed the image links for note '${noteId}' to the offline saved.`);
|
||||
}
|
||||
});
|
||||
});
|
||||
}, 5000);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user