mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-10-27 11:18:14 +01:00
61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
export const state = () => ({
|
|
bookProviders: [],
|
|
podcastProviders: [],
|
|
bookCoverProviders: [],
|
|
podcastCoverProviders: [],
|
|
providersLoaded: false
|
|
})
|
|
|
|
export const getters = {
|
|
checkBookProviderExists: (state) => (providerValue) => {
|
|
return state.bookProviders.some((p) => p.value === providerValue)
|
|
},
|
|
checkPodcastProviderExists: (state) => (providerValue) => {
|
|
return state.podcastProviders.some((p) => p.value === providerValue)
|
|
},
|
|
areProvidersLoaded: (state) => state.providersLoaded
|
|
}
|
|
|
|
export const actions = {
|
|
async fetchProviders({ commit, state }) {
|
|
// Only fetch if not already loaded
|
|
if (state.providersLoaded) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
const response = await this.$axios.$get('/api/search/providers')
|
|
if (response?.providers) {
|
|
commit('setAllProviders', response.providers)
|
|
}
|
|
} catch (error) {
|
|
console.error('Failed to fetch providers', error)
|
|
}
|
|
},
|
|
async refreshProviders({ commit, state }) {
|
|
// if providers are not loaded, do nothing - they will be fetched when required (
|
|
if (!state.providersLoaded) {
|
|
return
|
|
}
|
|
|
|
try {
|
|
const response = await this.$axios.$get('/api/search/providers')
|
|
if (response?.providers) {
|
|
commit('setAllProviders', response.providers)
|
|
}
|
|
} catch (error) {
|
|
console.error('Failed to refresh providers', error)
|
|
}
|
|
}
|
|
}
|
|
|
|
export const mutations = {
|
|
setAllProviders(state, providers) {
|
|
state.bookProviders = providers.books || []
|
|
state.podcastProviders = providers.podcasts || []
|
|
state.bookCoverProviders = providers.booksCovers || []
|
|
state.podcastCoverProviders = providers.podcasts || [] // Use same as bookCovers since podcasts use iTunes only
|
|
state.providersLoaded = true
|
|
}
|
|
}
|