2016-06-25 10:15:57 +00:00
|
|
|
import { http } from '..';
|
2016-06-05 11:29:49 +00:00
|
|
|
|
2016-06-25 10:15:57 +00:00
|
|
|
export const artistInfo = {
|
2016-06-25 16:05:24 +00:00
|
|
|
/**
|
|
|
|
* Get extra artist info (from Last.fm).
|
|
|
|
*
|
|
|
|
* @param {Object} artist
|
|
|
|
*/
|
2016-06-27 06:11:35 +00:00
|
|
|
fetch(artist) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
if (artist.info) {
|
|
|
|
resolve(artist);
|
|
|
|
return;
|
2016-06-25 16:05:24 +00:00
|
|
|
}
|
2016-06-05 11:29:49 +00:00
|
|
|
|
2016-07-09 04:06:14 +00:00
|
|
|
http.get(`artist/${artist.id}/info`, data => {
|
|
|
|
data && this.merge(artist, data);
|
2016-06-27 06:11:35 +00:00
|
|
|
resolve(artist);
|
|
|
|
}, r => reject(r));
|
2016-06-25 16:05:24 +00:00
|
|
|
});
|
|
|
|
},
|
2016-06-05 11:29:49 +00:00
|
|
|
|
2016-06-25 16:05:24 +00:00
|
|
|
/**
|
|
|
|
* Merge the (fetched) info into an artist.
|
|
|
|
*
|
|
|
|
* @param {Object} artist
|
|
|
|
* @param {Object} info
|
|
|
|
*/
|
|
|
|
merge(artist, info) {
|
|
|
|
// If the artist image is not in a nice form, discard.
|
|
|
|
if (typeof info.image !== 'string') {
|
|
|
|
info.image = null;
|
|
|
|
}
|
2016-06-05 11:29:49 +00:00
|
|
|
|
2016-06-25 16:05:24 +00:00
|
|
|
// Set the artist image on the client side to the retrieved image from server.
|
|
|
|
if (info.image) {
|
|
|
|
artist.image = info.image;
|
|
|
|
}
|
2016-06-05 11:29:49 +00:00
|
|
|
|
2016-06-25 16:05:24 +00:00
|
|
|
artist.info = info;
|
|
|
|
},
|
2016-06-05 11:29:49 +00:00
|
|
|
};
|