delete progress

This commit is contained in:
zadam 2019-10-18 23:19:16 +02:00
parent b890859025
commit 9f4ca279aa
7 changed files with 53 additions and 15 deletions

View File

@ -117,14 +117,18 @@ function makeToast(id, message) {
} }
ws.subscribeToMessages(async message => { ws.subscribeToMessages(async message => {
if (message.type === 'task-error' && message.taskType === 'export') { if (message.taskType !== 'export') {
return;
}
if (message.type === 'task-error') {
infoService.closePersistent(message.taskId); infoService.closePersistent(message.taskId);
infoService.showError(message.message); infoService.showError(message.message);
} }
else if (message.type === 'task-progress-count' && message.taskType === 'export') { else if (message.type === 'task-progress-count') {
infoService.showPersistent(makeToast(message.taskId, "Export in progress: " + message.progressCount)); infoService.showPersistent(makeToast(message.taskId, "Export in progress: " + message.progressCount));
} }
else if (message.type === 'task-succeeded' && message.taskType === 'export') { else if (message.type === 'task-succeeded') {
const toast = makeToast(message.taskId, "Import finished successfully."); const toast = makeToast(message.taskId, "Import finished successfully.");
toast.closeAfter = 5000; toast.closeAfter = 5000;

View File

@ -6,6 +6,7 @@ import treeCache from "./tree_cache.js";
import treeUtils from "./tree_utils.js"; import treeUtils from "./tree_utils.js";
import hoistedNoteService from "./hoisted_note.js"; import hoistedNoteService from "./hoisted_note.js";
import noteDetailService from "./note_detail.js"; import noteDetailService from "./note_detail.js";
import ws from "./ws.js";
async function moveBeforeNode(nodesToMove, beforeNode) { async function moveBeforeNode(nodesToMove, beforeNode) {
nodesToMove = await filterRootNote(nodesToMove); nodesToMove = await filterRootNote(nodesToMove);
@ -105,14 +106,16 @@ async function deleteNodes(nodes) {
const deleteClones = $deleteClonesCheckbox.find("input").is(":checked"); const deleteClones = $deleteClonesCheckbox.find("input").is(":checked");
const taskId = utils.randomString(10);
for (const node of nodes) { for (const node of nodes) {
if (deleteClones) { if (deleteClones) {
await server.remove('notes/' + node.data.noteId); await server.remove('notes/' + node.data.noteId + '?taskId=' + taskId);
noteDetailService.noteDeleted(node.data.noteId); noteDetailService.noteDeleted(node.data.noteId);
} }
else { else {
const {noteDeleted} = await server.remove('branches/' + node.data.branchId); const {noteDeleted} = await server.remove('branches/' + node.data.branchId + '?taskId=' + taskId);
if (noteDeleted) { if (noteDeleted) {
noteDetailService.noteDeleted(node.data.noteId); noteDetailService.noteDeleted(node.data.noteId);
@ -249,6 +252,33 @@ async function filterRootNote(nodes) {
&& node.data.noteId !== hoistedNoteId); && node.data.noteId !== hoistedNoteId);
} }
function makeToast(id, message) {
return {
id: id,
title: "Delete status",
message: message,
icon: "trash"
};
}
ws.subscribeToMessages(async message => {
if (message.taskType !== 'delete-notes') {
return;
}
if (message.type === 'task-error') {
infoService.closePersistent(message.taskId);
infoService.showError(message.message);
} else if (message.type === 'task-progress-count') {
infoService.showPersistent(makeToast(message.taskId, "Delete notes in progress: " + message.progressCount));
} else if (message.type === 'task-succeeded') {
const toast = makeToast(message.taskId, "Delete finished successfully.");
toast.closeAfter = 5000;
infoService.showPersistent(toast);
}
});
export default { export default {
moveBeforeNode, moveBeforeNode,
moveAfterNode, moveAfterNode,

View File

@ -48,14 +48,16 @@ function makeToast(id, message) {
} }
ws.subscribeToMessages(async message => { ws.subscribeToMessages(async message => {
if (message.type === 'task-error' && message.taskType === 'import') { if (message.taskType !== 'import') {
return;
}
if (message.type === 'task-error') {
infoService.closePersistent(message.taskId); infoService.closePersistent(message.taskId);
infoService.showError(message.message); infoService.showError(message.message);
} } else if (message.type === 'task-progress-count') {
else if (message.type === 'task-progress-count' && message.taskType === 'import') {
infoService.showPersistent(makeToast(message.taskId, "Import in progress: " + message.progressCount)); infoService.showPersistent(makeToast(message.taskId, "Import in progress: " + message.progressCount));
} } else if (message.type === 'task-succeeded') {
else if (message.type === 'task-succeeded' && message.taskType === 'import') {
const toast = makeToast(message.taskId, "Import finished successfully."); const toast = makeToast(message.taskId, "Import finished successfully.");
toast.closeAfter = 5000; toast.closeAfter = 5000;

View File

@ -6,6 +6,7 @@ const sync_table = require('../../services/sync_table');
const tree = require('../../services/tree'); const tree = require('../../services/tree');
const notes = require('../../services/notes'); const notes = require('../../services/notes');
const repository = require('../../services/repository'); const repository = require('../../services/repository');
const TaskContext = require('../../services/task_context');
/** /**
* Code in this file deals with moving and cloning branches. Relationship between note and parent note is unique * Code in this file deals with moving and cloning branches. Relationship between note and parent note is unique
@ -101,9 +102,10 @@ async function setExpanded(req) {
async function deleteBranch(req) { async function deleteBranch(req) {
const branch = await repository.getBranch(req.params.branchId); const branch = await repository.getBranch(req.params.branchId);
const taskContext = TaskContext.getInstance(req.query.taskId, 'delete-notes');
return { return {
noteDeleted: await notes.deleteBranch(branch) noteDeleted: await notes.deleteBranch(branch, taskContext)
}; };
} }

View File

@ -43,7 +43,7 @@ async function importToBranch(req) {
let note; // typically root of the import - client can show it after finishing the import let note; // typically root of the import - client can show it after finishing the import
const taskContext = TaskContext.getInstance(taskId, options); const taskContext = TaskContext.getInstance(taskId, 'import', options);
try { try {
if (extension === '.tar' && options.explodeArchives) { if (extension === '.tar' && options.explodeArchives) {

View File

@ -78,7 +78,7 @@ async function deleteNote(req) {
const note = await repository.getNote(noteId); const note = await repository.getNote(noteId);
const taskContext = new TaskContext(utils.randomString(10), 'delete-note'); const taskContext = TaskContext.getInstance(req.query.taskId, 'delete-notes');
for (const branch of await note.getBranches()) { for (const branch of await note.getBranches()) {
await noteService.deleteBranch(branch, taskContext); await noteService.deleteBranch(branch, taskContext);

View File

@ -17,9 +17,9 @@ class TaskContext {
} }
/** @return {TaskContext} */ /** @return {TaskContext} */
static getInstance(taskId, data) { static getInstance(taskId, taskType, data) {
if (!taskContexts[taskId]) { if (!taskContexts[taskId]) {
taskContexts[taskId] = new TaskContext(taskId, 'import', data); taskContexts[taskId] = new TaskContext(taskId, taskType, data);
} }
return taskContexts[taskId]; return taskContexts[taskId];