2016-11-26 03:25:35 +00:00
|
|
|
import { http, albumInfo, artistInfo } from '..'
|
2016-06-05 11:29:49 +00:00
|
|
|
|
2016-06-25 10:15:57 +00:00
|
|
|
export const songInfo = {
|
2016-06-25 16:05:24 +00:00
|
|
|
/**
|
|
|
|
* Get extra song information (lyrics, artist info, album info).
|
|
|
|
*
|
|
|
|
* @param {Object} song
|
|
|
|
*/
|
2016-11-26 03:25:35 +00:00
|
|
|
fetch (song) {
|
2016-06-27 06:11:35 +00:00
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
// Check if the song's info has been retrieved before.
|
|
|
|
if (song.infoRetrieved) {
|
2016-11-26 03:25:35 +00:00
|
|
|
resolve(song)
|
|
|
|
return
|
2016-06-27 06:11:35 +00:00
|
|
|
}
|
2016-06-05 11:29:49 +00:00
|
|
|
|
2017-05-05 16:20:51 +00:00
|
|
|
http.get(`${song.id}/info`, ({ data: { artist_info, album_info, youtube, lyrics }}) => {
|
|
|
|
song.lyrics = lyrics
|
|
|
|
artist_info && artistInfo.merge(song.artist, artist_info) // eslint-disable-line camelcase
|
|
|
|
album_info && albumInfo.merge(song.album, album_info) // eslint-disable-line camelcase
|
|
|
|
song.youtube = youtube
|
2016-11-26 03:25:35 +00:00
|
|
|
song.infoRetrieved = true
|
|
|
|
resolve(song)
|
2016-12-20 15:44:47 +00:00
|
|
|
}, error => reject(error))
|
2016-11-26 03:25:35 +00:00
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|