feat: initial integration of react-jinke-music-player

This commit is contained in:
Deluan
2020-02-04 09:26:54 -05:00
parent 220ffd5324
commit 4a82a6cb02
13 changed files with 417 additions and 44 deletions
+50
View File
@@ -0,0 +1,50 @@
import 'react-jinke-music-player/assets/index.css'
const PLAYER_ADD_TRACK = 'PLAYER_ADD_TRACK'
const PLAYER_SET_TRACK = 'PLAYER_SET_TRACK'
const PLAYER_SYNC_QUEUE = 'PLAYER_SYNC_QUEUE'
const mapToAudioLists = (item) => ({
id: item.id,
name: item.title,
singer: item.artist,
cover: `/rest/getCoverArt.view?u=admin&p=enc:73756e6461&f=json&v=1.8.0&c=Jamstash&size=300&id=${item.id}`,
musicSrc: `/rest/stream.view?u=admin&p=enc:73756e6461&f=json&v=1.8.0&c=Jamstash&id=${
item.id
}&ts=${new Date().getTime()}`
})
const addTrack = (data) => ({
type: PLAYER_ADD_TRACK,
data
})
const setTrack = (data) => ({
type: PLAYER_SET_TRACK,
data
})
const syncQueue = (data) => ({
type: PLAYER_SYNC_QUEUE,
data
})
const playQueueReducer = (
previousState = { queue: [], clear: true },
{ type, data }
) => {
switch (type) {
case PLAYER_ADD_TRACK:
const queue = previousState.queue
queue.push(mapToAudioLists(data))
return { queue, clear: false }
case PLAYER_SET_TRACK:
return { queue: [mapToAudioLists(data)], clear: true }
case PLAYER_SYNC_QUEUE:
return { queue: data, clear: false }
default:
return previousState
}
}
export { addTrack, setTrack, syncQueue, playQueueReducer }