Merge branch 'release/0.5.4'
This commit is contained in:
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 }
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue