import React, { Component, PropTypes } from "react"; import CSSModules from "react-css-modules"; import { defineMessages, FormattedMessage } from "react-intl"; import FontAwesome from "react-fontawesome"; import Immutable from "immutable"; import { messagesMap } from "../utils/"; import { AlbumRow } from "./Album"; import DismissibleAlert from "./elements/DismissibleAlert"; import commonMessages from "../locales/messagesDescriptors/common"; import css from "../styles/Artist.scss"; const artistMessages = defineMessages(messagesMap(Array.concat([], commonMessages))); class ArtistCSS extends Component { render () { const loading = (

); if (this.props.isFetching && !this.props.artist.size > 0) { // Loading return loading; } let error = null; if (this.props.error) { error = (); } let albumsRows = []; const { albums, songs, playAction } = this.props; const artistAlbums = this.props.artist.get("albums"); if (albums && songs && artistAlbums && artistAlbums.size > 0) { this.props.artist.get("albums").forEach(function (album) { album = albums.get(album); const albumSongs = album.get("tracks").map( id => songs.get(id) ); albumsRows.push(); }); } else { // Loading albumsRows = loading; } return (
{ error }

{this.props.artist.get("name")}


{this.props.artist.get("summary")}

{this.props.artist.get("name")}/

{ albumsRows }
); } } ArtistCSS.propTypes = { playAction: PropTypes.func.isRequired, isFetching: PropTypes.bool.isRequired, error: PropTypes.string, artist: PropTypes.instanceOf(Immutable.Map), albums: PropTypes.instanceOf(Immutable.Map), songs: PropTypes.instanceOf(Immutable.Map) }; export default CSSModules(ArtistCSS, css);