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

32 lines
705 B
JavaScript
Raw Normal View History

2016-06-25 10:15:57 +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
* @param {?Function} cb
*/
fetch(song, cb = null) {
// Check if the song's info has been retrieved before.
if (song.infoRetrieved) {
cb && cb();
2016-06-05 11:29:49 +00:00
2016-06-25 16:05:24 +00:00
return;
}
2016-06-05 11:29:49 +00:00
2016-06-25 16:05:24 +00:00
http.get(`${song.id}/info`, response => {
const data = response.data;
2016-06-05 11:29:49 +00:00
2016-06-25 16:05:24 +00:00
song.lyrics = data.lyrics;
2016-06-05 11:29:49 +00:00
2016-06-25 16:05:24 +00:00
data.artist_info && artistInfo.merge(song.artist, data.artist_info);
data.album_info && albumInfo.merge(song.album, data.album_info);
2016-06-05 11:29:49 +00:00
2016-06-25 16:05:24 +00:00
song.infoRetrieved = true;
2016-06-05 11:29:49 +00:00
2016-06-25 16:05:24 +00:00
cb && cb();
});
},
2016-06-05 11:29:49 +00:00
};