+
@@ -253,6 +253,7 @@ export default {
hasSearched: false,
selectedMatch: null,
selectedMatchOrig: null,
+ waitingForProviders: false,
selectedMatchUsage: {
title: true,
subtitle: true,
@@ -285,9 +286,19 @@ export default {
handler(newVal) {
if (newVal) this.init()
}
+ },
+ providersLoaded(isLoaded) {
+ // Complete initialization once providers are loaded
+ if (isLoaded && this.waitingForProviders) {
+ this.waitingForProviders = false
+ this.initProviderAndSearch()
+ }
}
},
computed: {
+ providersLoaded() {
+ return this.$store.getters['scanners/areProvidersLoaded']
+ },
isProcessing: {
get() {
return this.processing
@@ -478,6 +489,24 @@ export default {
this.checkboxToggled()
},
+ initProviderAndSearch() {
+ // Set provider based on media type
+ if (this.isPodcast) {
+ this.provider = 'itunes'
+ } else {
+ this.provider = this.getDefaultBookProvider()
+ }
+
+ // Prefer using ASIN if set and using audible provider
+ if (this.provider.startsWith('audible') && this.libraryItem.media.metadata.asin) {
+ this.searchTitle = this.libraryItem.media.metadata.asin
+ this.searchAuthor = ''
+ }
+
+ if (this.searchTitle) {
+ this.submitSearch()
+ }
+ },
init() {
this.clearSelectedMatch()
this.initSelectedMatchUsage()
@@ -495,19 +524,13 @@ export default {
}
this.searchTitle = this.libraryItem.media.metadata.title
this.searchAuthor = this.libraryItem.media.metadata.authorName || ''
- if (this.isPodcast) this.provider = 'itunes'
- else {
- this.provider = this.getDefaultBookProvider()
- }
- // Prefer using ASIN if set and using audible provider
- if (this.provider.startsWith('audible') && this.libraryItem.media.metadata.asin) {
- this.searchTitle = this.libraryItem.media.metadata.asin
- this.searchAuthor = ''
- }
-
- if (this.searchTitle) {
- this.submitSearch()
+ // Wait for providers to be loaded before setting provider and searching
+ if (this.providersLoaded || this.isPodcast) {
+ this.waitingForProviders = false
+ this.initProviderAndSearch()
+ } else {
+ this.waitingForProviders = true
}
},
selectMatch(match) {
@@ -637,6 +660,10 @@ export default {
this.selectedMatch = null
this.selectedMatchOrig = null
}
+ },
+ mounted() {
+ // Fetch providers if not already loaded
+ this.$store.dispatch('scanners/fetchProviders')
}
}
diff --git a/client/components/modals/libraries/EditLibrary.vue b/client/components/modals/libraries/EditLibrary.vue
index 1e4d3990..c805f79b 100644
--- a/client/components/modals/libraries/EditLibrary.vue
+++ b/client/components/modals/libraries/EditLibrary.vue
@@ -156,6 +156,8 @@ export default {
},
mounted() {
this.init()
+ // Fetch providers if not already loaded
+ this.$store.dispatch('scanners/fetchProviders')
}
}
diff --git a/client/components/modals/libraries/LibrarySettings.vue b/client/components/modals/libraries/LibrarySettings.vue
index 231cb5ec..7cfc2201 100644
--- a/client/components/modals/libraries/LibrarySettings.vue
+++ b/client/components/modals/libraries/LibrarySettings.vue
@@ -104,7 +104,6 @@ export default {
},
data() {
return {
- provider: null,
useSquareBookCovers: false,
enableWatcher: false,
skipMatchingMediaWithAsin: false,
@@ -134,10 +133,6 @@ export default {
isPodcastLibrary() {
return this.mediaType === 'podcast'
},
- providers() {
- if (this.mediaType === 'podcast') return this.$store.state.scanners.podcastProviders
- return this.$store.state.scanners.bookProviders
- },
maskAsFinishedWhenItems() {
return [
{
diff --git a/client/pages/config/index.vue b/client/pages/config/index.vue
index 099ae9c4..b8cf3cff 100644
--- a/client/pages/config/index.vue
+++ b/client/pages/config/index.vue
@@ -417,6 +417,8 @@ export default {
},
mounted() {
this.initServerSettings()
+ // Fetch providers if not already loaded (for cover provider dropdown)
+ this.$store.dispatch('scanners/fetchProviders')
}
}
diff --git a/client/pages/upload/index.vue b/client/pages/upload/index.vue
index 84d4d147..73ebef9c 100644
--- a/client/pages/upload/index.vue
+++ b/client/pages/upload/index.vue
@@ -394,6 +394,8 @@ export default {
this.setMetadataProvider()
this.setDefaultFolder()
+ // Fetch providers if not already loaded
+ this.$store.dispatch('scanners/fetchProviders')
window.addEventListener('dragenter', this.dragenter)
window.addEventListener('dragleave', this.dragleave)
window.addEventListener('dragover', this.dragover)