Unify data into one action/middleware/reducer flow
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -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>
|
||||
|
||||
@ -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++
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user