Reset player position before playing previous track

This commit is contained in:
Bat 2018-03-31 14:14:58 +01:00
parent 876aee19cf
commit 6b8dc1b53c
4 changed files with 15 additions and 18 deletions

View File

@ -58,9 +58,8 @@
<div class="two wide column controls ui grid">
<div
title="Previous track"
class="two wide column control"
:disabled="!hasPrevious">
<i @click="previous" :class="['ui', {'disabled': !hasPrevious}, 'step', 'backward', 'big', 'icon']" ></i>
class="two wide column control">
<i @click="previous" class="ui step backward big icon"></i>
</div>
<div
v-if="!playing"
@ -205,7 +204,6 @@ export default {
...mapGetters({
currentTrack: 'queue/currentTrack',
hasNext: 'queue/hasNext',
hasPrevious: 'queue/hasPrevious',
durationFormatted: 'player/durationFormatted',
currentTimeFormatted: 'player/currentTimeFormatted',
progress: 'player/progress'

View File

@ -31,7 +31,8 @@ export default {
},
data () {
return {
sourceErrors: 0
sourceErrors: 0,
isUpdatingTime: false
}
},
computed: {
@ -99,6 +100,7 @@ export default {
}
},
updateProgress: _.throttle(function () {
this.isUpdatingTime = true
if (this.$refs.audio) {
this.$store.dispatch('player/updateProgress', this.$refs.audio.currentTime)
}
@ -130,6 +132,12 @@ export default {
},
volume: function (newValue) {
this.$refs.audio.volume = newValue
},
currentTime (newValue) {
if (!this.isUpdatingTime) {
this.setCurrentTime(newValue)
}
this.isUpdatingTime = false
}
}
}

View File

@ -48,9 +48,6 @@ export default {
},
hasNext: state => {
return state.currentIndex < state.tracks.length - 1
},
hasPrevious: state => {
return state.currentIndex > 0
}
},
actions: {
@ -103,9 +100,11 @@ export default {
dispatch('next')
}
},
previous ({state, dispatch}) {
if (state.currentIndex > 0) {
previous ({state, dispatch, rootState}) {
if (state.currentIndex > 0 && rootState.player.currentTime < 3) {
dispatch('currentIndex', state.currentIndex - 1)
} else {
dispatch('currentIndex', state.currentIndex)
}
},
next ({state, dispatch, commit, rootState}) {

View File

@ -81,14 +81,6 @@ describe('store/queue', () => {
const state = { tracks: [1, 2, 3], currentIndex: 2 }
expect(store.getters['hasNext'](state)).to.equal(false)
})
it('hasPrevious true', () => {
const state = { currentIndex: 1 }
expect(store.getters['hasPrevious'](state)).to.equal(true)
})
it('hasPrevious false', () => {
const state = { currentIndex: 0 }
expect(store.getters['hasPrevious'](state)).to.equal(false)
})
})
describe('actions', () => {
it('append at end', (done) => {