kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			
						commit
						4530e4f428
					
				
							
								
								
									
										13
									
								
								CHANGELOG
								
								
								
								
							
							
						
						
									
										13
									
								
								CHANGELOG
								
								
								
								
							|  | @ -3,6 +3,19 @@ Changelog | |||
| 
 | ||||
| .. towncrier | ||||
| 
 | ||||
| 0.5.4 (2018-02-28) | ||||
| ------------------ | ||||
| 
 | ||||
| Features: | ||||
| 
 | ||||
| - Now stop running radio when clearing queue (#98) | ||||
| 
 | ||||
| Bugfixes: | ||||
| 
 | ||||
| - Fixed queue skipping tracks (#91) | ||||
| - Now loop properly on queue when we only have one track (#95) | ||||
| 
 | ||||
| 
 | ||||
| 0.5.3 (2018-02-27) | ||||
| ------------------ | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,3 +1,3 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| __version__ = '0.5.3' | ||||
| __version__ = '0.5.4' | ||||
| __version_info__ = tuple([int(num) if num.isdigit() else num for num in __version__.replace('-', '.', 1).split('.')]) | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ | |||
|     <source | ||||
|       @error="sourceErrored" | ||||
|       v-for="src in srcs" | ||||
|       src="src.url" | ||||
|       :src="src.url" | ||||
|       :type="src.type"> | ||||
|   </audio> | ||||
| </template> | ||||
|  | @ -19,7 +19,7 @@ | |||
| import {mapState} from 'vuex' | ||||
| import url from '@/utils/url' | ||||
| import formats from '@/audio/formats' | ||||
| 
 | ||||
| import _ from 'lodash' | ||||
| // import logger from '@/logging' | ||||
| 
 | ||||
| export default { | ||||
|  | @ -98,13 +98,14 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|     updateProgress: function () { | ||||
|     updateProgress: _.throttle(function () { | ||||
|       if (this.$refs.audio) { | ||||
|         this.$store.dispatch('player/updateProgress', this.$refs.audio.currentTime) | ||||
|       } | ||||
|     }, | ||||
|     }, 250), | ||||
|     ended: function () { | ||||
|       if (this.looping === 1) { | ||||
|       let onlyTrack = this.$store.state.queue.tracks.length === 1 | ||||
|       if (this.looping === 1 || (onlyTrack && this.looping === 2)) { | ||||
|         this.setCurrentTime(0) | ||||
|         this.$refs.audio.play() | ||||
|       } else { | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| <template> | ||||
|   <div> | ||||
|     <div v-if="batch" class="ui two buttons"> | ||||
|     <div v-if="batch" class="ui container"> | ||||
|       <file-upload-widget | ||||
|         class="ui icon button" | ||||
|         :class="['ui', 'icon', 'left', 'floated', 'button']" | ||||
|         :post-action="uploadUrl" | ||||
|         :multiple="true" | ||||
|         :size="1024 * 1024 * 30" | ||||
|  | @ -19,16 +19,18 @@ | |||
|         <i class="upload icon"></i> | ||||
|         Select files to upload... | ||||
|     </file-upload-widget> | ||||
|       <button class="ui icon teal button" v-if="!$refs.upload || !$refs.upload.active" @click.prevent="$refs.upload.active = true"> | ||||
|       <button | ||||
|         :class="['ui', 'right', 'floated', 'icon', {disabled: files.length === 0}, 'button']" | ||||
|         v-if="!$refs.upload || !$refs.upload.active" @click.prevent="$refs.upload.active = true"> | ||||
|         <i class="play icon" aria-hidden="true"></i> | ||||
|         Start Upload | ||||
|       </button> | ||||
|       <button type="button" class="ui icon yellow button" v-else @click.prevent="$refs.upload.active = false"> | ||||
|       <button type="button" class="ui right floated icon yellow button" v-else @click.prevent="$refs.upload.active = false"> | ||||
|         <i class="pause icon" aria-hidden="true"></i> | ||||
|         Stop Upload | ||||
|       </button> | ||||
|     </div> | ||||
|     <div class="ui hidden divider"></div> | ||||
|     <div class="ui hidden clearing divider"></div> | ||||
|     <p v-if="batch"> | ||||
|       Once all your files are uploaded, simply head over  <router-link :to="{name: 'library.import.batches.detail', params: {id: batch.id }}">import detail page</router-link> to check the import status. | ||||
|     </p> | ||||
|  |  | |||
|  | @ -23,6 +23,18 @@ | |||
|           </div> | ||||
|         </a> | ||||
|       </div> | ||||
|       <div class="ui hidden divider"></div> | ||||
|       <div class="ui centered buttons"> | ||||
|         <button @click="currentStep -= 1" :disabled="currentStep === 0" class="ui icon button"><i class="left arrow icon"></i> Previous step</button> | ||||
|         <button @click="currentStep += 1" v-if="currentStep < 2" class="ui icon button">Next step <i class="right arrow icon"></i></button> | ||||
|         <button | ||||
|           @click="$refs.import.launchImport()" | ||||
|           v-if="currentStep === 2" | ||||
|           :class="['ui', 'positive', 'icon', {'loading': isImporting}, 'button']" | ||||
|           :disabled="isImporting || importData.count === 0" | ||||
|           >Import {{ importData.count }} tracks <i class="check icon"></i></button> | ||||
|       </div> | ||||
|       <div class="ui hidden divider"></div> | ||||
|       <div class="ui attached segment"> | ||||
|         <template v-if="currentStep === 0"> | ||||
|           <p>First, choose where you want to import the music from :</p> | ||||
|  | @ -101,17 +113,6 @@ | |||
|             @import-state-changed="updateImportState" | ||||
|             ></component> | ||||
|         </div> | ||||
|         <div class="ui hidden divider"></div> | ||||
|         <div class="ui buttons"> | ||||
|           <button @click="currentStep -= 1" :disabled="currentStep === 0" class="ui icon button"><i class="left arrow icon"></i> Previous step</button> | ||||
|           <button @click="currentStep += 1" v-if="currentStep < 2" class="ui icon button">Next step <i class="right arrow icon"></i></button> | ||||
|           <button | ||||
|             @click="$refs.import.launchImport()" | ||||
|             v-if="currentStep === 2" | ||||
|             :class="['ui', 'positive', 'icon', {'loading': isImporting}, 'button']" | ||||
|             :disabled="isImporting || importData.count === 0" | ||||
|             >Import {{ importData.count }} tracks <i class="check icon"></i></button> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="ui vertical stripe segment" v-if="currentRequest"> | ||||
|  |  | |||
|  | @ -100,8 +100,10 @@ export default Vue.extend({ | |||
|       warnings: [ | ||||
|         'live', | ||||
|         'full', | ||||
|         'cover' | ||||
|         'cover', | ||||
|         'mix' | ||||
|       ], | ||||
|       customQuery: '', | ||||
|       time | ||||
|     } | ||||
|   }, | ||||
|  | @ -114,7 +116,7 @@ export default Vue.extend({ | |||
|     $('.ui.checkbox').checkbox() | ||||
|   }, | ||||
|   methods: { | ||||
|     search () { | ||||
|     search: function () { | ||||
|       let self = this | ||||
|       this.isLoading = true | ||||
|       let url = 'providers/' + this.currentBackendId + '/search/' | ||||
|  | @ -144,17 +146,25 @@ export default Vue.extend({ | |||
|         source: this.importedUrl | ||||
|       } | ||||
|     }, | ||||
|     query () { | ||||
|       let queryMapping = [ | ||||
|         ['artist', this.releaseMetadata['artist-credit'][0]['artist']['name']], | ||||
|         ['album', this.releaseMetadata['title']], | ||||
|         ['title', this.metadata['recording']['title']] | ||||
|       ] | ||||
|       let query = this.customQueryTemplate | ||||
|       queryMapping.forEach(e => { | ||||
|         query = query.split('$' + e[0]).join(e[1]) | ||||
|       }) | ||||
|       return query | ||||
|     query: { | ||||
|       get: function () { | ||||
|         if (this.customQuery.length > 0) { | ||||
|           return this.customQuery | ||||
|         } | ||||
|         let queryMapping = [ | ||||
|           ['artist', this.releaseMetadata['artist-credit'][0]['artist']['name']], | ||||
|           ['album', this.releaseMetadata['title']], | ||||
|           ['title', this.metadata['recording']['title']] | ||||
|         ] | ||||
|         let query = this.customQueryTemplate | ||||
|         queryMapping.forEach(e => { | ||||
|           query = query.split('$' + e[0]).join(e[1]) | ||||
|         }) | ||||
|         return query | ||||
|       }, | ||||
|       set: function (newValue) { | ||||
|         this.customQuery = newValue | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   watch: { | ||||
|  |  | |||
|  | @ -95,7 +95,6 @@ export default { | |||
|         dispatch('radios/populateQueue', null, {root: true}) | ||||
|       } | ||||
|       dispatch('queue/next', null, {root: true}) | ||||
|       dispatch('queue/next', null, {root: true}) | ||||
|     }, | ||||
|     trackErrored ({commit, dispatch, state}) { | ||||
|       commit('errored', true) | ||||
|  |  | |||
|  | @ -133,8 +133,8 @@ export default { | |||
|       } | ||||
|     }, | ||||
|     clean ({dispatch, commit}) { | ||||
|       dispatch('radios/stop', null, {root: true}) | ||||
|       dispatch('player/stop', null, {root: true}) | ||||
|       // radios.stop()
 | ||||
|       commit('tracks', []) | ||||
|       dispatch('currentIndex', -1) | ||||
|       // so we replay automatically on next track append
 | ||||
|  |  | |||
|  | @ -308,6 +308,7 @@ describe('store/queue', () => { | |||
|           { type: 'ended', payload: true } | ||||
|         ], | ||||
|         expectedActions: [ | ||||
|           { type: 'radios/stop', payload: null, options: {root: true} }, | ||||
|           { type: 'player/stop', payload: null, options: {root: true} }, | ||||
|           { type: 'currentIndex', payload: -1 } | ||||
|         ] | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Eliot Berriot
						Eliot Berriot