Fixes + add progress to m4b and embed tools

This commit is contained in:
mikiher 2024-07-20 12:28:06 +03:00
parent b6875a44cf
commit 10f5f331d7
11 changed files with 530 additions and 211 deletions

View file

@ -1,34 +1,60 @@
import Vue from 'vue'
export const state = () => ({
tasks: [],
queuedEmbedLIds: []
queuedEmbedLIds: [],
audioFilesEncoding: {},
audioFilesFinished: {},
taskProgress: {}
})
export const getters = {
getTasksByLibraryItemId: (state) => (libraryItemId) => {
return state.tasks.filter(t => t.data?.libraryItemId === libraryItemId)
return state.tasks.filter((t) => t.data?.libraryItemId === libraryItemId)
},
getRunningLibraryScanTask: (state) => (libraryId) => {
const libraryScanActions = ['library-scan', 'library-match-all']
return state.tasks.find(t => libraryScanActions.includes(t.action) && t.data?.libraryId === libraryId && !t.isFinished)
return state.tasks.find((t) => libraryScanActions.includes(t.action) && t.data?.libraryId === libraryId && !t.isFinished)
},
getAudioFilesEncoding: (state) => (libraryItemId) => {
return state.audioFilesEncoding[libraryItemId]
},
getAudioFilesFinished: (state) => (libraryItemId) => {
return state.audioFilesFinished[libraryItemId]
},
getTaskProgress: (state) => (libraryItemId) => {
return state.taskProgress[libraryItemId]
}
}
export const actions = {
}
export const actions = {}
export const mutations = {
updateAudioFilesEncoding(state, payload) {
if (!state.audioFilesEncoding[payload.libraryItemId]) {
Vue.set(state.audioFilesEncoding, payload.libraryItemId, {})
}
Vue.set(state.audioFilesEncoding[payload.libraryItemId], payload.ino, payload.progress)
},
updateAudioFilesFinished(state, payload) {
if (!state.audioFilesFinished[payload.libraryItemId]) {
Vue.set(state.audioFilesFinished, payload.libraryItemId, {})
}
Vue.set(state.audioFilesFinished[payload.libraryItemId], payload.ino, payload.finished)
},
updateTaskProgress(state, payload) {
Vue.set(state.taskProgress, payload.libraryItemId, payload.progress)
},
setTasks(state, tasks) {
state.tasks = tasks
},
addUpdateTask(state, task) {
const index = state.tasks.findIndex(d => d.id === task.id)
const index = state.tasks.findIndex((d) => d.id === task.id)
if (index >= 0) {
state.tasks.splice(index, 1, task)
} else {
// Remove duplicate (only have one library item per action)
state.tasks = state.tasks.filter(_task => {
state.tasks = state.tasks.filter((_task) => {
if (!_task.data?.libraryItemId || _task.action !== task.action) return true
return _task.data.libraryItemId !== task.data.libraryItemId
})
@ -37,17 +63,17 @@ export const mutations = {
}
},
removeTask(state, task) {
state.tasks = state.tasks.filter(d => d.id !== task.id)
state.tasks = state.tasks.filter((d) => d.id !== task.id)
},
setQueuedEmbedLIds(state, libraryItemIds) {
state.queuedEmbedLIds = libraryItemIds
},
addQueuedEmbedLId(state, libraryItemId) {
if (!state.queuedEmbedLIds.some(lid => lid === libraryItemId)) {
if (!state.queuedEmbedLIds.some((lid) => lid === libraryItemId)) {
state.queuedEmbedLIds.push(libraryItemId)
}
},
removeQueuedEmbedLId(state, libraryItemId) {
state.queuedEmbedLIds = state.queuedEmbedLIds.filter(lid => lid !== libraryItemId)
state.queuedEmbedLIds = state.queuedEmbedLIds.filter((lid) => lid !== libraryItemId)
}
}
}