Handling duplicate current_tracks in queue

This commit is contained in:
James Barnsley
2017-11-17 16:09:48 +13:00
parent df0edc20ff
commit fd3e1ce55d
4 changed files with 33 additions and 6 deletions

1
src/js/bootstrap.js vendored
View File

@ -35,6 +35,7 @@ var initialState = {
queue: [],
queue_metadata: {},
current_track_uri: null,
current_track_tlid: null,
albums: {},
artists: {},
playlists: {},

View File

@ -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
});

View File

@ -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
});
}

View File

@ -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)
}