85 lines
2.2 KiB
CoffeeScript
85 lines
2.2 KiB
CoffeeScript
$ = jQuery
|
|
context = window
|
|
logger = context.JK.logger
|
|
PLAYBACK_MONITOR_MODE = context.JK.PLAYBACK_MONITOR_MODE
|
|
RecordingActions = @RecordingActions
|
|
BrowserMediaActions = @BrowserMediaActions
|
|
|
|
@BrowserMediaPlaybackStore = Reflux.createStore(
|
|
{
|
|
listenables: @BrowserMediaPlaybackActions
|
|
|
|
playbackStateChanged: false
|
|
positionUpdateChanged: false
|
|
currentTimeChanged: false
|
|
playbackState: null
|
|
positionMs: 0
|
|
durationMs: 0
|
|
isRecording: false
|
|
sessionHelper: null
|
|
|
|
init: () ->
|
|
this.listenTo(context.BrowserMediaStore, this.onBrowserMediaChange);
|
|
|
|
onBrowserMediaChange: (changes) ->
|
|
@onPositionUpdate(PLAYBACK_MONITOR_MODE.BROWSER_MEDIA)
|
|
|
|
onCurrentTimeChanged: (time) ->
|
|
@time = time
|
|
@currentTimeChanged = true
|
|
@issueChange()
|
|
|
|
onMediaStartPlay: (data) ->
|
|
BrowserMediaActions.play()
|
|
|
|
onMediaStopPlay: (data) ->
|
|
|
|
if !data.endReached
|
|
BrowserMediaActions.stop()
|
|
|
|
onMediaPausePlay: (data) ->
|
|
# if a JamTrack is open, and the user hits 'pause' or 'stop', we need to automatically stop the recording
|
|
if !data.endReached
|
|
BrowserMediaActions.pause()
|
|
|
|
onMediaChangePosition: (data) ->
|
|
seek = data.positionMs;
|
|
|
|
BrowserMediaActions.seek(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.BROWSER_MEDIA
|
|
@positionMs = BrowserMediaStore.onGetPlayPosition() || 0
|
|
@durationMs = BrowserMediaStore.onGetPlayDuration() || 0;
|
|
@isPlaying = BrowserMediaStore.playing;
|
|
else
|
|
raise 'Only BROWSER_MEDIA is supported'
|
|
@positionUpdateChanged = true
|
|
@issueChange()
|
|
|
|
}
|
|
)
|