Working on so far. at coffee shop pause

This commit is contained in:
Seth Call 2025-06-08 14:34:10 -05:00
parent d573904d05
commit 02666d1680
4 changed files with 27 additions and 185 deletions

View File

@ -4,8 +4,6 @@ RecordingStore = @RecordingStore
mixins: [Reflux.listenTo(@RecordingStore, "onRecordingChanged")]
onRecordingChanged: (details) ->
console.log("SessionRecordingStatus RECORDING CHANGED ", details)
@setState(details)
getInitialState: () ->
@ -32,8 +30,6 @@ RecordingStore = @RecordingStore
cause = `<span className="cause">cause={this.state.cause}</span>`
console.log("modelState ", modelState, modelState?.waitingOnClientStop, modelState?.waitingOnServerStop)
waitingOnClientStop = null
waitingOnServerStop = null
if modelState?
@ -44,7 +40,7 @@ RecordingStore = @RecordingStore
events = []
for event in @state.events
events.push(`<li key={event[0]}>{event[0]}</li>`)
events.push(`<li key={event[0]}>{event[0]} brid={event[1]}</li>`)
body = `<div className="msg">{recording} {cause} {waitingOnClientStop} {waitingOnServerStop}</div>`
`<div className={classes}>

View File

@ -1,168 +0,0 @@
$ = jQuery
context = window
logger = context.JK.logger
BackendToFrontendFPS = {
0: 30,
1: 24,
2: 20,
3: 15,
4: 10
}
@RecordingStore = Reflux.createStore(
{
listenables: @RecordingActions
#recordingWindow: null
recordingWindowOpened: false
events: []
init: ->
# Register with the app store to get @app
this.listenTo(context.AppStore, this.onAppInit)
onSessionEnded: () ->
if @recordingWindowOpened
#@recordingWindow.close()
@closeRecordingWindow()
onAppInit: (app) ->
@app = app
$(context.AppStore).on('SessionEnded', @onSessionEnded)
onInitModel: (recordingModel) ->
@recordingModel = recordingModel
@events=[]
this.trigger({isRecording: @recordingModel.isRecording(), events:@events})
# onStartRecording: (recordVideo, recordChat) ->
# frameRate = 0
# if recordVideo
# if context.jamClient.GetCurrentVideoFrameRate?
# frameRate = context.jamClient.GetCurrentVideoFrameRate() || 0;
# frameRate = BackendToFrontendFPS[frameRate]
# NoVideoRecordActive = 0
# WebCamRecordActive = 1
# ScreenRecordActive = 2
# logger.debug("onStartRecording: recordVideo: #{recordVideo}, recordChat: #{recordChat} frameRate: #{frameRate}")
# @recordingModel.startRecording(recordVideo, recordChat, frameRate)
onResetRecordingState: () ->
console.log("onResetRecordingState")
this.trigger({isRecording: @recordingModel.isRecording(), cause: '', events:@events})
onStartRecording: (recordSettings) ->
@recordingModel.startRecording(recordSettings);
@events=[]
@events.push(["StartRecording"]);
augmentWithBackendRecordingId(@events)
this.trigger(events:@events)
onStopRecording: () ->
@recordingModel.stopRecording()
@events.push(["StopRecording"]);
augmentWithBackendRecordingId(@events)
this.trigger(events:@events)
onStartingRecording: (details) ->
details.cause = 'starting'
@mixTransferred = false
@events.push(["OnStartingRecording"])
augmentWithBackendRecordingId(@events)
details.events = @events
this.trigger(details)
@popupRecordingControls() unless @recordingWindowOpened
augmentWithBackendRecordingId(events)
# REMOVE ME
backendRecordingId = await context.jamClient.GetCurrentRecordingId();
event.at(-1).push(backendRecordindId)
onStartedRecording: (details) ->
details.cause = 'started'
@mixTransferred = false
@events.push(["OnStartedRecording"])
details.events = @events
augmentWithBackendRecordingId(details)
this.trigger(details)
#@popupRecordingControls() unless @recordingWindowOpened
@closeRecordingWindow() if @recordingWindowOpened
onStoppingRecording: (details) ->
details.cause = 'stopping'
@events.push(["OnStoppingRecording"])
details.events = @events
augmentWithBackendRecordingId(@events)
this.trigger(details)
onStoppedRecording: (details) ->
details.cause = 'stopped'
@events.push(["OnStoppedRecording"])
details.events = @events
augmentWithBackendRecordingId(@events)
if @recordingWindowOpened
#@recordingWindow.close()
@closeRecordingWindow()
this.trigger(details, backendRecordingId: backendRecordingId)
onAbortedRecording: (details) ->
details.cause = 'aborted'
@events.push(["OnAbortedRecording"])
details.events = @events
augmentWithBackendRecordingId(@events)
if @recordingWindowOpened
#@recordingWindow.close()
@closeRecordingWindow()
this.trigger(details)
onOpenRecordingControls: () ->
logger.debug("recording controls opening")
if @recordingWindowOpened
#@recordingWindow.close()
@closeRecordingWindow()
@popupRecordingControls()
onRecordingControlsClosed: () ->
logger.debug("recording controls closed")
#@recordingWindow = null
@recordingWindowOpened = false
onMixTransferred: () ->
@mixTransferred = true
onAudioRecordingFormatChanged: (audioFormat) ->
logger.debug("_DEBUG_ onAudioRecordingFormatChanged", JSON.stringify(@recordingModel))
this.trigger({audioRecordingFormat: audioFormat, isRecording: @recordingModel.isRecording()})
popupRecordingControls: () ->
logger.debug("poupRecordingControls")
#@recordingWindow = window.open("/popups/recording-controls", 'Recording', 'scrollbars=yes,toolbar=no,status=no,height=315,width=340')
#@recordingWindow.ParentRecordingStore = context.RecordingStore
#@recordingWindow.ParentIsRecording = @recordingModel.isRecording()
@app.layout.showDialog('session-recording', {})
@recordingWindowOpened = true
closeRecordingWindow: () ->
@app.layout.cancelDialog('session-recording');
@recordingWindowOpened = false
}
)

View File

@ -67,7 +67,6 @@
currentRecordingId = null;
stoppingRecording = false;
sessionId = _sessionId
context.RecordingActions.resetRecordingState()
}
@ -140,7 +139,7 @@
console.log(`[RecordingState]: stopRecording userInitiated=${userInitiated} isRecordingOwner=${isRecordingOwner} reason=${reason} detail=${detail}`)
if(stoppingRecording) {
logger.debug("ignoring stopRecording because we are already stopping");
console.log("ignoring stopRecording because we are already stopping");
return;
}
stoppingRecording = true;
@ -159,7 +158,7 @@
var groupedTracks = groupTracksToClient(recording);
//if(sessionModel.jamTracks() && isRecording()) {
// logger.debug("preemptive stop media")
// console.log("preemptive stop media")
//context.jamClient.SessionStopPlay();
//}
@ -234,7 +233,7 @@
//alert("onServerStartRecording")
var session = context.SessionStore.getCurrentOrLastSession();
if (!session) {
logger.debug("no session, so no recording");
console.log("no session, so no recording");
return;
}
context.SessionStore.updateSessionInfo(session, true)
@ -245,7 +244,7 @@
var session = context.SessionStore.getCurrentOrLastSession();
if (!session) {
logger.debug("no session, so no recording");
console.log("no session, so no recording");
return;
}
context.SessionStore.updateSessionInfo(session, true)
@ -253,7 +252,7 @@
getCurrentRecordingState().then(function (recordingState) {
if (recordingState.isRecording && recordingState.recordingOwnerId === app.currentUserId) {
// we are still recording, so don't transition to stopped
logger.debug("recording is still running, so don't transition to stopped");
console.log("recording is still running, so don't transition to stopped");
return;
}
stopRecording(recordingId, null, null);
@ -308,6 +307,8 @@
}
function handleRecordingStarted(recordingId, result, clientId) {
context.RecordingActions.resetRecordingState()
console.log("[RecordingState] handleRecordingStarted called", {
recordingId,
result,
@ -366,7 +367,7 @@
}
function handleRecordingStopped(recordingId, result) {
console.log("[RecordingState] handleRecordingStopped")
console.log("[RecordingState] handleRecordingStopped event_id=" + recordingId + " current_id=" + currentRecordingId, result)
var session = context.SessionStore.getCurrentOrLastSession();
if(session) {
@ -383,7 +384,6 @@
return;
}
logger.debug("handleRecordingStopped " + recordingId, result)
var success = result.success;
var reason = result.reason;
@ -396,6 +396,13 @@
// the backend says the recording must be stopped.
// tell the server to stop it too
if(recordingId == null || recordingId == "") {
// this occurs when you are told by the backend to stop; i.e., you are a non-creator of the
// recording. Stop, don't tell the server to stop; you aren't supposed to hve permission to
var details = {recordingId: recordingId, reason: reason, detail: detail, isRecording: false}
context.RecordingActions.stoppedRecording(details)
return;
}
rest.stopRecording({
id: recordingId
})
@ -404,13 +411,13 @@
})
.fail(function(jqXHR, textStatus, errorMessage) {
if(jqXHR.status == 422) {
logger.debug("recording already stopped %o", arguments);
console.log("recording already stopped %o", arguments);
var details = {recordingId: recordingId, reason: reason, detail: detail, isRecording: false}
$self.triggerHandler('stoppedRecording', details);
context.RecordingActions.stoppedRecording(details)
}
else if(jqXHR.status == 404) {
logger.debug("recording is already deleted %o", arguments);
console.log("recording is already deleted %o", arguments);
var details = {recordingId: recordingId, reason: reason, detail: detail, isRecording: false}
$self.triggerHandler('stoppedRecording', details);
context.RecordingActions.stoppedRecording(details)
@ -437,7 +444,7 @@
if (arguments.length == 2) {
result = arguments[2]
}
logger.debug("video recording aborted", result)
console.log("video recording aborted", result)
context.JK.Banner.showAlert("Video has stopped recording. Audio is still recording.")
//context.RecordingActions.stopRecording()
@ -498,6 +505,13 @@
/**
* sync recording state with the client back end
* Describe exactly when we should fetch recording state from the server
* 1. If backend sends stopped/stopping/abort event
* 2. If track changes occurs
* 3.
* TOOD: describe exactly when we should fetch recording state from the client
* TODO: don't couple them into this one method
*
*/
async function getCurrentRecordingState() {
var recording = null;

View File

@ -436,7 +436,7 @@ $session-screen-divider: 1190px;
.session-recording-status {
position:absolute;
width:500px;
width:700px;
bottom:0;
left:3px;
max-height: 100%; /* Prevents growing outside the container */