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

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
}