mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-03 19:07:00 -05: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() |