diff --git a/src/entities/note.js b/src/entities/note.js index 7a3e89aa4..9c85cc9d0 100644 --- a/src/entities/note.js +++ b/src/entities/note.js @@ -114,6 +114,10 @@ class Note extends Entity { /** @returns {Promise} */ async setContent(content) { + if (content === null || content === undefined) { + throw new Error(`Cannot set null content to note ${this.noteId}`); + } + // force updating note itself so that dateModified is represented correctly even for the content this.forcedChange = true; this.contentLength = content.length; diff --git a/src/public/javascripts/services/tree.js b/src/public/javascripts/services/tree.js index e938f188a..58aface6e 100644 --- a/src/public/javascripts/services/tree.js +++ b/src/public/javascripts/services/tree.js @@ -651,7 +651,7 @@ async function createNote(node, parentNoteId, target, extraOptions = {}) { const {note, branch} = await server.post(`notes/${parentNoteId}/children?target=${target}&targetBranchId=${node.data.branchId}`, { title: newNoteName, - content: extraOptions.content, + content: extraOptions.content || "", isProtected: extraOptions.isProtected, type: extraOptions.type }); diff --git a/src/services/notes.js b/src/services/notes.js index 7f2f89045..08d148291 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -129,6 +129,14 @@ async function createNewNote(params) { } async function createNewNoteWithTarget(target, targetBranchId, params) { + if (!params.type) { + const parentNote = await repository.getNote(params.parentNoteId); + + // code note type can be inherited, otherwise text is default + params.type = parentNote.type === 'code' ? 'code' : 'text'; + params.mime = parentNote.type === 'code' ? parentNote.mime : 'text/html'; + } + if (target === 'into') { return await createNewNote(params); }