mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-26 08:12:25 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			126 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| export const state = () => ({
 | |
|   providers: [
 | |
|     {
 | |
|       text: 'Google Books',
 | |
|       value: 'google'
 | |
|     },
 | |
|     {
 | |
|       text: 'Open Library',
 | |
|       value: 'openlibrary'
 | |
|     },
 | |
|     {
 | |
|       text: 'iTunes',
 | |
|       value: 'itunes'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.com',
 | |
|       value: 'audible'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.ca',
 | |
|       value: 'audible.ca'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.co.uk',
 | |
|       value: 'audible.uk'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.com.au',
 | |
|       value: 'audible.au'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.fr',
 | |
|       value: 'audible.fr'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.de',
 | |
|       value: 'audible.de'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.co.jp',
 | |
|       value: 'audible.jp'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.it',
 | |
|       value: 'audible.it'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.co.in',
 | |
|       value: 'audible.in'
 | |
|     },
 | |
|     {
 | |
|       text: 'Audible.es',
 | |
|       value: 'audible.es'
 | |
|     },
 | |
|     {
 | |
|       text: 'FantLab.ru',
 | |
|       value: 'fantlab'
 | |
|     }
 | |
|   ],
 | |
|   podcastProviders: [
 | |
|     {
 | |
|       text: 'iTunes',
 | |
|       value: 'itunes'
 | |
|     }
 | |
|   ],
 | |
|   coverOnlyProviders: [
 | |
|     {
 | |
|       text: 'AudiobookCovers.com',
 | |
|       value: 'audiobookcovers'
 | |
|     }
 | |
|   ]
 | |
| })
 | |
| 
 | |
| export const getters = {
 | |
|   checkBookProviderExists: state => (providerValue) => {
 | |
|     return state.providers.some(p => p.value === providerValue)
 | |
|   },
 | |
|   checkPodcastProviderExists: state => (providerValue) => {
 | |
|     return state.podcastProviders.some(p => p.value === providerValue)
 | |
|   }
 | |
| }
 | |
| 
 | |
| export const actions = {}
 | |
| 
 | |
| export const mutations = {
 | |
|   addCustomMetadataProvider(state, provider) {
 | |
|     if (provider.mediaType === 'book') {
 | |
|       if (state.providers.some(p => p.value === provider.slug)) return
 | |
|       state.providers.push({
 | |
|         text: provider.name,
 | |
|         value: provider.slug
 | |
|       })
 | |
|     } else {
 | |
|       if (state.podcastProviders.some(p => p.value === provider.slug)) return
 | |
|       state.podcastProviders.push({
 | |
|         text: provider.name,
 | |
|         value: provider.slug
 | |
|       })
 | |
|     }
 | |
|   },
 | |
|   removeCustomMetadataProvider(state, provider) {
 | |
|     if (provider.mediaType === 'book') {
 | |
|       state.providers = state.providers.filter(p => p.value !== provider.slug)
 | |
|     } else {
 | |
|       state.podcastProviders = state.podcastProviders.filter(p => p.value !== provider.slug)
 | |
|     }
 | |
|   },
 | |
|   setCustomMetadataProviders(state, providers) {
 | |
|     if (!providers?.length) return
 | |
| 
 | |
|     const mediaType = providers[0].mediaType
 | |
|     if (mediaType === 'book') {
 | |
|       // clear previous values, and add new values to the end
 | |
|       state.providers = state.providers.filter((p) => !p.value.startsWith('custom-'))
 | |
|       state.providers = [
 | |
|         ...state.providers,
 | |
|         ...providers.map((p) => ({
 | |
|           text: p.name,
 | |
|           value: p.slug
 | |
|         }))
 | |
|       ]
 | |
|     } else {
 | |
|       // Podcast providers not supported yet
 | |
|     }
 | |
|   }
 | |
| } |