jam-cloud/web/app/assets/javascripts/react-components/actions/SessionActions.js.coffee

80 lines
2.3 KiB
CoffeeScript

context = window
@SessionActions = Reflux.createActions({
enterSession: {}
joinSession: {}
leaveSession: {}
mixersChanged: {}
allowLeaveSession: {}
syncWithServer: {}
toggleSessionVideo : {}
audioResync: {}
openBackingTrack: {}
closeMedia: {}
updateSession: {}
downloadingJamTrack : {}
openMetronome: {}
showNativeMetronomeGui: {}
metronomeCricketChange: {}
windowBackgrounded: {}
broadcastFailure: {}
broadcastSuccess: {}
broadcastStopped: {}
mixdownActive: {}
sessionJoinedByOther: {}
navToSession: {}
log: {}
})
pushJoinActionTrace = (source, argsLike) ->
return unless context.JK?.DebugLogCollector?.push
args = Array::slice.call(argsLike ? [])
context.JK.DebugLogCollector.push("join-source.session-action", {
source: source
args: args
stack: (new Error("SessionActions.joinSession")).stack
})
if @SessionActions?.joinSession?
originalJoinAction = @SessionActions.joinSession
wrappedJoinAction = ->
pushJoinActionTrace('call', arguments)
originalJoinAction.apply(this, arguments)
for own key, value of originalJoinAction
wrappedJoinAction[key] = value
if originalJoinAction.trigger?
originalTrigger = originalJoinAction.trigger
wrappedJoinAction.trigger = ->
pushJoinActionTrace('trigger', arguments)
originalTrigger.apply(originalJoinAction, arguments)
@SessionActions.joinSession = wrappedJoinAction
pushLeaveActionTrace = (source, argsLike) ->
return unless context.JK?.DebugLogCollector?.push
args = Array::slice.call(argsLike ? [])
context.JK.DebugLogCollector.push("leave-source.session-action", {
source: source
args: args
stack: (new Error("SessionActions.leaveSession")).stack
})
if @SessionActions?.leaveSession?
originalLeaveAction = @SessionActions.leaveSession
wrappedLeaveAction = ->
pushLeaveActionTrace('call', arguments)
originalLeaveAction.apply(this, arguments)
for own key, value of originalLeaveAction
wrappedLeaveAction[key] = value
if originalLeaveAction.trigger?
originalLeaveTrigger = originalLeaveAction.trigger
wrappedLeaveAction.trigger = ->
pushLeaveActionTrace('trigger', arguments)
originalLeaveTrigger.apply(originalLeaveAction, arguments)
@SessionActions.leaveSession = wrappedLeaveAction