mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01: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
 | 
						|
    }
 | 
						|
  }
 | 
						|
} |