Files
Iris/src/js/views/library/LibraryBrowse.js

150 lines
3.8 KiB
JavaScript
Raw Normal View History

2017-07-07 09:59:16 +12:00
import React, { PropTypes } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { Route, Switch } from 'react-router-dom';
import Link from '../../components/Link';
2017-07-07 09:59:16 +12:00
import Header from '../../components/Header';
import List from '../../components/List';
import TrackList from '../../components/TrackList';
import GridItem from '../../components/GridItem';
import DropdownField from '../../components/Fields/DropdownField';
import Icon from '../../components/Icon';
import URILink from '../../components/URILink';
import ErrorBoundary from '../../components/ErrorBoundary';
2017-07-07 09:59:16 +12:00
import * as helpers from '../../helpers';
import * as uiActions from '../../services/ui/actions';
import * as mopidyActions from '../../services/mopidy/actions';
2017-07-07 09:59:16 +12:00
class LibraryBrowse extends React.Component{
2017-10-10 13:05:28 +13:00
constructor(props){
2017-07-07 09:59:16 +12:00
super(props);
}
componentDidMount(){
2019-01-17 15:54:04 +13:00
this.loadDirectory();
this.props.uiActions.setWindowTitle("Browse");
2017-07-07 09:59:16 +12:00
}
2017-10-10 13:05:28 +13:00
componentWillReceiveProps(nextProps){
2017-07-07 09:59:16 +12:00
// mopidy goes online
2017-10-10 13:05:28 +13:00
if (!this.props.mopidy_connected && nextProps.mopidy_connected){
this.loadDirectory(nextProps);
2017-07-07 09:59:16 +12:00
}
}
2017-10-10 13:05:28 +13:00
loadDirectory(props = this.props){
2017-07-07 09:59:16 +12:00
if (props.mopidy_connected){
2019-01-17 15:54:04 +13:00
this.props.mopidyActions.getDirectory(null);
2017-07-07 09:59:16 +12:00
}
}
render(){
var grid_items = []
if (this.props.directory){
for (var subdirectory of this.props.directory.subdirectories){
switch (subdirectory.name){
case 'Dirble':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-dirble.jpg']
break
case 'Files':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-folders.jpg']
break
case 'Local media':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-folders.jpg']
break
case 'Spotify':
case 'Spotify Browse':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-spotify.jpg']
break
2017-07-07 09:59:16 +12:00
case 'Spotify Tunigo':
case 'Tunigo':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-tunigo.jpg']
break
2017-07-07 08:19:47 +12:00
case 'TuneIn':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-tunein.jpg']
break
2017-07-07 09:59:16 +12:00
case 'SoundCloud':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-soundcloud.jpg']
break
case 'iTunes Store: Podcasts':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-itunes.jpg']
break
case 'Soma FM':
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-somafm.jpg']
break
default:
2019-01-17 22:13:18 +13:00
subdirectory.icons = ['/assets/backgrounds/browse-default.jpg']
2017-07-07 09:59:16 +12:00
}
grid_items.push({
name: subdirectory.name,
link: '/library/browse/'+encodeURIComponent(subdirectory.uri),
icons: helpers.formatImages(subdirectory.icons)
})
2017-07-07 09:59:16 +12:00
}
}
2017-07-07 09:59:16 +12:00
return (
<div className="view library-local-view">
<Header>
2018-05-15 21:30:57 +12:00
<Icon name="folder" type="material" />
Browse
</Header>
<section className="content-wrapper">
2019-01-17 22:13:18 +13:00
<div className="grid grid--tiles">
<ErrorBoundary>
{
grid_items.map(
(item, index) => {
return (
<GridItem
item={item}
key={index}
2019-01-17 15:54:04 +13:00
link={item.link}
type="browse"
/>
)
}
)
}
</ErrorBoundary>
</div>
</section>
</div>
);
}
2017-07-07 09:59:16 +12:00
}
const mapStateToProps = (state, ownProps) => {
return {
load_queue: state.ui.load_queue,
mopidy_connected: state.mopidy.connected,
directory: state.mopidy.directory,
view: state.ui.library_directory_view
2017-07-07 09:59:16 +12:00
}
}
const mapDispatchToProps = (dispatch) => {
return {
2017-10-30 11:53:04 +13:00
uiActions: bindActionCreators(uiActions, dispatch),
mopidyActions: bindActionCreators(mopidyActions, dispatch)
2017-07-07 09:59:16 +12:00
}
}
export default connect(mapStateToProps, mapDispatchToProps)(LibraryBrowse)