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