import React, { PropTypes } from 'react' import { connect } from 'react-redux' import { bindActionCreators } from 'redux' import { Link, hashHistory } from 'react-router' import FontAwesome from 'react-fontawesome' import Header from '../../components/Header' import List from '../../components/List' import TrackList from '../../components/TrackList' import GridItem from '../../components/GridItem' import Icon from '../../components/Icon' import * as helpers from '../../helpers' import * as uiActions from '../../services/ui/actions' import * as mopidyActions from '../../services/mopidy/actions' import * as spotifyActions from '../../services/spotify/actions' class LibraryBrowse extends React.Component{ constructor(props){ super(props); } componentDidMount(){ this.loadDirectory() } componentWillReceiveProps(nextProps){ // mopidy goes online if (!this.props.mopidy_connected && nextProps.mopidy_connected){ this.loadDirectory(nextProps ); } // our uri changes if (nextProps.params.uri != this.props.params.uri){ this.loadDirectory(nextProps ); } } loadDirectory(props = this.props){ if (props.mopidy_connected){ var uri = null if (props.params.uri !== undefined){ uri = props.params.uri; } this.props.mopidyActions.getDirectory(uri); } } playAll(e){ var tracks = this.arrangeDirectory().tracks; var tracks_uris = helpers.arrayOf('uri',tracks); this.props.mopidyActions.playURIs(tracks_uris, "iris:browse:"+this.props.params.uri); this.props.uiActions.hideContextMenu(); } goBack(e){ window.history.back(); this.props.uiActions.hideContextMenu(); } arrangeDirectory(directory = this.props.directory){ var folders = [] var tracks = [] for (var i = 0; i < directory.length; i++){ if (directory[i].type && directory[i].type == 'track'){ tracks.push(directory[i] ) } else { folders.push(Object.assign( {}, directory[i], { uri: directory[i].uri } )) } } return { folders: folders, tracks: tracks } } renderDirectory(){ var title = 'Browse'; var uri_exploded = this.props.params.uri.split(':'); if (uri_exploded.length > 0){ title = uri_exploded[0]; title = title.charAt(0).toUpperCase() + title.slice(1); } if (!this.props.directory || helpers.isLoading(this.props.load_queue,['mopidy_browse'])){ return (