121 lines
3.7 KiB
CoffeeScript
121 lines
3.7 KiB
CoffeeScript
$ = jQuery
|
|
context = window
|
|
logger = context.JK.logger
|
|
PLAYBACK_MONITOR_MODE = context.JK.PLAYBACK_MONITOR_MODE
|
|
RecordingActions = @RecordingActions
|
|
|
|
@MediaPlaybackStore = Reflux.createStore(
|
|
{
|
|
listenables: @MediaPlaybackActions
|
|
|
|
playbackStateChanged: false
|
|
positionUpdateChanged: false
|
|
currentTimeChanged: false
|
|
playbackState: null
|
|
positionMs: 0
|
|
durationMs: 0
|
|
isRecording: false
|
|
sessionHelper: null
|
|
|
|
|
|
init: () ->
|
|
this.listenTo(context.SessionStore, this.onSessionChanged);
|
|
|
|
onCurrentTimeChanged: (time) ->
|
|
@time = time
|
|
@currentTimeChanged = true
|
|
@issueChange()
|
|
|
|
onSessionChanged: (session) ->
|
|
@isRecording = session.isRecording
|
|
@sessionHelper = session
|
|
|
|
onMediaStartPlay: (data) ->
|
|
logger.debug("calling jamClient.SessionStartPlay");
|
|
context.jamClient.SessionStartPlay(data.playbackMode);
|
|
|
|
onMediaStopPlay: (data) ->
|
|
# if a JamTrack is open, and the user hits 'pause' or 'stop', we need to automatically stop the recording
|
|
if @sessionHelper.jamTracks() && @isRecording
|
|
logger.debug("preemptive jamtrack stop")
|
|
@startStopRecording();
|
|
|
|
if !data.endReached
|
|
logger.debug("calling jamClient.SessionStopPlay. endReached:", data.endReached)
|
|
context.jamClient.SessionStopPlay()
|
|
|
|
onMediaPausePlay: (data) ->
|
|
# if a JamTrack is open, and the user hits 'pause' or 'stop', we need to automatically stop the recording
|
|
if @sessionHelper.jamTracks() && @isRecording
|
|
logger.debug("preemptive jamtrack stop")
|
|
@startStopRecording();
|
|
|
|
|
|
if !data.endReached
|
|
logger.debug("calling jamClient.SessionPausePlay. endReached:", data.endReached)
|
|
context.jamClient.SessionPausePlay()
|
|
|
|
startStopRecording: () ->
|
|
if @isRecording
|
|
RecordingActions.stopRecording.trigger()
|
|
else
|
|
RecordingActions.startRecording.trigger()
|
|
|
|
onMediaChangePosition: (data) ->
|
|
seek = data.positionMs;
|
|
|
|
if data.playbackMonitorMode == PLAYBACK_MONITOR_MODE.JAMTRACK
|
|
# if positionMs == 0, then seek it back to whatever the earliest play start is to catch all the prelude
|
|
|
|
if(seek == 0)
|
|
duration = context.jamClient.SessionGetJamTracksPlayDurationMs();
|
|
seek = duration.start;
|
|
|
|
logger.debug("calling jamClient.SessionTrackSeekMs(" + seek + ")");
|
|
|
|
if data.playbackMonitorMode == PLAYBACK_MONITOR_MODE.JAMTRACK
|
|
context.jamClient.SessionJamTrackSeekMs(seek);
|
|
else
|
|
context.jamClient.SessionTrackSeekMs(seek);
|
|
|
|
|
|
issueChange: () ->
|
|
|
|
@state =
|
|
playbackState: @playbackState
|
|
playbackStateChanged: @playbackStateChanged
|
|
positionUpdateChanged: @positionUpdateChanged
|
|
currentTimeChanged: @currentTimeChanged
|
|
positionMs: @positionMs
|
|
durationMs: @durationMs
|
|
isPlaying: @isPlaying
|
|
time: @time
|
|
|
|
this.trigger(@state)
|
|
@playbackStateChanged = false
|
|
@positionUpdateChanged = false
|
|
@currentTimeChanged = false
|
|
|
|
onPlaybackStateChange: (text) ->
|
|
@playbackState = text
|
|
@playbackStateChanged = true
|
|
|
|
@issueChange()
|
|
|
|
onPositionUpdate: (playbackMode) ->
|
|
if playbackMode == PLAYBACK_MONITOR_MODE.JAMTRACK
|
|
@positionMs = context.jamClient.SessionCurrrentJamTrackPlayPosMs()
|
|
duration = context.jamClient.SessionGetJamTracksPlayDurationMs()
|
|
@durationMs = duration.media_len
|
|
else
|
|
@positionMs = context.jamClient.SessionCurrrentPlayPosMs()
|
|
@durationMs = context.jamClient.SessionGetTracksPlayDurationMs()
|
|
|
|
@isPlaying = context.jamClient.isSessionTrackPlaying()
|
|
|
|
@positionUpdateChanged = true
|
|
@issueChange()
|
|
|
|
}
|
|
)
|