mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-28 09:12:25 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <div class="relative">
 | |
|     <app-settings-content :header-text="$strings.HeaderCustomMetadataProviders">
 | |
|       <template #header-prefix>
 | |
|         <nuxt-link to="/config/item-metadata-utils" class="w-8 h-8 flex items-center justify-center rounded-full cursor-pointer hover:bg-white hover:bg-opacity-10 text-center mr-2">
 | |
|           <span class="material-icons text-2xl">arrow_back</span>
 | |
|         </nuxt-link>
 | |
|       </template>
 | |
|       <template #header-items>
 | |
|         <ui-tooltip :text="$strings.LabelClickForMoreInfo" class="inline-flex ml-2">
 | |
|           <a href="https://www.audiobookshelf.org/guides/custom-metadata-providers" target="_blank" class="inline-flex">
 | |
|             <span class="material-icons text-xl w-5 text-gray-200">help_outline</span>
 | |
|           </a>
 | |
|         </ui-tooltip>
 | |
|         <div class="flex-grow" />
 | |
| 
 | |
|         <ui-btn color="primary" small @click="setShowAddModal">{{ $strings.ButtonAdd }}</ui-btn>
 | |
|       </template>
 | |
| 
 | |
|       <tables-custom-metadata-provider-table :providers="providers" :processing.sync="processing" class="pt-2" @removed="providerRemoved" />
 | |
|       <modals-add-custom-metadata-provider-modal ref="addModal" v-model="showAddModal" @added="providerAdded" />
 | |
|     </app-settings-content>
 | |
|   </div>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| export default {
 | |
|   async asyncData({ store, redirect }) {
 | |
|     if (!store.getters['user/getIsAdminOrUp']) {
 | |
|       redirect('/')
 | |
|       return
 | |
|     }
 | |
|     return {}
 | |
|   },
 | |
|   data() {
 | |
|     return {
 | |
|       showAddModal: false,
 | |
|       processing: false,
 | |
|       providers: []
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     providerRemoved(providerId) {
 | |
|       this.providers = this.providers.filter((p) => p.id !== providerId)
 | |
|     },
 | |
|     providerAdded(provider) {
 | |
|       this.providers.push(provider)
 | |
|     },
 | |
|     setShowAddModal() {
 | |
|       this.showAddModal = true
 | |
|     },
 | |
|     loadProviders() {
 | |
|       this.processing = true
 | |
|       this.$axios
 | |
|         .$get('/api/custom-metadata-providers')
 | |
|         .then((res) => {
 | |
|           this.providers = res.providers
 | |
|         })
 | |
|         .catch((error) => {
 | |
|           console.error('Failed', error)
 | |
|           this.$toast.error('Failed to load custom metadata providers')
 | |
|         })
 | |
|         .finally(() => {
 | |
|           this.processing = false
 | |
|         })
 | |
|     }
 | |
|   },
 | |
|   mounted() {
 | |
|     this.loadProviders()
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| 
 | |
| <style></style>
 |