Skip to content

Commit

Permalink
Merge branch 'stable'
Browse files Browse the repository at this point in the history
# Conflicts:
#	package-lock.json
#	package.json
#	src/services/build.js
  • Loading branch information
zadam committed Nov 16, 2023
2 parents 6e2d76c + 2335129 commit 746abb0
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 21 deletions.
2 changes: 1 addition & 1 deletion src/public/app/services/link.js
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ async function loadReferenceLinkTitle($el, href = null) {

if (note) {
const icon = await getLinkIcon(noteId, viewScope.viewMode);
k

$el.prepend($("<span>").addClass(icon));
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/routes/api/branches.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ const eventService = require("../../services/events.js");
function moveBranchToParent(req) {
const {branchId, parentBranchId} = req.params;

const parentBranch = becca.getBranch(parentBranchId);
const branchToMove = becca.getBranch(branchId);
const targetParentBranch = becca.getBranch(parentBranchId);

if (!parentBranch || !branchToMove) {
if (!branchToMove || !targetParentBranch) {
throw new ValidationError(`One or both branches '${branchId}', '${parentBranchId}' have not been found`);
}

return branchService.moveBranchToBranch(branchToMove, parentBranch, branchId);
return branchService.moveBranchToBranch(branchToMove, targetParentBranch, branchId);
}

function moveBranchBeforeNote(req) {
Expand Down
20 changes: 11 additions & 9 deletions src/services/branches.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
const treeService = require("./tree");
const sql = require("./sql");

function moveBranchToNote(sourceBranch, targetParentNoteId) {
if (sourceBranch.parentNoteId === targetParentNoteId) {
function moveBranchToNote(branchToMove, targetParentNoteId) {
if (branchToMove.parentNoteId === targetParentNoteId) {
return {success: true}; // no-op
}

const validationResult = treeService.validateParentChild(targetParentNoteId, sourceBranch.noteId, sourceBranch.branchId);
const validationResult = treeService.validateParentChild(targetParentNoteId, branchToMove.noteId, branchToMove.branchId);

if (!validationResult.success) {
return [200, validationResult];
Expand All @@ -15,27 +15,29 @@ function moveBranchToNote(sourceBranch, targetParentNoteId) {
const maxNotePos = sql.getValue('SELECT MAX(notePosition) FROM branches WHERE parentNoteId = ? AND isDeleted = 0', [targetParentNoteId]);
const newNotePos = maxNotePos === null ? 0 : maxNotePos + 10;

const newBranch = sourceBranch.createClone(targetParentNoteId, newNotePos);
const newBranch = branchToMove.createClone(targetParentNoteId, newNotePos);
newBranch.save();

sourceBranch.markAsDeleted();
branchToMove.markAsDeleted();

return {
success: true,
branch: newBranch
};
}

function moveBranchToBranch(sourceBranch, targetParentBranch) {
const res = moveBranchToNote(sourceBranch, targetParentBranch.noteId);
function moveBranchToBranch(branchToMove, targetParentBranch) {
const res = moveBranchToNote(branchToMove, targetParentBranch.noteId);

if (!res.success) {
return res;
}

// expanding so that the new placement of the branch is immediately visible
targetParentBranch.isExpanded = true;
targetParentBranch.save();
if (!targetParentBranch.isExpanded) {
targetParentBranch.isExpanded = true;
targetParentBranch.save();
}

return res;
}
Expand Down
8 changes: 4 additions & 4 deletions src/services/search/expressions/attribute_exists.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ class AttributeExistsExp extends Expression {

this.attributeType = attributeType;
this.attributeName = attributeName;
// template attr is used as a marker for templates, but it's not meant to be inherited
this.isTemplateLabel = this.attributeType === 'label' && (this.attributeName === 'template' || this.attributeName === 'workspacetemplate');
this.prefixMatch = prefixMatch;
}

Expand All @@ -23,12 +25,10 @@ class AttributeExistsExp extends Expression {
for (const attr of attrs) {
const note = attr.note;

if (attr.isInheritable) {
if (attr.isInheritable && !this.isTemplateLabel) {
resultNoteSet.addAll(note.getSubtreeNotesIncludingTemplated());
}
else if (note.isInherited() &&
// template attr is used as a marker for templates, but it's not meant to be inherited
!(this.attributeType === 'label' && (this.attributeName === 'template' || this.attributeName === 'workspacetemplate'))) {
else if (note.isInherited() && !this.isTemplateLabel) {
resultNoteSet.addAll(note.getInheritingNotes());
}
else {
Expand Down
12 changes: 8 additions & 4 deletions src/services/tree.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ const becca = require('../becca/becca');

function validateParentChild(parentNoteId, childNoteId, branchId = null) {
if (['root', '_hidden', '_share', '_lbRoot', '_lbAvailableLaunchers', '_lbVisibleLaunchers'].includes(childNoteId)) {
return { branch: null, success: false, message: `Cannot change this note's location.`};
return { branch: null, success: false, message: `Cannot change this note's location.` };
}

if (parentNoteId === 'none') {
// this shouldn't happen
return { branch: null, success: false, message: `Cannot move anything into 'none' parent.` };
}

const existing = becca.getBranchFromChildAndParent(childNoteId, parentNoteId);
const existingBranch = becca.getBranchFromChildAndParent(childNoteId, parentNoteId);

if (existing && (branchId === null || existing.branchId !== branchId)) {
if (existingBranch && existingBranch.branchId !== branchId) {
const parentNote = becca.getNote(parentNoteId);
const childNote = becca.getNote(childNoteId);

return {
branch: existing,
branch: existingBranch,
success: false,
message: `Note "${childNote.title}" note already exists in the "${parentNote.title}".`
};
Expand Down Expand Up @@ -52,6 +52,10 @@ function validateParentChild(parentNoteId, childNoteId, branchId = null) {
* Tree cycle can be created when cloning or when moving existing clone. This method should detect both cases.
*/
function wouldAddingBranchCreateCycle(parentNoteId, childNoteId) {
if (parentNoteId === childNoteId) {
return true;
}

const childNote = becca.getNote(childNoteId);
const parentNote = becca.getNote(parentNoteId);

Expand Down

0 comments on commit 746abb0

Please sign in to comment.