mirror of
https://github.com/zadam/trilium.git
synced 2025-11-13 16:55:50 +01:00
delete notes are now in cache as well which allows simplified update of the tree after deletion
This commit is contained in:
@@ -80,6 +80,22 @@ async function moveToNode(nodesToMove, toNode) {
|
||||
}
|
||||
}
|
||||
|
||||
async function getNextNode(nodes) {
|
||||
// following code assumes that nodes contain only top-most selected nodes - getSelectedNodes has been
|
||||
// called with stopOnParent=true
|
||||
let next = nodes[nodes.length - 1].getNextSibling();
|
||||
|
||||
if (!next) {
|
||||
next = nodes[0].getPrevSibling();
|
||||
}
|
||||
|
||||
if (!next && !await hoistedNoteService.isRootNode(nodes[0])) {
|
||||
next = nodes[0].getParent();
|
||||
}
|
||||
|
||||
return treeUtils.getNotePath(next);
|
||||
}
|
||||
|
||||
async function deleteNodes(nodes) {
|
||||
nodes = await filterRootNote(nodes);
|
||||
|
||||
@@ -130,47 +146,11 @@ async function deleteNodes(nodes) {
|
||||
}
|
||||
}
|
||||
|
||||
if (deleteClones) {
|
||||
// if clones are also deleted we give up with targeted cleanup of the tree
|
||||
treeService.reload();
|
||||
return true;
|
||||
}
|
||||
const nextNotePath = await getNextNode(nodes);
|
||||
|
||||
// following code assumes that nodes contain only top-most selected nodes - getSelectedNodes has been
|
||||
// called with stopOnParent=true
|
||||
let next = nodes[nodes.length - 1].getNextSibling();
|
||||
const noteIds = Array.from(new Set(nodes.map(node => node.data.noteId)));
|
||||
|
||||
if (!next) {
|
||||
next = nodes[0].getPrevSibling();
|
||||
}
|
||||
|
||||
if (!next && !await hoistedNoteService.isRootNode(nodes[0])) {
|
||||
next = nodes[0].getParent();
|
||||
}
|
||||
|
||||
let activeNotePath = null;
|
||||
|
||||
if (next) {
|
||||
activeNotePath = await treeUtils.getNotePath(next);
|
||||
}
|
||||
|
||||
await treeService.loadTreeCache();
|
||||
|
||||
const parentNoteIds = Array.from(new Set(nodes.map(node => node.getParent().data.noteId)));
|
||||
|
||||
for (const node of nodes) {
|
||||
node.remove();
|
||||
}
|
||||
|
||||
await treeService.reloadNotes(parentNoteIds);
|
||||
|
||||
// activate after all the reloading
|
||||
if (activeNotePath) {
|
||||
treeService.focusTree();
|
||||
|
||||
const node = await treeService.activateNote(activeNotePath);
|
||||
node.setFocus(true);
|
||||
}
|
||||
await treeService.reloadNotes(noteIds, nextNotePath);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user