diff --git a/conference.js b/conference.js index 858093133..951ec2e79 100644 --- a/conference.js +++ b/conference.js @@ -356,7 +356,6 @@ export default { if(JitsiMeetJS.getGlobalOnErrorHandler){ var oldOnErrorHandler = window.onerror; window.onerror = function (message, source, lineno, colno, error) { - JitsiMeetJS.getGlobalOnErrorHandler( message, source, lineno, colno, error); diff --git a/lang/main.json b/lang/main.json index 62539cad0..a982a5c58 100644 --- a/lang/main.json +++ b/lang/main.json @@ -275,7 +275,8 @@ "off": "Recording stopped", "failedToStart": "Recording failed to start", "buttonTooltip": "Start / stop recording", - "error": "Recording failed. Please try again." + "error": "Recording failed. Please try again.", + "unavailable": "The recording service is currently unavailable. Please try again later." }, "liveStreaming": { @@ -286,6 +287,7 @@ "failedToStart": "Live streaming failed to start", "buttonTooltip": "Start / stop live stream", "streamIdRequired": "Please fill in the stream id in order to launch the live streaming.", - "error": "Live streaming failed. Please try again" + "error": "Live streaming failed. Please try again.", + "busy": "All recorders are currently busy. Please try again later." } } diff --git a/modules/UI/recording/Recording.js b/modules/UI/recording/Recording.js index 051aeda1a..8929d1be7 100644 --- a/modules/UI/recording/Recording.js +++ b/modules/UI/recording/Recording.js @@ -206,7 +206,9 @@ var Status = { AVAILABLE: "available", UNAVAILABLE: "unavailable", PENDING: "pending", - ERROR: "error" + ERROR: "error", + FAILED: "failed", + BUSY: "busy" }; /** @@ -245,21 +247,27 @@ var Recording = { if (recordingType === 'jibri') { this.baseClass = "fa fa-play-circle"; + this.recordingTitle = "dialog.liveStreaming"; this.recordingOnKey = "liveStreaming.on"; this.recordingOffKey = "liveStreaming.off"; this.recordingPendingKey = "liveStreaming.pending"; this.failedToStartKey = "liveStreaming.failedToStart"; this.recordingErrorKey = "liveStreaming.error"; this.recordingButtonTooltip = "liveStreaming.buttonTooltip"; + this.recordingUnavailable = "liveStreaming.unavailable"; + this.recordingBusy = "liveStreaming.busy"; } else { this.baseClass = "icon-recEnable"; + this.recordingTitle = "dialog.recording"; this.recordingOnKey = "recording.on"; this.recordingOffKey = "recording.off"; this.recordingPendingKey = "recording.pending"; this.failedToStartKey = "recording.failedToStart"; this.recordingErrorKey = "recording.error"; this.recordingButtonTooltip = "recording.buttonTooltip"; + this.recordingUnavailable = "recording.unavailable"; + this.recordingBusy = "liveStreaming.busy"; } selector.addClass(this.baseClass); @@ -307,10 +315,17 @@ var Recording = { } break; } + case Status.BUSY: { + APP.UI.messageHandler.openMessageDialog( + self.recordingTitle, + self.recordingBusy + ); + break; + } default: { APP.UI.messageHandler.openMessageDialog( - "dialog.liveStreaming", - "liveStreaming.unavailable" + self.recordingTitle, + self.recordingUnavailable ); } } @@ -352,6 +367,9 @@ var Recording = { updateRecordingUI (recordingState) { let buttonSelector = $('#toolbar_button_record'); + let oldState = this.currentState; + this.currentState = recordingState; + // TODO: handle recording state=available if (recordingState === Status.ON) { @@ -361,19 +379,21 @@ var Recording = { this._updateStatusLabel(this.recordingOnKey, false); } else if (recordingState === Status.OFF - || recordingState === Status.UNAVAILABLE) { + || recordingState === Status.UNAVAILABLE + || recordingState === Status.BUSY + || recordingState === Status.FAILED) { // We don't want to do any changes if this is // an availability change. - if (this.currentState !== Status.ON - && this.currentState !== Status.PENDING) + if (oldState !== Status.ON + && oldState !== Status.PENDING) return; buttonSelector.removeClass(this.baseClass + " active"); buttonSelector.addClass(this.baseClass); let messageKey; - if (this.currentState === Status.PENDING) + if (oldState === Status.PENDING) messageKey = this.failedToStartKey; else messageKey = this.recordingOffKey; @@ -391,15 +411,14 @@ var Recording = { this._updateStatusLabel(this.recordingPendingKey, true); } - else if (recordingState === Status.ERROR) { + else if (recordingState === Status.ERROR + || recordingState === Status.FAILED) { buttonSelector.removeClass(this.baseClass + " active"); buttonSelector.addClass(this.baseClass); this._updateStatusLabel(this.recordingErrorKey, true); } - this.currentState = recordingState; - let labelSelector = $('#recordingLabel'); // We don't show the label for available state.