diff --git a/web/app/assets/javascripts/asyncJamClient.js b/web/app/assets/javascripts/asyncJamClient.js index 24db55130..ca3db4b39 100644 --- a/web/app/assets/javascripts/asyncJamClient.js +++ b/web/app/assets/javascripts/asyncJamClient.js @@ -648,7 +648,7 @@ ] const displayLogMethod = [ - 'SessionSetTrackVolumeData' + // 'SessionSetTrackVolumeData' ] if(skipLogMethods.length > 0 && skipLogMethods.includes(prop)){ diff --git a/web/app/assets/javascripts/react-components/SessionTrackVolumeHover.js.jsx.coffee b/web/app/assets/javascripts/react-components/SessionTrackVolumeHover.js.jsx.coffee index 04fdaa588..216f8f8ad 100644 --- a/web/app/assets/javascripts/react-components/SessionTrackVolumeHover.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/SessionTrackVolumeHover.js.jsx.coffee @@ -76,6 +76,18 @@ ptrCount = 0 if mixer && $.isArray(mixer) mixer = mixer[0] + # if the mixer still doesn't exist, there is a state problem; the mixer is gone. + # This can happen in normal circumstances, where, if you have the VU open on a remote participant + # and that remote person does a 'Resync' in the session, that recreates all their mixer info. + # MAYBE we could fix this on the fly, but we don't have that information at hand (maybe we could see that tracks don't change between resync, and just 'update' the mixer' whereveer it's persisted for that track) + # However, the easiest thing to do in this moment is to close the VU, since it's been invalidated + # https://jamkazam.atlassian.net/browse/VRFS-5627marg + if !mixer? + console.warn("SessionTrackVolumeHover: mixer is gone, closing hover") + $container = jQuery(this.getDOMNode()).closest('.react-holder') + $container.data('bt').btOff() + return `
` + volume_left = mixer.volume_left classes = classNames({ 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 1f73fa159..13ca1d430 100644 --- a/web/app/assets/javascripts/react-components/helpers/MixerHelper.js.coffee +++ b/web/app/assets/javascripts/react-components/helpers/MixerHelper.js.coffee @@ -793,18 +793,33 @@ MIX_MODES = context.JK.MIX_MODES; let originalVolume = this.getOriginalVolume(mixers, gainType); if (controlGroup != null) { mixers = [mixers[0]]; - for (let mixer of mixers) { + for (let m of mixers) { let broadcast = !(data.dragging); - mixer = this.fillTrackVolumeObject(mixer.id, mixer.mode, broadcast); + let mixer = this.fillTrackVolumeObject(m.id, m.mode, broadcast); + if (mixer == null) { + console.error("MixerHelper: faderChanged: mixer is null, skipping", m, gainType, controlGroup); + continue; + } + else { + //console.log("MixerHelper: faderChanged: mixer is not null, proceeding", m, gainType, controlGroup); + } let relative = gainType === 'music' && (mixer.name === CategoryGroupIds.UserMedia || mixer.name === CategoryGroupIds.MediaTrack); await this.setMixerVolume(mixer, data.percentage, relative, originalVolume, controlGroup); mixer = this.getMixer(mixer.id, mixer.mode); mixer.volume_left = context.trackVolumeObject.volL; } } else { - for (let mixer of mixers) { + for (let m of mixers) { let broadcast = !(data.dragging); - mixer = this.fillTrackVolumeObject(mixer.id, mixer.mode, broadcast); + let mixer = this.fillTrackVolumeObject(m.id, m.mode, broadcast); + if (mixer == null) { + console.error("MixerHelper: faderChanged: mixer is null, skipping", m, gainType, controlGroup); + continue; + } + else { + //console.log("MixerHelper: faderChanged: mixer is not null, proceeding", m, gainType, controlGroup); + } + let relative = gainType === 'music' && (mixer.name === CategoryGroupIds.UserMedia || mixer.name === CategoryGroupIds.MediaTrack); await this.setMixerVolume(mixer, data.percentage, relative, originalVolume); mixer = this.getMixer(mixer.id, mixer.mode); @@ -1011,6 +1026,10 @@ MIX_MODES = context.JK.MIX_MODES; _broadcast = broadcast mixer = @getMixer(mixerId, mode) + if(mixer == null) + console.error("MixerHelper: fillTrackVolumeObject: unable to find mixer with ID: #{mixerId}, mode: #{mode}") + return null + context.trackVolumeObject.id = mixer.id context.trackVolumeObject._id = mixer._id context.trackVolumeObject.groupID = mixer.group_id diff --git a/web/app/assets/stylesheets/client/react-components/SessionScreen.scss b/web/app/assets/stylesheets/client/react-components/SessionScreen.scss index 21eb119da..83cc72335 100644 --- a/web/app/assets/stylesheets/client/react-components/SessionScreen.scss +++ b/web/app/assets/stylesheets/client/react-components/SessionScreen.scss @@ -92,6 +92,13 @@ $session-screen-divider: 1190px; } } + .session-track + .session-track { + margin-left: 5px; + @include session-small { + margin-left: 5px; + } + } + .track-controls { @include session-small { margin-top: 8px;