Current track now using full track index
This commit is contained in:
@ -146,7 +146,7 @@ const mapStateToProps = (state, ownProps) => {
|
||||
return {
|
||||
radio_enabled: (state.ui.radio && state.ui.radio.enabled ? true : false),
|
||||
tracks: state.ui.tracks,
|
||||
current_track: (typeof(state.ui.current_track) !== 'undefined' && typeof(state.ui.tracks) !== 'undefined' && typeof(state.ui.tracks[state.ui.current_track]) !== 'undefined' ? state.ui.tracks[state.ui.current_track] : null),
|
||||
current_track: (typeof(state.ui.current_track) !== 'undefined' && typeof(state.ui.tracks) !== 'undefined' && typeof(state.ui.tracks[state.ui.current_track.uri]) !== 'undefined' ? state.ui.tracks[state.ui.current_track.uri] : null),
|
||||
play_state: state.mopidy.play_state,
|
||||
time_position: state.mopidy.time_position,
|
||||
consume: state.mopidy.consume,
|
||||
|
||||
@ -59,7 +59,7 @@ class MiniPlayer extends React.Component{
|
||||
|
||||
const mapStateToProps = (state, ownProps) => {
|
||||
return {
|
||||
current_track: (typeof(state.ui.current_track) !== 'undefined' && typeof(state.ui.tracks) !== 'undefined' && typeof(state.ui.tracks[state.ui.current_track]) !== 'undefined' ? state.ui.tracks[state.ui.current_track] : null),
|
||||
current_track: (typeof(state.ui.current_track) !== 'undefined' && typeof(state.ui.tracks) !== 'undefined' && typeof(state.ui.tracks[state.ui.current_track.uri]) !== 'undefined' ? state.ui.tracks[state.ui.current_track.uri] : null),
|
||||
play_state: state.mopidy.play_state
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ class ProgressSlider extends React.Component{
|
||||
|
||||
const mapStateToProps = (state, ownProps) => {
|
||||
return {
|
||||
current_track: state.ui.current_track,
|
||||
current_track: (typeof(state.ui.current_track) !== 'undefined' && typeof(state.ui.tracks) !== 'undefined' && typeof(state.ui.tracks[state.ui.current_track.uri]) !== 'undefined' ? state.ui.tracks[state.ui.current_track.uri] : null),
|
||||
connected: state.mopidy.connected,
|
||||
time_position: state.mopidy.time_position,
|
||||
play_state: state.mopidy.play_state
|
||||
|
||||
@ -112,8 +112,8 @@ const mapStateToProps = (state, ownProps) => {
|
||||
mopidy_connected: state.mopidy.connected,
|
||||
pusher_connected: state.pusher.connected,
|
||||
spotify_connected: state.spotify.connected,
|
||||
spotify_authorized: state.spotify.authorized,
|
||||
current_track: (typeof(state.ui.current_track) !== 'undefined' && typeof(state.ui.tracks) !== 'undefined' && typeof(state.ui.tracks[state.ui.current_track]) !== 'undefined' ? state.ui.tracks[state.ui.current_track] : null),
|
||||
spotify_authorized: state.spotify.authorized,
|
||||
current_track: (typeof(state.ui.current_track) !== 'undefined' && typeof(state.ui.tracks) !== 'undefined' && typeof(state.ui.tracks[state.ui.current_track.uri]) !== 'undefined' ? state.ui.tracks[state.ui.current_track.uri] : null),
|
||||
dragger: state.ui.dragger
|
||||
}
|
||||
}
|
||||
|
||||
@ -995,6 +995,29 @@ const MopidyMiddleware = (function(){
|
||||
break;
|
||||
|
||||
|
||||
/**
|
||||
* =============================================================== TRACKS ================
|
||||
* ======================================================================================
|
||||
**/
|
||||
|
||||
case 'MOPIDY_CURRENTTLTRACK':
|
||||
if (!action.data || !action.data.track){
|
||||
return mopidy
|
||||
}
|
||||
|
||||
// Fire off our universal track index loader
|
||||
store.dispatch({ type: 'TRACK_LOADED', key: action.data.track.uri, track: action.data.track })
|
||||
|
||||
// When current track is Spotify track, go get the full object
|
||||
// This is because Mopidy doesn't give us full artist/album objects, without artwork
|
||||
if (action.data.track.uri.substring(0,14) == 'spotify:track:'){
|
||||
store.dispatch( spotifyActions.getTrack( action.data.track.uri ) )
|
||||
}
|
||||
|
||||
next(action)
|
||||
break
|
||||
|
||||
|
||||
/**
|
||||
* =============================================================== LOCAL ================
|
||||
* ======================================================================================
|
||||
|
||||
@ -74,18 +74,6 @@ const SpotifyMiddleware = (function(){
|
||||
store.dispatch( spotifyActions.savePlaylist( action.key, action.name, action.is_public ))
|
||||
break
|
||||
|
||||
// when our mopidy server current track changes
|
||||
case 'MOPIDY_CURRENTTLTRACK':
|
||||
|
||||
// proceed as usual so we don't inhibit default functionality
|
||||
next(action)
|
||||
|
||||
// if the current track is a spotify track
|
||||
if( action.data && action.data.track.uri.substring(0,14) == 'spotify:track:' ){
|
||||
store.dispatch( spotifyActions.getTrack( action.data.track.uri ) )
|
||||
}
|
||||
break
|
||||
|
||||
// when radio returns
|
||||
case 'PUSHER_RADIO_STARTED':
|
||||
case 'PUSHER_RADIO_CHANGED':
|
||||
|
||||
@ -106,24 +106,57 @@ export default function reducer(ui = {}, action){
|
||||
return Object.assign({}, ui, { current_tracklist: tracklist });
|
||||
|
||||
case 'MOPIDY_CURRENTTLTRACK':
|
||||
if( !action.data ) return ui
|
||||
if (!action.data) return ui
|
||||
|
||||
var current_tracklist = []
|
||||
Object.assign(current_tracklist, ui.current_tracklist)
|
||||
|
||||
for( var i = 0; i < current_tracklist.length; i++ ){
|
||||
for (var i = 0; i < current_tracklist.length; i++){
|
||||
Object.assign(
|
||||
current_tracklist[i],
|
||||
{ playing: ( current_tracklist[i].tlid == action.data.tlid ) }
|
||||
)
|
||||
}
|
||||
|
||||
var current_track = action.data.track.uri
|
||||
var current_track = Object.assign(
|
||||
{},
|
||||
action.data.track,
|
||||
{
|
||||
tlid: action.data.tlid
|
||||
}
|
||||
)
|
||||
|
||||
return Object.assign({}, ui, {
|
||||
current_tracklist: current_tracklist,
|
||||
current_track: current_track
|
||||
});
|
||||
|
||||
case 'TRACK_LOADED':
|
||||
if (!action.key || !action.track) return ui
|
||||
|
||||
var tracks = Object.assign({}, ui.tracks)
|
||||
if (tracks[action.key]){
|
||||
var track = Object.assign({}, tracks[action.key], action.track)
|
||||
}else{
|
||||
var track = Object.assign({}, action.track)
|
||||
}
|
||||
|
||||
tracks[action.key] = track
|
||||
return Object.assign({}, ui, { tracks: tracks });
|
||||
|
||||
case 'TRACKS_LOADED':
|
||||
var tracks = Object.assign({}, ui.tracks)
|
||||
|
||||
for (var i = 0; i < action.tracks.length; i++){
|
||||
var track = action.tracks[i]
|
||||
if (typeof(tracks[track.uri]) !== 'undefined'){
|
||||
track = Object.assign({}, tracks[track.uri], track)
|
||||
}
|
||||
tracks[track.uri] = track
|
||||
}
|
||||
|
||||
return Object.assign({}, ui, { tracks: tracks });
|
||||
|
||||
case 'PUSHER_QUEUE_METADATA':
|
||||
case 'PUSHER_QUEUE_METADATA_CHANGED':
|
||||
var tracklist = Object.assign([], ui.current_tracklist)
|
||||
@ -404,40 +437,6 @@ export default function reducer(ui = {}, action){
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Tracks
|
||||
**/
|
||||
|
||||
case 'TRACK_LOADED':
|
||||
if (!action.key || !action.track) return ui
|
||||
|
||||
var tracks = Object.assign({}, ui.tracks)
|
||||
|
||||
if (tracks[action.key]){
|
||||
var track = Object.assign({}, tracks[action.key], action.track)
|
||||
}else{
|
||||
var track = Object.assign({}, action.track)
|
||||
}
|
||||
|
||||
tracks[action.key] = track
|
||||
return Object.assign({}, ui, { tracks: tracks });
|
||||
|
||||
case 'TRACKS_LOADED':
|
||||
var tracks = Object.assign({}, ui.tracks)
|
||||
|
||||
for (var i = 0; i < action.tracks.length; i++){
|
||||
var track = action.tracks[i]
|
||||
if (typeof(tracks[track.uri]) !== 'undefined'){
|
||||
track = Object.assign({}, tracks[track.uri], track)
|
||||
}
|
||||
tracks[track.uri] = track
|
||||
}
|
||||
|
||||
return Object.assign({}, ui, { tracks: tracks });
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Playlists
|
||||
**/
|
||||
|
||||
Reference in New Issue
Block a user