koel/resources/assets/js/services/info/song.js

28 lines
747 B
JavaScript
Raw Normal View History

2016-11-26 10:25:35 +07:00
import { http, albumInfo, artistInfo } from '..'
2016-06-05 19:29:49 +08:00
2016-06-25 18:15:57 +08:00
export const songInfo = {
2016-06-26 00:05:24 +08:00
/**
* Get extra song information (lyrics, artist info, album info).
*
* @param {Object} song
*/
2016-11-26 10:25:35 +07:00
fetch (song) {
2016-06-27 14:11:35 +08:00
return new Promise((resolve, reject) => {
// Check if the song's info has been retrieved before.
if (song.infoRetrieved) {
2016-11-26 10:25:35 +07:00
resolve(song)
return
2016-06-27 14:11:35 +08:00
}
2016-06-05 19:29:49 +08:00
http.get(`${song.id}/info`, data => {
2016-11-26 10:25:35 +07:00
song.lyrics = data.lyrics
data.artist_info && artistInfo.merge(song.artist, data.artist_info)
data.album_info && albumInfo.merge(song.album, data.album_info)
song.youtube = data.youtube
song.infoRetrieved = true
resolve(song)
}, r => reject(r))
})
}
}