From 2323839e75e8ce14aa720e840ae007d6cef04c6d Mon Sep 17 00:00:00 2001 From: liyunze <50455574+liyunze-coding@users.noreply.github.com> Date: Sat, 26 Aug 2023 23:18:58 +0800 Subject: [PATCH] added "!done all" command --- configs.js | 2 ++ scripts/index.js | 16 ++++++++++++++++ scripts/taskList.js | 20 ++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/configs.js b/configs.js index 2f54836..0dd154a 100644 --- a/configs.js +++ b/configs.js @@ -213,6 +213,7 @@ const configs = (function () { const adminDeleteTasks = "All of {mentioned}'s tasks have been deleted"; const taskFinished = 'Good job on finishing the task "{task}", {user}!'; + const allTasksFinished = "Good job on finishing all your tasks, {user}!"; const taskUnfinished = 'Task(s) "{task}" has been unmarked as done, {user}!'; const taskEdited = @@ -326,6 +327,7 @@ const configs = (function () { specifyTaskIndex, duplicateTask, taskFinished, + allTasksFinished, taskUnfinished, taskEdited, noTaskEdit, diff --git a/scripts/index.js b/scripts/index.js index dcde33e..54e63be 100644 --- a/scripts/index.js +++ b/scripts/index.js @@ -87,6 +87,22 @@ ComfyJS.onCommand = (user, command, message, flags, extra) => { respond(deletedResponse, params); } } else if (commands.finishTaskCommands.includes(command)) { + if (message === "all") { + let finishAllStatus = markAllTasksAsDone(user); + + if (finishAllStatus === 0) { + // user has no tasks + respond(responses.noTask, params); + } else { + // all tasks finished + let finishedResponse = responses.allTasksFinished; + + respond(finishedResponse, params); + } + + return; + } + let finishStatus = markTaskDone(user, message); if (finishStatus === 0) { diff --git a/scripts/taskList.js b/scripts/taskList.js index 0c084c5..1a9ab82 100644 --- a/scripts/taskList.js +++ b/scripts/taskList.js @@ -467,6 +467,26 @@ function markTaskDone(username, task) { } } +function markAllTasksAsDone(username) { + const tasks = JSON.parse(localStorage.tasks); + + // user does not have any tasks + if (!tasks[username] || tasks[username].todos.length === 0) { + return 0; + } + + for (const task of tasks[username].todos) { + task.done = true; + } + + localStorage.setItem(`tasks`, JSON.stringify(tasks)); + if (!scrolling) { + renderTaskListToDOM(); + } + + return 1; +} + function markTaskUndone(username, task) { const tasks = JSON.parse(localStorage.tasks);