mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-31 10:27:01 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import Vue from 'vue'
 | |
| 
 | |
| export const state = () => ({
 | |
|   tasks: [],
 | |
|   queuedEmbedLIds: [],
 | |
|   audioFilesEncoding: {},
 | |
|   audioFilesFinished: {},
 | |
|   taskProgress: {}
 | |
| })
 | |
| 
 | |
| 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)
 | |
|   },
 | |
|   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 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)
 | |
|     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)
 | |
|   }
 | |
| }
 |