From 47845930f4898090b283960862fe3361307edc64 Mon Sep 17 00:00:00 2001 From: zadam Date: Thu, 23 Dec 2021 20:54:48 +0100 Subject: [PATCH] sharing improvements --- src/becca/entities/branch.js | 5 ++++- src/services/tree.js | 14 ++++++++++++-- src/share/content_renderer.js | 2 +- src/share/routes.js | 9 ++++++--- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/becca/entities/branch.js b/src/becca/entities/branch.js index 013a0f98e..63c096458 100644 --- a/src/becca/entities/branch.js +++ b/src/becca/entities/branch.js @@ -58,7 +58,10 @@ class Branch extends AbstractEntity { } init() { - this.becca.branches[this.branchId] = this; + if (this.branchId) { + this.becca.branches[this.branchId] = this; + } + this.becca.childParentToBranch[`${this.noteId}-${this.parentNoteId}`] = this; if (this.branchId === 'root') { diff --git a/src/services/tree.js b/src/services/tree.js index bf4d20825..65ff0903b 100644 --- a/src/services/tree.js +++ b/src/services/tree.js @@ -41,10 +41,15 @@ function validateParentChild(parentNoteId, childNoteId, branchId = null) { const existing = getExistingBranch(parentNoteId, childNoteId); + console.log("BBBB", existing); + if (existing && (branchId === null || existing.branchId !== branchId)) { + const parentNote = becca.getNote(parentNoteId); + const childNote = becca.getNote(childNoteId); + return { success: false, - message: 'This note already exists in the target.' + message: `Note "${childNote.title}" note already exists in the "${parentNote.title}".` }; } @@ -59,7 +64,12 @@ function validateParentChild(parentNoteId, childNoteId, branchId = null) { } function getExistingBranch(parentNoteId, childNoteId) { - const branchId = sql.getValue('SELECT branchId FROM branches WHERE noteId = ? AND parentNoteId = ? AND isDeleted = 0', [childNoteId, parentNoteId]); + const branchId = sql.getValue(` + SELECT branchId + FROM branches + WHERE noteId = ? + AND parentNoteId = ? + AND isDeleted = 0`, [childNoteId, parentNoteId]); return becca.getBranch(branchId); } diff --git a/src/share/content_renderer.js b/src/share/content_renderer.js index 576b83beb..0d300f61b 100644 --- a/src/share/content_renderer.js +++ b/src/share/content_renderer.js @@ -59,7 +59,7 @@ function getContent(note) { content = document.body.innerHTML; } } - else if (note.type === 'code') { + else if (note.type === 'code' || note.type === 'mermaid') { if (!content?.trim()) { content = NO_CONTENT + getChildrenList(note); } diff --git a/src/share/routes.js b/src/share/routes.js index 71b7adae7..816664313 100644 --- a/src/share/routes.js +++ b/src/share/routes.js @@ -3,18 +3,21 @@ const shacaLoader = require("./shaca/shaca_loader"); const shareRoot = require("./share_root"); const contentRenderer = require("./content_renderer.js"); -function getSubRoot(note) { +function getSharedSubTreeRoot(note) { if (note.noteId === shareRoot.SHARE_ROOT_NOTE_ID) { + // share root itself is not shared return null; } + // every path leads to share root, but which one to choose? + // for sake of simplicity URLs are not note paths const parentNote = note.getParentNotes()[0]; if (parentNote.noteId === shareRoot.SHARE_ROOT_NOTE_ID) { return note; } - return getSubRoot(parentNote); + return getSharedSubTreeRoot(parentNote); } function register(router) { @@ -28,7 +31,7 @@ function register(router) { if (note) { const content = contentRenderer.getContent(note); - const subRoot = getSubRoot(note); + const subRoot = getSharedSubTreeRoot(note); res.render("share/page", { note,