fix queue persistence

This commit is contained in:
Thomas Amland 2021-03-14 13:11:52 +01:00
parent 43592bce8a
commit 14bef85046

View File

@ -26,6 +26,11 @@ interface State {
volume: number; // integer between 0 and 1 representing the volume of the player volume: number; // integer between 0 and 1 representing the volume of the player
} }
function persistQueue(state: State) {
localStorage.setItem('queue', JSON.stringify(state.queue))
localStorage.setItem('queueIndex', state.queueIndex.toString())
}
export const playerModule: Module<State, any> = { export const playerModule: Module<State, any> = {
namespaced: true, namespaced: true,
state: { state: {
@ -69,7 +74,7 @@ export const playerModule: Module<State, any> = {
setQueue(state, queue) { setQueue(state, queue) {
state.queue = queue state.queue = queue
state.queueIndex = -1 state.queueIndex = -1
localStorage.setItem('queue', JSON.stringify(queue)) persistQueue(state)
}, },
setQueueIndex(state, index) { setQueueIndex(state, index) {
if (state.queue.length === 0) { if (state.queue.length === 0) {
@ -78,7 +83,7 @@ export const playerModule: Module<State, any> = {
index = Math.max(0, index) index = Math.max(0, index)
index = index < state.queue.length ? index : 0 index = index < state.queue.length ? index : 0
state.queueIndex = index state.queueIndex = index
localStorage.setItem('queueIndex', index) persistQueue(state)
state.scrobbled = false state.scrobbled = false
const track = state.queue[index] const track = state.queue[index]
audio.src = track.url audio.src = track.url
@ -94,23 +99,25 @@ export const playerModule: Module<State, any> = {
}, },
addToQueue(state, tracks) { addToQueue(state, tracks) {
state.queue.push(...tracks) state.queue.push(...tracks)
persistQueue(state)
}, },
removeFromQueue(state, index) { removeFromQueue(state, index) {
state.queue.splice(index, 1) state.queue.splice(index, 1)
if (index < state.queueIndex) { if (index < state.queueIndex) {
state.queueIndex-- state.queueIndex--
} }
persistQueue(state)
}, },
clearQueue(state) { clearQueue(state) {
if (state.queueIndex >= 0) { if (state.queueIndex >= 0) {
state.queue = [state.queue[state.queueIndex]] state.queue = [state.queue[state.queueIndex]]
state.queueIndex = 0 state.queueIndex = 0
localStorage.setItem('queue', JSON.stringify(state.queue)) persistQueue(state)
localStorage.setItem('queueIndex', '0')
} }
}, },
setNextInQueue(state, tracks) { setNextInQueue(state, tracks) {
state.queue.splice(state.queueIndex + 1, 0, ...tracks) state.queue.splice(state.queueIndex + 1, 0, ...tracks)
persistQueue(state)
}, },
setCurrentTime(state, value: any) { setCurrentTime(state, value: any) {
state.currentTime = value state.currentTime = value