mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	protect/unprotect tree reports progress via notifications
This commit is contained in:
		| @@ -4,6 +4,7 @@ import utils from './utils.js'; | ||||
| import server from './server.js'; | ||||
| import protectedSessionHolder from './protected_session_holder.js'; | ||||
| import infoService from "./info.js"; | ||||
| import ws from "./ws.js"; | ||||
|  | ||||
| const $enterProtectedSessionButton = $("#enter-protected-session-button"); | ||||
| const $leaveProtectedSessionButton = $("#leave-protected-session-button"); | ||||
| @@ -117,12 +118,39 @@ async function protectSubtree(noteId, protect) { | ||||
|  | ||||
|     await server.put('notes/' + noteId + "/protect/" + (protect ? 1 : 0)); | ||||
|  | ||||
|     infoService.showMessage("Request to un/protect sub tree has finished successfully"); | ||||
|  | ||||
|     treeService.reload(); | ||||
|     noteDetailService.reload(); | ||||
| } | ||||
|  | ||||
| function makeToast(message, protectingLabel, text) { | ||||
|     return { | ||||
|         id: message.taskId, | ||||
|         title: protectingLabel + " status", | ||||
|         message: text, | ||||
|         icon: message.data.protect ? "shield-check" : "shield-close" | ||||
|     }; | ||||
| } | ||||
|  | ||||
| ws.subscribeToMessages(async message => { | ||||
|     if (message.taskType !== 'protect-notes') { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     const protectingLabel = message.data.protect ? "Protecting" : "Unprotecting"; | ||||
|  | ||||
|     if (message.type === 'task-error') { | ||||
|         infoService.closePersistent(message.taskId); | ||||
|         infoService.showError(message.message); | ||||
|     } else if (message.type === 'task-progress-count') { | ||||
|         infoService.showPersistent(makeToast(message, protectingLabel,protectingLabel + " in progress: " + message.progressCount)); | ||||
|     } else if (message.type === 'task-succeeded') { | ||||
|         const toast = makeToast(message, protectingLabel, protectingLabel + " finished successfully."); | ||||
|         toast.closeAfter = 3000; | ||||
|  | ||||
|         infoService.showPersistent(toast); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| export default { | ||||
|     protectSubtree, | ||||
|     enterProtectedSession, | ||||
|   | ||||
| @@ -102,7 +102,11 @@ async function protectSubtree(req) { | ||||
|     const note = await repository.getNote(noteId); | ||||
|     const protect = !!parseInt(req.params.isProtected); | ||||
|  | ||||
|     await noteService.protectNoteRecursively(note, protect); | ||||
|     const taskContext = new TaskContext(utils.randomString(10), 'protect-notes', {protect}); | ||||
|  | ||||
|     await noteService.protectNoteRecursively(note, protect, taskContext); | ||||
|  | ||||
|     taskContext.taskSucceeded(); | ||||
| } | ||||
|  | ||||
| async function setNoteTypeMime(req) { | ||||
|   | ||||
| @@ -177,11 +177,13 @@ async function createNote(parentNoteId, title, content = "", extraOptions = {}) | ||||
|     return {note, branch}; | ||||
| } | ||||
|  | ||||
| async function protectNoteRecursively(note, protect) { | ||||
| async function protectNoteRecursively(note, protect, taskContext) { | ||||
|     await protectNote(note, protect); | ||||
|  | ||||
|     taskContext.increaseProgressCount(); | ||||
|  | ||||
|     for (const child of await note.getChildNotes()) { | ||||
|         await protectNoteRecursively(child, protect); | ||||
|         await protectNoteRecursively(child, protect, taskContext); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -35,6 +35,7 @@ class TaskContext { | ||||
|                 type: 'task-progress-count', | ||||
|                 taskId: this.taskId, | ||||
|                 taskType: this.taskType, | ||||
|                 data: this.data, | ||||
|                 progressCount: this.progressCount | ||||
|             }); | ||||
|         } | ||||
| @@ -45,6 +46,7 @@ class TaskContext { | ||||
|             type: 'task-error', | ||||
|             taskId: this.taskId, | ||||
|             taskType: this.taskType, | ||||
|             data: this.data, | ||||
|             message: message | ||||
|         }); | ||||
|     } | ||||
| @@ -54,6 +56,7 @@ class TaskContext { | ||||
|             type: 'task-succeeded', | ||||
|             taskId: this.taskId, | ||||
|             taskType: this.taskType, | ||||
|             data: this.data, | ||||
|             result: result | ||||
|         }); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user