const SocketAuthority = require('../SocketAuthority') const Task = require('../objects/Task') class TaskManager { constructor() { /** @type {Task[]} */ this.tasks = [] } /** * Add task and emit socket task_started event * * @param {Task} task */ addTask(task) { this.tasks.push(task) SocketAuthority.emitter('task_started', task.toJSON()) } /** * Remove task and emit task_finished event * * @param {Task} task */ taskFinished(task) { if (this.tasks.some(t => t.id === task.id)) { this.tasks = this.tasks.filter(t => t.id !== task.id) SocketAuthority.emitter('task_finished', task.toJSON()) } } /** * Create new task and add * * @param {string} action * @param {string} title * @param {string} description * @param {boolean} showSuccess * @param {Object} [data] */ createAndAddTask(action, title, description, showSuccess, data = {}) { const task = new Task() task.setData(action, title, description, showSuccess, data) this.addTask(task) return task } } module.exports = new TaskManager()