// NPM imports 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"; // Local imports import { messagesMap } from "../utils/"; // Other components import { AlbumRow } from "./Album"; import DismissibleAlert from "./elements/DismissibleAlert"; // Translations import commonMessages from "../locales/messagesDescriptors/common"; // Styles import css from "../styles/Artist.scss"; // Define translations const artistMessages = defineMessages(messagesMap(Array.concat([], commonMessages))); /** * Single artist page */ class ArtistCSS extends Component { render() { // Define loading message let loading = null; if (this.props.isFetching) { loading = (

); } // Handle error let error = null; if (this.props.error) { error = (); } // Build album rows let albumsRows = []; const { albums, songs, playAction } = this.props; if (albums && songs) { albums.forEach(function (album) { const albumSongs = album.get("tracks").map( id => songs.get(id) ); albumsRows.push(); }); } return (
{ error }

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


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

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

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