mirror of
https://github.com/zadam/trilium.git
synced 2025-01-16 03:58:53 +08:00
allow deleting notes including all the clones, closes #629
This commit is contained in:
parent
c614bc3263
commit
8dadc7e518
5 changed files with 35 additions and 12 deletions
|
@ -86,21 +86,44 @@ async function deleteNodes(nodes) {
|
|||
return false;
|
||||
}
|
||||
|
||||
const nodeTitles = $("<ul>").append(...nodes.map(node => $("<li>").text(node.title)));
|
||||
const confirmText = $("<div>").text('This will delete the following notes and their sub-notes: ').append(nodeTitles);
|
||||
const $deleteClonesCheckbox = $('<div class="form-check">')
|
||||
.append($('<input type="checkbox" class="form-check-input" id="delete-clones-checkbox">'))
|
||||
.append($('<label for="delete-clones-checkbox">')
|
||||
.text("delete also all note clones")
|
||||
.attr("title", "all clones of selected notes will be deleted and as such the whole note will be deleted."));
|
||||
const $nodeTitles = $("<ul>").append(...nodes.map(node => $("<li>").text(node.title)));
|
||||
const $confirmText = $("<div>")
|
||||
.append($("<p>").text('This will delete the following notes and their sub-notes: '))
|
||||
.append($nodeTitles)
|
||||
.append($deleteClonesCheckbox);
|
||||
|
||||
const confirmDialog = await import('../dialogs/confirm.js');
|
||||
|
||||
if (!await confirmDialog.confirm(confirmText)) {
|
||||
if (!await confirmDialog.confirm($confirmText)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (const node of nodes) {
|
||||
const {noteDeleted} = await server.remove('branches/' + node.data.branchId);
|
||||
const deleteClones = $deleteClonesCheckbox.find("input").is(":checked");
|
||||
|
||||
for (const node of nodes) {
|
||||
if (deleteClones) {
|
||||
await server.remove('notes/' + node.data.noteId);
|
||||
|
||||
if (noteDeleted) {
|
||||
noteDetailService.noteDeleted(node.data.noteId);
|
||||
}
|
||||
else {
|
||||
const {noteDeleted} = await server.remove('branches/' + node.data.branchId);
|
||||
|
||||
if (noteDeleted) {
|
||||
noteDetailService.noteDeleted(node.data.noteId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (deleteClones) {
|
||||
// if clones are also deleted we give up with targeted cleanup of the tree
|
||||
treeService.reload();
|
||||
return true;
|
||||
}
|
||||
|
||||
// following code assumes that nodes contain only top-most selected nodes - getSelectedNodes has been
|
||||
|
|
|
@ -103,7 +103,7 @@ async function deleteBranch(req) {
|
|||
const branch = await repository.getBranch(req.params.branchId);
|
||||
|
||||
return {
|
||||
noteDeleted: await notes.deleteNote(branch)
|
||||
noteDeleted: await notes.deleteBranch(branch)
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ async function deleteNote(req) {
|
|||
const note = await repository.getNote(noteId);
|
||||
|
||||
for (const branch of await note.getBranches()) {
|
||||
await noteService.deleteNote(branch);
|
||||
await noteService.deleteBranch(branch);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ async function ensureNoteIsAbsentFromParent(noteId, parentNoteId) {
|
|||
const branch = await repository.getEntity(`SELECT * FROM branches WHERE noteId = ? AND parentNoteId = ? AND isDeleted = 0`, [noteId, parentNoteId]);
|
||||
|
||||
if (branch) {
|
||||
await noteService.deleteNote(branch);
|
||||
await noteService.deleteBranch(branch);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -384,7 +384,7 @@ async function updateNote(noteId, noteUpdates) {
|
|||
}
|
||||
|
||||
/** @return {boolean} - true if note has been deleted, false otherwise */
|
||||
async function deleteNote(branch) {
|
||||
async function deleteBranch(branch) {
|
||||
if (!branch || branch.isDeleted) {
|
||||
return false;
|
||||
}
|
||||
|
@ -407,7 +407,7 @@ async function deleteNote(branch) {
|
|||
await note.save();
|
||||
|
||||
for (const childBranch of await note.getChildBranches()) {
|
||||
await deleteNote(childBranch);
|
||||
await deleteBranch(childBranch);
|
||||
}
|
||||
|
||||
for (const attribute of await note.getOwnedAttributes()) {
|
||||
|
@ -461,7 +461,7 @@ module.exports = {
|
|||
createNewNote,
|
||||
createNote,
|
||||
updateNote,
|
||||
deleteNote,
|
||||
deleteBranch,
|
||||
protectNoteRecursively,
|
||||
scanForLinks
|
||||
};
|
Loading…
Reference in a new issue