diff --git a/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee b/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee index 22f2a8034..0d587d39e 100644 --- a/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/PopupMediaControls.js.jsx.coffee @@ -18,6 +18,7 @@ if window.opener? if accessOpener SessionActions = window.opener.SessionActions MixerActions = window.opener.MixerActions + MixerStore = window.opener.MixerStore JamTrackActions = window.opener.JamTrackActions JamTrackMixdownActions = window.opener.JamTrackMixdownActions #JamTrackMixdownStore = window.opener.JamTrackMixdownStore @@ -33,10 +34,8 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged')) mixins: mixins - onMixersChanged: (sessionMixers) -> + updateFromMixerHelper: (mixers, session) -> - session = sessionMixers.session - mixers = sessionMixers.mixers # the backend delete/adds the metronome rapidly when the user hits play. this is custom code to deal with that @@ -51,15 +50,19 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged')) jamTrackName: mixers.jamTrackName() jamTrackMixdown: session.jamTrackMixdown() - @setState(media: state, downloadingJamTrack: session.downloadingJamTrack) + return {media: state, downloadingJamTrack: session.downloadingJamTrack} + + onMixersChanged: (sessionMixers) -> + session = sessionMixers.session + mixers = sessionMixers.mixers + + @setState(@updateFromMixerHelper(mixers, session)) + onMediaStateChanged: (changes) -> if changes.currentTimeChanged && @root? @setState({time: changes.time}) - onJamTrackMixdownChanged: (changes) -> - @setState({mixdown: changes}) - onJamTrackChanged: (changes) -> logger.debug("PopupMediaControls: jamtrack changed", changes) @setState({jamTrackState: changes}) @@ -70,7 +73,15 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged')) SessionActions.showNativeMetronomeGui() getInitialState: () -> - { + + if accessOpener + + state = @updateFromMixerHelper(MixerStore.mixers, MixerStore.session) + state.jamTrackState = JamTrackStore.getState() + return state + else + + return { media: @props.media, mixdown: @props.mixdown, jamTrackState: @props.jamTrackState, diff --git a/web/app/assets/javascripts/react-components/helpers/MixerHelper.js.coffee b/web/app/assets/javascripts/react-components/helpers/MixerHelper.js.coffee index ddd8153a8..5e6fe8618 100644 --- a/web/app/assets/javascripts/react-components/helpers/MixerHelper.js.coffee +++ b/web/app/assets/javascripts/react-components/helpers/MixerHelper.js.coffee @@ -359,6 +359,10 @@ MIX_MODES = context.JK.MIX_MODES; else logger.debug("MixerHelper: full jamtrack is active") + if jamTrackMixers.length == 1 + logger.warn("ignoring wrong amount of mixers for JamTrack in Full Track mode") + return _jamTracks + for jamTrack in jamTracks mixer = null preMasteredClass = "" diff --git a/web/app/assets/javascripts/react-components/stores/JamTrackStore.js.coffee b/web/app/assets/javascripts/react-components/stores/JamTrackStore.js.coffee index 1daf1beec..2e97dd4d2 100644 --- a/web/app/assets/javascripts/react-components/stores/JamTrackStore.js.coffee +++ b/web/app/assets/javascripts/react-components/stores/JamTrackStore.js.coffee @@ -501,6 +501,8 @@ JamTrackActions = @JamTrackActions downloadFailureCallback: (errorMsg) -> + logger.debug("mixdown download failed", errorMsg); + if @jamTrack?.activeMixdown? @jamTrack.activeMixdown.client_state = 'download_fail' @reportError(@jamTrack.activeMixdown)