Unify data into one action/middleware/reducer flow

This commit is contained in:
James Barnsley
2016-11-08 20:51:59 +13:00
parent 04e8c7cdf5
commit c87a7fbd17
6 changed files with 5226 additions and 5209 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -49,6 +49,30 @@ class FullPlayer extends React.Component{
return button;
}
renderArtwork(){
if( this.props.spotify.track ){
return (
<Link className="artwork" to={'/album/'+this.props.spotify.track.album.uri}>
<Thumbnail size="huge" images={this.props.spotify.track.album.images} />
</Link>
)
}else if(
this.props.mopidy.current_tltrack &&
this.props.mopidy.current_tltrack.track &&
this.props.mopidy.current_tltrack.track.album &&
this.props.mopidy.current_tltrack.track.album.images ){
return (
<span className="artwork">
<Thumbnail size="huge" images={mopidy_track.track.album.images} />
</span>
)
}
// TODO: get artwork from lastFM
return <span className="artwork"><Thumbnail size="huge" images={[]} /></span>
}
render(){
var mopidy_track = false;
var images = [];
@ -56,29 +80,11 @@ class FullPlayer extends React.Component{
mopidy_track = this.props.mopidy.current_tltrack;
}
var artwork = <span className="artwork"><Thumbnail size="huge" images={[]} /></span>
if( this.props.spotify.track ){
artwork = (
<Link className="artwork" to={'/album/'+this.props.spotify.track.album.uri}>
<Thumbnail size="huge" images={this.props.spotify.track.album.images} />
</Link>
)
}else if( mopidy_track.track && mopidy_track.track.album && mopidy_track.track.album.images ){
artwork = (
<span className="artwork">
<Thumbnail size="huge" images={mopidy_track.track.album.images} />
</span>
)
}else{
// TODO: get artwork from lastFM
}
return (
<div className="player">
{ artwork }
{ this.renderArtwork() }
<div className="current-track">
<div className="title">{ mopidy_track ? mopidy_track.track.name : null }</div>

View File

@ -28,7 +28,8 @@ class ProgressSlider extends React.Component{
var time_position = this.props.mopidy.time_position
// only add 600ms every 1000ms as Mopidy's time tracker is a bit shit
this.props.mopidyActions.setTimePosition( time_position + 600 )
// TODO: Why does this kill UI?
//this.props.mopidyActions.setTimePosition( time_position + 600 )
}
interval_counter++

View File

@ -16,6 +16,13 @@ export function hideContextMenu(){
}
}
export function setCurrentTrack( track ){
return {
type: 'UI_CURRENT_TRACK',
track: track
}
}
export function lazyLoading( start ){
return {
type: 'UI_LAZY_LOADING',

View File

@ -19,6 +19,11 @@ export default function reducer(ui = {}, action){
case 'UI_LAZY_LOADING':
return Object.assign({}, ui, { lazy_loading: action.start });
case 'UI_CURRENT_TRACK':
var current_track = ui.current_track;
Object.assign({}, current_track, action.track );
return Object.assign({}, ui, { current_track: current_track });
default:
return ui
}