Handling duplicate current_tracks in queue
This commit is contained in:
1
src/js/bootstrap.js
vendored
1
src/js/bootstrap.js
vendored
@ -35,6 +35,7 @@ var initialState = {
|
||||
queue: [],
|
||||
queue_metadata: {},
|
||||
current_track_uri: null,
|
||||
current_track_tlid: null,
|
||||
albums: {},
|
||||
artists: {},
|
||||
playlists: {},
|
||||
|
||||
@ -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
|
||||
});
|
||||
|
||||
|
||||
@ -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
|
||||
});
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user