mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-31 18:37:00 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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() |