diff --git a/src/js/bootstrap.js b/src/js/bootstrap.js index 537b1f98..65d207fb 100755 --- a/src/js/bootstrap.js +++ b/src/js/bootstrap.js @@ -35,6 +35,7 @@ var initialState = { queue: [], queue_metadata: {}, current_track_uri: null, + current_track_tlid: null, albums: {}, artists: {}, playlists: {}, diff --git a/src/js/services/core/reducer.js b/src/js/services/core/reducer.js index 4ce0b4a6..be22665f 100755 --- a/src/js/services/core/reducer.js +++ b/src/js/services/core/reducer.js @@ -13,6 +13,7 @@ export default function reducer(core = {}, action){ case 'CURRENT_TRACK_LOADED': return Object.assign({}, core, { + current_track_tlid: action.current_track_tlid, current_track_uri: action.current_track_uri }); diff --git a/src/js/services/mopidy/middleware.js b/src/js/services/mopidy/middleware.js index 3956b381..59666246 100755 --- a/src/js/services/mopidy/middleware.js +++ b/src/js/services/mopidy/middleware.js @@ -14,17 +14,19 @@ var lastfmActions = require('../lastfm/actions.js') const MopidyMiddleware = (function(){ // container for the actual Mopidy socket - var socket = null + var socket = null; // play position timer - var progress_interval = null - var progress_interval_counter = 0 + var progress_interval = null; + var progress_interval_counter = 0; // handle all manner of socket messages const handleMessage = (ws, store, type, data) => { // if debug enabled - if (store.getState().ui.log_mopidy) console.log('Mopidy', type, data) + if (store.getState().ui.log_mopidy){ + console.log('Mopidy', type, data); + } switch(type){ @@ -1704,6 +1706,28 @@ const MopidyMiddleware = (function(){ **/ case 'MOPIDY_TLTRACKS': + + /** + * TODO: Merge TLIDs into an array of TLIDS + var tracks = helpers.formatTracks(action.data); + var unique_tracks = []; + for (var i = 0; i < tracks.length; i++){ + var track = {}; + if (unique_tracks[tracks[i].uri] !== undefined){ + var track = unique_tracks[tracks[i].uri]; + if (existing_track.tlids !== undefined){ + var tlids = existing_track.tlids; + } else { + var tlids = []; + } + + + } else { + unique_tracks[tracks[i].uri] = tracks[i]; + } + } + **/ + store.dispatch({ type: 'QUEUE_LOADED', tracks: helpers.formatTracks(action.data) @@ -1725,10 +1749,10 @@ const MopidyMiddleware = (function(){ // Set our window title to the track title helpers.setWindowTitle(track, store.getState().mopidy.play_state); - store.dispatch({ type: 'CURRENT_TRACK_LOADED', current_track: track, + current_track_tlid: track.tlid, current_track_uri: track.uri }); } diff --git a/src/js/views/Queue.js b/src/js/views/Queue.js index e4a66b8b..f7983441 100755 --- a/src/js/views/Queue.js +++ b/src/js/views/Queue.js @@ -105,7 +105,7 @@ class Queue extends React.Component{ var uri = this.props.queue[i]; if (this.props.tracks.hasOwnProperty(uri)){ var track = this.props.tracks[uri]; - track.playing = (track.uri == this.props.current_track_uri); + track.playing = (track.uri == this.props.current_track_uri && track.tlid == this.props.current_track_tlid); tracks.push(track); } } @@ -193,6 +193,7 @@ const mapStateToProps = (state, ownProps) => { tracks: state.core.tracks, queue: state.core.queue, queue_metadata: state.core.queue_metadata, + current_track_tlid: state.core.current_track_tlid, current_track_uri: state.core.current_track_uri, current_track: (state.core.tracks[state.core.current_track_uri] !== undefined ? state.core.tracks[state.core.current_track_uri] : null) }