From df3fdb59c5aafbe830defe84dbf2b3a96493afa2 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 13 Jun 2022 22:54:08 +0200 Subject: [PATCH] fix saving note revisions, closes #2915 --- src/public/app/services/utils.js | 2 +- src/routes/api/files.js | 3 ++- src/routes/api/note_revisions.js | 3 ++- src/routes/api/notes.js | 3 ++- src/services/image.js | 2 +- src/services/note_revisions.js | 9 +++++++-- 6 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/public/app/services/utils.js b/src/public/app/services/utils.js index 7544a3075..aabbdb8f0 100644 --- a/src/public/app/services/utils.js +++ b/src/public/app/services/utils.js @@ -280,7 +280,7 @@ function isHtmlEmpty(html) { async function clearBrowserCache() { if (isElectron()) { - const win = utils.dynamicRequire('@electron/remote').getCurrentWindow(); + const win = dynamicRequire('@electron/remote').getCurrentWindow(); await win.webContents.session.clearCache(); } } diff --git a/src/routes/api/files.js b/src/routes/api/files.js index 7b0dc751d..3aa2d51b6 100644 --- a/src/routes/api/files.js +++ b/src/routes/api/files.js @@ -21,7 +21,8 @@ function updateFile(req) { return [404, `Note ${noteId} doesn't exist.`]; } - noteRevisionService.createNoteRevision(note); + note.saveNoteRevision(); + noteRevisionService.protectNoteRevisions(note); note.mime = file.mimetype.toLowerCase(); note.save(); diff --git a/src/routes/api/note_revisions.js b/src/routes/api/note_revisions.js index 93c792c56..6052e9950 100644 --- a/src/routes/api/note_revisions.js +++ b/src/routes/api/note_revisions.js @@ -97,7 +97,8 @@ function restoreNoteRevision(req) { if (noteRevision) { const note = noteRevision.getNote(); - noteRevisionService.createNoteRevision(note); + note.saveNoteRevision(); + noteRevisionService.protectNoteRevisions(note); note.title = noteRevision.title; note.setContent(noteRevision.getContent()); diff --git a/src/routes/api/notes.js b/src/routes/api/notes.js index 272cc88e0..a194f866a 100644 --- a/src/routes/api/notes.js +++ b/src/routes/api/notes.js @@ -294,7 +294,8 @@ function uploadModifiedFile(req) { log.info(`Updating note '${noteId}' with content from ${filePath}`); - noteRevisionService.createNoteRevision(note); + note.saveNoteRevision(); + noteRevisionService.protectNoteRevisions(note); const fileContent = fs.readFileSync(filePath); diff --git a/src/services/image.js b/src/services/image.js index 4c64e8ee5..19df2e874 100644 --- a/src/services/image.js +++ b/src/services/image.js @@ -68,7 +68,7 @@ function updateImage(noteId, uploadBuffer, originalName) { const note = becca.getNote(noteId); - noteRevisionService.createNoteRevision(note); + note.saveNoteRevision(); noteRevisionService.protectNoteRevisions(note); note.setLabel('originalFileName', originalName); diff --git a/src/services/note_revisions.js b/src/services/note_revisions.js index 3759d2d2e..dcaf1cd79 100644 --- a/src/services/note_revisions.js +++ b/src/services/note_revisions.js @@ -1,9 +1,8 @@ "use strict"; -const NoteRevision = require('../becca/entities/note_revision'); -const dateUtils = require('./date_utils'); const log = require('./log'); const sql = require('./sql'); +const protectedSession = require("./protected_session"); /** * @param {Note} note @@ -11,6 +10,12 @@ const sql = require('./sql'); function protectNoteRevisions(note) { for (const revision of note.getNoteRevisions()) { if (note.isProtected !== revision.isProtected) { + if (!protectedSession.isProtectedSessionAvailable()) { + log.error("Protected session is not available to fix note revisions."); + + return; + } + try { const content = revision.getContent();