export const state = () => ({ tasks: [], queuedEmbedLIds: [] }) export const getters = { getTasksByLibraryItemId: (state) => (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) } } export const actions = { } export const mutations = { setTasks(state, tasks) { state.tasks = tasks }, addUpdateTask(state, task) { 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 => { if (!_task.data?.libraryItemId || _task.action !== task.action) return true return _task.data.libraryItemId !== task.data.libraryItemId }) state.tasks.push(task) } }, removeTask(state, task) { 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)) { state.queuedEmbedLIds.push(libraryItemId) } }, removeQueuedEmbedLId(state, libraryItemId) { state.queuedEmbedLIds = state.queuedEmbedLIds.filter(lid => lid !== libraryItemId) } }