mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Add user API token with copy to clipboard
This commit is contained in:
		
							parent
							
								
									08e648a3bc
								
							
						
					
					
						commit
						1dde02b170
					
				| @ -13,6 +13,9 @@ | ||||
|         <widgets-online-indicator :value="!!userOnline" /> | ||||
|         <h1 class="text-xl pl-2">{{ username }}</h1> | ||||
|       </div> | ||||
|       <div class="cursor-pointer text-gray-400 hover:text-white" @click="copyToClipboard(userToken)"> | ||||
|         <p class="py-2 text-xs"><strong class="text-white">API Token: </strong><br /><span class="text-white">{{ userToken }}</span><span class="material-icons pl-2 text-base">content_copy</span></p> | ||||
|       </div> | ||||
|       <div v-if="showExperimentalFeatures" class="w-full h-px bg-white bg-opacity-10 my-2" /> | ||||
|       <div v-if="showExperimentalFeatures" class="py-2"> | ||||
|         <h1 class="text-lg mb-2 text-white text-opacity-90 px-2 sm:px-0">Listening Stats <span class="pl-2 text-xs text-error">(experimental)</span></h1> | ||||
| @ -87,6 +90,9 @@ export default { | ||||
|     } | ||||
|   }, | ||||
|   computed: { | ||||
|     userToken() { | ||||
|       return this.user.token | ||||
|     }, | ||||
|     coverAspectRatio() { | ||||
|       return this.$store.getters['getServerSetting']('coverAspectRatio') | ||||
|     }, | ||||
| @ -127,6 +133,9 @@ export default { | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     copyToClipboard(str) { | ||||
|       this.$copyToClipboard(str, this) | ||||
|     }, | ||||
|     async init() { | ||||
|       this.listeningSessions = await this.$axios.$get(`/api/users/${this.user.id}/listening-sessions`).catch((err) => { | ||||
|         console.error('Failed to load listening sesions', err) | ||||
|  | ||||
| @ -125,6 +125,23 @@ Vue.prototype.$sanitizeFilename = (input, replacement = '') => { | ||||
|   return sanitized | ||||
| } | ||||
| 
 | ||||
| Vue.prototype.$copyToClipboard = (str, ctx) => { | ||||
|   return new Promise((resolve) => { | ||||
|     if (!navigator.clipboard) { | ||||
|       console.warn('Clipboard not supported') | ||||
|       return resolve(false) | ||||
|     } | ||||
|     navigator.clipboard.writeText(str).then(() => { | ||||
|       console.log('Clipboard copy success', str) | ||||
|       ctx.$toast.success('Copied to clipboard') | ||||
|       resolve(true) | ||||
|     }, (err) => { | ||||
|       console.error('Clipboard copy failed', str, err) | ||||
|       resolve(false) | ||||
|     }) | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function xmlToJson(xml) { | ||||
|   const json = {}; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user