import { each } from 'lodash'; import { secondsToHis } from '../../utils'; import { http } from '..'; export const albumInfo = { /** * Get extra album info (from Last.fm). * * @param {Object} album */ fetch(album) { return new Promise((resolve, reject) => { if (album.info) { resolve(album); return; } http.get(`album/${album.id}/info`, r => { r.data && this.merge(album, r.data); resolve(album); }, r => reject(r)); }); }, /** * Merge the (fetched) info into an album. * * @param {Object} album * @param {Object} info */ merge(album, info) { // Convert the duration into i:s info.tracks && each(info.tracks, track => track.fmtLength = secondsToHis(track.length)); // If the album cover is not in a nice form, discard. if (typeof info.image !== 'string') { info.image = null; } // Set the album cover on the client side to the retrieved image from server. if (info.cover) { album.cover = info.cover; } album.info = info; }, };