Add tasks queue dropdown

This commit is contained in:
mfcar 2023-03-05 11:15:36 +00:00
parent cfb3ce0c60
commit 61c759e0c4
No known key found for this signature in database
14 changed files with 213 additions and 21 deletions

View file

@ -14,12 +14,15 @@ const LibraryFile = require('../objects/files/LibraryFile')
const PodcastEpisodeDownload = require('../objects/PodcastEpisodeDownload')
const PodcastEpisode = require('../objects/entities/PodcastEpisode')
const AudioFile = require('../objects/files/AudioFile')
const Task = require("../objects/Task");
const Path = require("path");
class PodcastManager {
constructor(db, watcher, notificationManager) {
constructor(db, watcher, notificationManager, taskManager) {
this.db = db
this.watcher = watcher
this.notificationManager = notificationManager
this.taskManager = taskManager
this.downloadQueue = []
this.currentDownload = null
@ -57,11 +60,11 @@ class PodcastManager {
newPe.libraryItemId = libraryItem.id
var newPeDl = new PodcastEpisodeDownload()
newPeDl.setData(newPe, libraryItem, isAutoDownload, libraryItem.libraryId)
this.startPodcastEpisodeDownload(newPeDl)
this.startPodcastEpisodeDownload(newPeDl, libraryItem)
})
}
async startPodcastEpisodeDownload(podcastEpisodeDownload) {
async startPodcastEpisodeDownload(podcastEpisodeDownload, libraryItem) {
SocketAuthority.emitter('download_queue_updated', this.getDownloadQueueDetails())
if (this.currentDownload) {
this.downloadQueue.push(podcastEpisodeDownload)
@ -69,6 +72,15 @@ class PodcastManager {
return
}
const task = new Task()
const taskDescription = `Downloading episode "${podcastEpisodeDownload.podcastEpisode.title}".`
const taskData = {
libraryId: libraryItem.libraryId,
libraryItemId: libraryItem.id,
}
task.setData('download-podcast-episode', 'Downloading Episode', taskDescription, taskData)
this.taskManager.addTask(task)
SocketAuthority.emitter('episode_download_started', podcastEpisodeDownload.toJSONForClient())
this.currentDownload = podcastEpisodeDownload
@ -91,21 +103,26 @@ class PodcastManager {
if (!success) {
await fs.remove(this.currentDownload.targetPath)
this.currentDownload.setFinished(false)
task.setFailed('Failed to download episode')
} else {
Logger.info(`[PodcastManager] Successfully downloaded podcast episode "${this.currentDownload.podcastEpisode.title}"`)
this.currentDownload.setFinished(true)
task.setFinished()
}
} else {
task.setFailed('Failed to download episode')
this.currentDownload.setFinished(false)
}
this.taskManager.taskFinished(task)
SocketAuthority.emitter('episode_download_finished', this.currentDownload.toJSONForClient())
SocketAuthority.emitter('download_queue_updated', this.getDownloadQueueDetails())
this.watcher.removeIgnoreDir(this.currentDownload.libraryItem.path)
this.currentDownload = null
if (this.downloadQueue.length) {
this.startPodcastEpisodeDownload(this.downloadQueue.shift())
this.startPodcastEpisodeDownload(this.downloadQueue.shift(), libraryItem)
}
}