feat: persist the queue in the localStorage
This commit is contained in:
@@ -1,14 +1,10 @@
|
||||
import React from 'react'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
import {
|
||||
fetchUtils,
|
||||
useAuthState,
|
||||
useDataProvider,
|
||||
useTranslate
|
||||
} from 'react-admin'
|
||||
import { useAuthState, useDataProvider, useTranslate } from 'react-admin'
|
||||
import ReactJkMusicPlayer from 'react-jinke-music-player'
|
||||
import 'react-jinke-music-player/assets/index.css'
|
||||
import { scrobble, syncQueue } from './queue'
|
||||
import subsonic from '../subsonic'
|
||||
import { scrobbled, syncQueue } from './queue'
|
||||
|
||||
const Player = () => {
|
||||
const translate = useTranslate()
|
||||
@@ -64,14 +60,14 @@ const Player = () => {
|
||||
}
|
||||
const item = queue.queue.find((item) => item.id === info.id)
|
||||
if (item && !item.scrobbled) {
|
||||
dispatch(scrobble(info.id))
|
||||
fetchUtils.fetchJson(info.scrobble(true))
|
||||
dispatch(scrobbled(info.id))
|
||||
subsonic.scrobble(info.id, true)
|
||||
}
|
||||
}
|
||||
|
||||
const OnAudioPlay = (info) => {
|
||||
if (info.duration) {
|
||||
fetchUtils.fetchJson(info.scrobble(false))
|
||||
subsonic.scrobble(info.id, false)
|
||||
dataProvider.getOne('keepalive', { id: info.id })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import 'react-jinke-music-player/assets/index.css'
|
||||
import { subsonicUrl } from '../subsonic'
|
||||
import subsonic from '../subsonic'
|
||||
|
||||
const PLAYER_ADD_TRACK = 'PLAYER_ADD_TRACK'
|
||||
const PLAYER_SET_TRACK = 'PLAYER_SET_TRACK'
|
||||
@@ -11,9 +11,8 @@ const mapToAudioLists = (item) => ({
|
||||
id: item.id,
|
||||
name: item.title,
|
||||
singer: item.artist,
|
||||
cover: subsonicUrl('getCoverArt', item.id, { size: 300 }),
|
||||
musicSrc: subsonicUrl('stream', item.id, { ts: true }),
|
||||
scrobble: (submit) => subsonicUrl('scrobble', item.id, { submission: submit })
|
||||
cover: subsonic.url('getCoverArt', item.id, { size: 300 }),
|
||||
musicSrc: subsonic.url('stream', item.id, { ts: true })
|
||||
})
|
||||
|
||||
const addTrack = (data) => ({
|
||||
@@ -37,7 +36,7 @@ const syncQueue = (data) => ({
|
||||
data
|
||||
})
|
||||
|
||||
const scrobble = (id) => ({
|
||||
const scrobbled = (id) => ({
|
||||
type: PLAYER_SCROBBLE,
|
||||
data: id
|
||||
})
|
||||
@@ -82,4 +81,4 @@ const playQueueReducer = (
|
||||
}
|
||||
}
|
||||
|
||||
export { addTrack, setTrack, playAlbum, syncQueue, scrobble, playQueueReducer }
|
||||
export { addTrack, setTrack, playAlbum, syncQueue, scrobbled, playQueueReducer }
|
||||
|
||||
Reference in New Issue
Block a user