diff --git a/openvidu-browser/src/OpenVidu/Filter.ts b/openvidu-browser/src/OpenVidu/Filter.ts index ac22958d..5ae01648 100644 --- a/openvidu-browser/src/OpenVidu/Filter.ts +++ b/openvidu-browser/src/OpenVidu/Filter.ts @@ -99,7 +99,7 @@ export class Filter { } catch (error) { const errorMsg = "'params' property must be a JSON formatted object"; logger.error(errorMsg); - reject(errorMsg); + return reject(errorMsg); } } else { stringParams = params; @@ -111,9 +111,9 @@ export class Filter { if (error) { logger.error('Error executing filter method for Stream ' + this.stream.streamId, error); if (error.code === 401) { - reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to execute a filter method")); + return reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to execute a filter method")); } else { - reject(error); + return reject(error); } } else { logger.info('Filter method successfully executed on Stream ' + this.stream.streamId); @@ -121,7 +121,7 @@ export class Filter { this.stream.filter!.lastExecMethod = { method, params: JSON.parse(stringParams) }; this.stream.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.stream.session, this.stream, 'filter', this.stream.filter!, oldValue, 'execFilterMethod')]); this.stream.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.stream.streamManager, this.stream, 'filter', this.stream.filter!, oldValue, 'execFilterMethod')]); - resolve(); + return resolve(); } } ); @@ -147,14 +147,14 @@ export class Filter { if (error) { logger.error('Error adding filter event listener to event ' + eventType + 'for Stream ' + this.stream.streamId, error); if (error.code === 401) { - reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to add a filter event listener")); + return reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to add a filter event listener")); } else { - reject(error); + return reject(error); } } else { this.handlers.set(eventType, handler); logger.info('Filter event listener to event ' + eventType + ' successfully applied on Stream ' + this.stream.streamId); - resolve(); + return resolve(); } } ); @@ -179,14 +179,14 @@ export class Filter { if (error) { logger.error('Error removing filter event listener to event ' + eventType + 'for Stream ' + this.stream.streamId, error); if (error.code === 401) { - reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to add a filter event listener")); + return reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to add a filter event listener")); } else { - reject(error); + return reject(error); } } else { this.handlers.delete(eventType); logger.info('Filter event listener to event ' + eventType + ' successfully removed on Stream ' + this.stream.streamId); - resolve(); + return resolve(); } } ); diff --git a/openvidu-browser/src/OpenVidu/LocalRecorder.ts b/openvidu-browser/src/OpenVidu/LocalRecorder.ts index 4beb0e83..73260bdd 100644 --- a/openvidu-browser/src/OpenVidu/LocalRecorder.ts +++ b/openvidu-browser/src/OpenVidu/LocalRecorder.ts @@ -90,7 +90,7 @@ export class LocalRecorder { if (typeof MediaRecorder.isTypeSupported === 'function') { if (!!mimeType) { if (!MediaRecorder.isTypeSupported(mimeType)) { - reject(new Error('mimeType "' + mimeType + '" is not supported')); + return reject(new Error('mimeType "' + mimeType + '" is not supported')); } options = { mimeType }; } else { @@ -104,7 +104,7 @@ export class LocalRecorder { this.mediaRecorder.start(10); } catch (err) { - reject(err); + return reject(err); } this.mediaRecorder.ondataavailable = (e) => { @@ -136,7 +136,7 @@ export class LocalRecorder { }; this.state = LocalRecorderState.RECORDING; - resolve(); + return resolve(); }); } @@ -154,11 +154,11 @@ export class LocalRecorder { } this.mediaRecorder.onstop = () => { this.onStopDefault(); - resolve(); + return resolve(); }; this.mediaRecorder.stop(); } catch (e) { - reject(e); + return reject(e); } }); } @@ -172,13 +172,13 @@ export class LocalRecorder { return new Promise((resolve, reject) => { try { if (this.state !== LocalRecorderState.RECORDING) { - reject(Error('\'LocalRecord.pause()\' needs \'LocalRecord.state\' to be \'RECORDING\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.start()\' or \'LocalRecorder.resume()\' before')); + return reject(Error('\'LocalRecord.pause()\' needs \'LocalRecord.state\' to be \'RECORDING\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.start()\' or \'LocalRecorder.resume()\' before')); } this.mediaRecorder.pause(); this.state = LocalRecorderState.PAUSED; - resolve(); + return resolve(); } catch (error) { - reject(error); + return reject(error); } }); } @@ -195,9 +195,9 @@ export class LocalRecorder { } this.mediaRecorder.resume(); this.state = LocalRecorderState.RECORDING; - resolve(); + return resolve(); } catch (error) { - reject(error); + return reject(error); } }); } @@ -300,7 +300,7 @@ export class LocalRecorder { uploadAsBinary(endpoint: string, headers?: any): Promise { return new Promise((resolve, reject) => { if (this.state !== LocalRecorderState.FINISHED) { - reject(Error('\'LocalRecord.uploadAsBinary()\' needs \'LocalRecord.state\' to be \'FINISHED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.stop()\' before')); + return reject(Error('\'LocalRecord.uploadAsBinary()\' needs \'LocalRecord.state\' to be \'FINISHED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.stop()\' before')); } else { const http = new XMLHttpRequest(); http.open('POST', endpoint, true); @@ -315,9 +315,9 @@ export class LocalRecorder { if (http.readyState === 4) { if (http.status.toString().charAt(0) === '2') { // Success response from server (HTTP status standard: 2XX is success) - resolve(http.responseText); + return resolve(http.responseText); } else { - reject(http.status); + return reject(http.status); } } }; @@ -340,7 +340,7 @@ export class LocalRecorder { uploadAsMultipartfile(endpoint: string, headers?: any): Promise { return new Promise((resolve, reject) => { if (this.state !== LocalRecorderState.FINISHED) { - reject(Error('\'LocalRecord.uploadAsMultipartfile()\' needs \'LocalRecord.state\' to be \'FINISHED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.stop()\' before')); + return reject(Error('\'LocalRecord.uploadAsMultipartfile()\' needs \'LocalRecord.state\' to be \'FINISHED\' (current value: \'' + this.state + '\'). Call \'LocalRecorder.stop()\' before')); } else { const http = new XMLHttpRequest(); http.open('POST', endpoint, true); @@ -358,9 +358,9 @@ export class LocalRecorder { if (http.readyState === 4) { if (http.status.toString().charAt(0) === '2') { // Success response from server (HTTP status standard: 2XX is success) - resolve(http.responseText); + return resolve(http.responseText); } else { - reject(http.status); + return reject(http.status); } } }; diff --git a/openvidu-browser/src/OpenVidu/OpenVidu.ts b/openvidu-browser/src/OpenVidu/OpenVidu.ts index 0b6a1ed3..e10a1af9 100644 --- a/openvidu-browser/src/OpenVidu/OpenVidu.ts +++ b/openvidu-browser/src/OpenVidu/OpenVidu.ts @@ -272,9 +272,9 @@ export class OpenVidu { const callback = (error: Error) => { if (!!error) { - reject(error); + return reject(error); } else { - resolve(publisher); + return resolve(publisher); } }; @@ -416,7 +416,7 @@ export class OpenVidu { }); } }); - resolve(devices); + return resolve(devices); }); } else { @@ -430,11 +430,11 @@ export class OpenVidu { }); } }); - resolve(devices); + return resolve(devices); } }).catch((error) => { logger.error('Error getting devices', error); - reject(error); + return reject(error); }); }); } @@ -497,7 +497,7 @@ export class OpenVidu { navigator.mediaDevices.getUserMedia(constraintsAux) .then(audioOnlyStream => { previousMediaStream.addTrack(audioOnlyStream.getAudioTracks()[0]); - resolve(previousMediaStream); + return resolve(previousMediaStream); }) .catch(error => { previousMediaStream.getAudioTracks().forEach((track) => { @@ -506,7 +506,7 @@ export class OpenVidu { previousMediaStream.getVideoTracks().forEach((track) => { track.stop(); }); - reject(this.generateAudioDeviceError(error, constraintsAux)); + return reject(this.generateAudioDeviceError(error, constraintsAux)); }); } @@ -517,7 +517,7 @@ export class OpenVidu { !!myConstraints.videoTrack && myConstraints.constraints?.audio === false) { // No need to call getUserMedia at all. Both tracks provided, or only AUDIO track provided or only VIDEO track provided - resolve(this.addAlreadyProvidedTracks(myConstraints, new MediaStream())); + return resolve(this.addAlreadyProvidedTracks(myConstraints, new MediaStream())); } else { // getUserMedia must be called. AUDIO or VIDEO are requesting a new track @@ -547,13 +547,13 @@ export class OpenVidu { askForAudioStreamOnly(mediaStream, myConstraints.constraints); return; } else { - resolve(mediaStream); + return resolve(mediaStream); } }) .catch(error => { let errorName: OpenViduErrorName = OpenViduErrorName.SCREEN_CAPTURE_DENIED; const errorMessage = error.toString(); - reject(new OpenViduError(errorName, errorMessage)); + return reject(new OpenViduError(errorName, errorMessage)); }); return; } else { @@ -572,7 +572,7 @@ export class OpenVidu { askForAudioStreamOnly(mediaStream, myConstraints.constraints); return; } else { - resolve(mediaStream); + return resolve(mediaStream); } }) .catch(error => { @@ -583,12 +583,10 @@ export class OpenVidu { } else { errorName = OpenViduErrorName.SCREEN_CAPTURE_DENIED; } - reject(new OpenViduError(errorName, errorMessage)); + return reject(new OpenViduError(errorName, errorMessage)); }); } - }).catch((error: OpenViduError) => { - reject(error); - }); + }).catch((error: OpenViduError) => reject(error)); }); } @@ -697,7 +695,7 @@ export class OpenVidu { } if (myConstraints.constraints!.audio === false && myConstraints.constraints!.video === false) { // ERROR! audioSource and videoSource cannot be both false at the same time - reject(new OpenViduError(OpenViduErrorName.NO_INPUT_SOURCE_SET, + return reject(new OpenViduError(OpenViduErrorName.NO_INPUT_SOURCE_SET, "Properties 'audioSource' and 'videoSource' cannot be set to false or null at the same time")); } @@ -749,7 +747,7 @@ export class OpenVidu { // CASE 4: deviceId or screen sharing this.configureDeviceIdOrScreensharing(myConstraints, publisherProperties, resolve, reject); - resolve(myConstraints); + return resolve(myConstraints); }); } @@ -919,7 +917,7 @@ export class OpenVidu { if (!this.checkScreenSharingCapabilities()) { const error = new OpenViduError(OpenViduErrorName.SCREEN_SHARING_NOT_SUPPORTED, 'You can only screen share in desktop Chrome, Firefox, Opera, Safari (>=13.0), Edge (>= 80) or Electron. Detected client: ' + platform.getName() + ' ' + platform.getVersion()); logger.error(error); - reject(error); + return reject(error); } else { if (platform.isElectron()) { @@ -932,7 +930,7 @@ export class OpenVidu { chromeMediaSourceId: electronScreenId } }; - resolve(myConstraints); + return resolve(myConstraints); } else { @@ -945,26 +943,26 @@ export class OpenVidu { if (error === 'permission-denied' || error === 'PermissionDeniedError') { const error = new OpenViduError(OpenViduErrorName.SCREEN_CAPTURE_DENIED, 'You must allow access to one window of your desktop'); logger.error(error); - reject(error); + return reject(error); } else { const extensionId = this.advancedConfiguration.screenShareChromeExtension!.split('/').pop()!!.trim(); screenSharing.getChromeExtensionStatus(extensionId, status => { if (status === 'installed-disabled') { const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_DISABLED, 'You must enable the screen extension'); logger.error(error); - reject(error); + return reject(error); } if (status === 'not-installed') { const error = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_NOT_INSTALLED, (this.advancedConfiguration.screenShareChromeExtension)); logger.error(error); - reject(error); + return reject(error); } }); return; } } else { myConstraints.constraints!.video = screenConstraints; - resolve(myConstraints); + return resolve(myConstraints); } }); return; @@ -972,7 +970,7 @@ export class OpenVidu { if (navigator.mediaDevices['getDisplayMedia']) { // getDisplayMedia support (Chrome >= 72, Firefox >= 66, Safari >= 13) - resolve(myConstraints); + return resolve(myConstraints); } else { // Default screen sharing extension for Chrome/Opera, or is Firefox < 66 const firefoxString = (platform.isFirefoxBrowser() || platform.isFirefoxMobileBrowser()) ? publisherProperties.videoSource : undefined; @@ -984,24 +982,24 @@ export class OpenVidu { 'https://chrome.google.com/webstore/detail/openvidu-screensharing/lfcgfepafnobdloecchnfaclibenjold'; const err = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_NOT_INSTALLED, extensionUrl); logger.error(err); - reject(err); + return reject(err); } else if (error === 'installed-disabled') { const err = new OpenViduError(OpenViduErrorName.SCREEN_EXTENSION_DISABLED, 'You must enable the screen extension'); logger.error(err); - reject(err); + return reject(err); } else if (error === 'permission-denied') { const err = new OpenViduError(OpenViduErrorName.SCREEN_CAPTURE_DENIED, 'You must allow access to one window of your desktop'); logger.error(err); - reject(err); + return reject(err); } else { const err = new OpenViduError(OpenViduErrorName.GENERIC_ERROR, 'Unknown error when accessing screen share'); logger.error(err); logger.error(error); - reject(err); + return reject(err); } } else { myConstraints.constraints!.video = screenConstraints.video; - resolve(myConstraints); + return resolve(myConstraints); } }); return; diff --git a/openvidu-browser/src/OpenVidu/Publisher.ts b/openvidu-browser/src/OpenVidu/Publisher.ts index f943ee95..d535371b 100644 --- a/openvidu-browser/src/OpenVidu/Publisher.ts +++ b/openvidu-browser/src/OpenVidu/Publisher.ts @@ -304,7 +304,7 @@ export class Publisher extends StreamManager { this.openvidu.sendNewVideoDimensionsIfRequired(this, 'trackReplaced', 50, 30); this.session.sendVideoData(this.stream.streamManager, 5, true, 5); } - resolve(); + return resolve(); }); } @@ -315,24 +315,19 @@ export class Publisher extends StreamManager { if (track.kind === 'video') { sender = senders.find(s => !!s.track && s.track.kind === 'video'); if (!sender) { - reject(new Error('There\'s no replaceable track for that kind of MediaStreamTrack in this Publisher object')); - return; + return reject(new Error('There\'s no replaceable track for that kind of MediaStreamTrack in this Publisher object')); } } else if (track.kind === 'audio') { sender = senders.find(s => !!s.track && s.track.kind === 'audio'); if (!sender) { - reject(new Error('There\'s no replaceable track for that kind of MediaStreamTrack in this Publisher object')); - return; + return reject(new Error('There\'s no replaceable track for that kind of MediaStreamTrack in this Publisher object')); } } else { - reject(new Error('Unknown track kind ' + track.kind)); - return; + return reject(new Error('Unknown track kind ' + track.kind)); } - (sender as RTCRtpSender).replaceTrack(track).then(() => { - resolve(); - }).catch(error => { - reject(error); - }); + (sender as RTCRtpSender).replaceTrack(track) + .then(() => resolve()) + .catch(error => reject(error)); }); } @@ -376,7 +371,7 @@ export class Publisher extends StreamManager { this.accessDenied = true; this.accessAllowed = false; logger.error(`Publisher initialization failed. ${openViduError.name}: ${openViduError.message}`) - reject(openViduError); + return reject(openViduError); }; const successCallback = (mediaStream: MediaStream) => { @@ -448,7 +443,7 @@ export class Publisher extends StreamManager { this.stream.isLocalStreamReadyToPublish = true; this.stream.ee.emitEvent('stream-ready-to-publish', []); } - resolve(); + return resolve(); }; const getMediaSuccess = (mediaStream: MediaStream, definedAudioConstraint) => { @@ -643,7 +638,7 @@ export class Publisher extends StreamManager { document.body.removeChild(this.videoReference); } - resolve({ width, height }); + return resolve({ width, height }); } if (this.videoReference.readyState >= 1) { diff --git a/openvidu-browser/src/OpenVidu/Session.ts b/openvidu-browser/src/OpenVidu/Session.ts index a69aba03..94bef3fb 100644 --- a/openvidu-browser/src/OpenVidu/Session.ts +++ b/openvidu-browser/src/OpenVidu/Session.ts @@ -170,13 +170,11 @@ export class Session extends EventDispatcher { participantId: token, metadata: !!metadata ? this.stringClientMetadata(metadata) : '' }; - this.connectAux(token).then(() => { - resolve(); - }).catch(error => { - reject(error); - }); + this.connectAux(token) + .then(() =>resolve()) + .catch(error => reject(error)); } else { - reject(new OpenViduError(OpenViduErrorName.BROWSER_NOT_SUPPORTED, 'Browser ' + platform.getName() + ' (version ' + platform.getVersion() + ') for ' + platform.getFamily() + ' is not supported in OpenVidu')); + return reject(new OpenViduError(OpenViduErrorName.BROWSER_NOT_SUPPORTED, 'Browser ' + platform.getName() + ' (version ' + platform.getVersion() + ') for ' + platform.getFamily() + ' is not supported in OpenVidu')); } }); } @@ -294,16 +292,16 @@ export class Session extends EventDispatcher { return new Promise((resolve, reject) => { if (!this.sessionConnected()) { - reject(this.notConnectedError()); + return reject(this.notConnectedError()); } let subscriber: Subscriber; const callback = (error: Error) => { if (!!error) { - reject(error); + return reject(error); } else { - resolve(subscriber); + return resolve(subscriber); } }; @@ -332,7 +330,7 @@ export class Session extends EventDispatcher { return new Promise((resolve, reject) => { if (!this.sessionConnected()) { - reject(this.notConnectedError()); + return reject(this.notConnectedError()); } else { const connectionId = subscriber.stream.connection.connectionId; @@ -344,13 +342,13 @@ export class Session extends EventDispatcher { (error, response) => { if (error) { logger.error('Error unsubscribing from ' + connectionId); - reject(error); + return reject(error); } else { logger.info('Unsubscribed correctly from ' + connectionId); subscriber.stream.streamManager.removeAllVideos(); subscriber.stream.disposeWebRtcPeer(); subscriber.stream.disposeMediaStream(); - resolve(); + return resolve(); } } ); @@ -376,7 +374,7 @@ export class Session extends EventDispatcher { return new Promise((resolve, reject) => { if (!this.sessionConnected()) { - reject(this.notConnectedError()); + return reject(this.notConnectedError()); } publisher.session = this; @@ -388,11 +386,9 @@ export class Session extends EventDispatcher { publisher.stream.publish() .then(() => { this.sendVideoData(publisher, 8, true, 5); - resolve(); + return resolve(); }) - .catch(error => { - reject(error); - }); + .catch(error => reject(error)); } else { // 'Session.unpublish(Publisher)' has been called. Must initialize again Publisher publisher.initialize() @@ -402,14 +398,10 @@ export class Session extends EventDispatcher { publisher.stream.publish() .then(() => { this.sendVideoData(publisher, 8, true, 5); - resolve(); + return resolve(); }) - .catch(error => { - reject(error); - }); - }).catch((error) => { - reject(error); - }); + .catch(error => reject(error)); + }).catch(error => reject(error)); } }); } @@ -445,9 +437,9 @@ export class Session extends EventDispatcher { const stream = publisher.stream; if (!stream.connection) { - reject(new Error('The associated Connection object of this Publisher is null')); + return reject(new Error('The associated Connection object of this Publisher is null')); } else if (stream.connection !== this.connection) { - reject(new Error('The associated Connection object of this Publisher is not your local Connection.' + + return reject(new Error('The associated Connection object of this Publisher is not your local Connection.' + "Only moderators can force unpublish on remote Streams via 'forceUnpublish' method")); } else { @@ -455,7 +447,7 @@ export class Session extends EventDispatcher { this.openvidu.sendRequest('unpublishVideo', (error, response) => { if (error) { - reject(error); + return reject(error); } else { logger.info('Media unpublished correctly'); @@ -470,7 +462,7 @@ export class Session extends EventDispatcher { publisher.emitEvent('streamDestroyed', [streamEvent]); streamEvent.callDefaultBehavior(); - resolve(); + return resolve(); } }); } @@ -499,7 +491,7 @@ export class Session extends EventDispatcher { return new Promise((resolve, reject) => { if (!this.sessionConnected()) { - reject(this.notConnectedError()); + return reject(this.notConnectedError()); } logger.info('Forcing disconnect for connection ' + connection.connectionId); @@ -510,13 +502,13 @@ export class Session extends EventDispatcher { if (error) { logger.error('Error forcing disconnect for Connection ' + connection.connectionId, error); if (error.code === 401) { - reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to force a disconnection")); + return reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to force a disconnection")); } else { - reject(error); + return reject(error); } } else { logger.info('Forcing disconnect correctly for Connection ' + connection.connectionId); - resolve(); + return resolve(); } } ); @@ -543,7 +535,7 @@ export class Session extends EventDispatcher { return new Promise((resolve, reject) => { if (!this.sessionConnected()) { - reject(this.notConnectedError()); + return reject(this.notConnectedError()); } logger.info('Forcing unpublish for stream ' + stream.streamId); @@ -554,13 +546,13 @@ export class Session extends EventDispatcher { if (error) { logger.error('Error forcing unpublish for Stream ' + stream.streamId, error); if (error.code === 401) { - reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to force an unpublishing")); + return reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to force an unpublishing")); } else { - reject(error); + return reject(error); } } else { logger.info('Forcing unpublish correctly for Stream ' + stream.streamId); - resolve(); + return resolve(); } } ); @@ -584,7 +576,7 @@ export class Session extends EventDispatcher { return new Promise((resolve, reject) => { if (!this.sessionConnected()) { - reject(this.notConnectedError()); + return reject(this.notConnectedError()); } const signalMessage = {}; @@ -615,9 +607,9 @@ export class Session extends EventDispatcher { message: JSON.stringify(signalMessage) }, (error, response) => { if (!!error) { - reject(error); + return reject(error); } else { - resolve(); + return resolve(); } }); }); @@ -1129,7 +1121,7 @@ export class Session extends EventDispatcher { // of the subscriber was already taking place. Always use the last one to retry the re-subscription // process, as that SDP offer will be the only one available at the server side. Ignore previous ones stream.reconnectionEventEmitter!['onForciblyReconnectSubscriberLastEvent'] = event; - reject('Ongoing forced subscriber reconnection'); + return reject('Ongoing forced subscriber reconnection'); } else { // One onForciblyReconnectSubscriber even has been received while a reconnection process // of the subscriber was already taking place. Set up a listener to wait for it to retry the @@ -1156,12 +1148,12 @@ export class Session extends EventDispatcher { } else { const errMsg = "No stream with streamId '" + event.streamId + "' found for connection '" + event.connectionId + "' on 'streamPropertyChanged' event"; logger.error(errMsg); - reject(errMsg); + return reject(errMsg); } }) .catch(openViduError => { logger.error(openViduError); - reject(openViduError); + return reject(openViduError); }); }); } @@ -1354,14 +1346,14 @@ export class Session extends EventDispatcher { return new Promise((resolve, reject) => { this.openvidu.startWs((error) => { if (!!error) { - reject(error); + return reject(error); } else { const joinParams = this.initializeParams(token); this.openvidu.sendRequest('joinRoom', joinParams, (error, response: LocalConnectionOptions) => { if (!!error) { - reject(error); + return reject(error); } else { // Process join room response @@ -1402,7 +1394,7 @@ export class Session extends EventDispatcher { this.ee.emitEvent('streamCreated', [new StreamEvent(false, this, 'streamCreated', stream, '')]); }); - resolve(); + return resolve(); } }); } @@ -1439,14 +1431,14 @@ export class Session extends EventDispatcher { const connection = this.remoteConnections.get(connectionId); if (!!connection) { // Resolve remote connection - resolve(connection); + return resolve(connection); } else { if (this.connection.connectionId === connectionId) { // Resolve local connection - resolve(this.connection); + return resolve(this.connection); } else { // Connection not found. Reject with OpenViduError - reject(new OpenViduError(OpenViduErrorName.GENERIC_ERROR, errorMessage)); + return reject(new OpenViduError(OpenViduErrorName.GENERIC_ERROR, errorMessage)); } } }); @@ -1457,12 +1449,12 @@ export class Session extends EventDispatcher { const connection = this.remoteConnections.get(connectionId); if (!!connection) { // Resolve remote connection - resolve(connection); + return resolve(connection); } else { // Remote connection not found. Reject with OpenViduError const errorMessage = 'Remote connection ' + connectionId + " unknown when '" + operation + "'. " + 'Existing remote connections: ' + JSON.stringify(this.remoteConnections.keys()); - reject(new OpenViduError(OpenViduErrorName.GENERIC_ERROR, errorMessage)); + return reject(new OpenViduError(OpenViduErrorName.GENERIC_ERROR, errorMessage)); } }); } diff --git a/openvidu-browser/src/OpenVidu/Stream.ts b/openvidu-browser/src/OpenVidu/Stream.ts index fbf51165..4cb8dcff 100644 --- a/openvidu-browser/src/OpenVidu/Stream.ts +++ b/openvidu-browser/src/OpenVidu/Stream.ts @@ -306,7 +306,7 @@ export class Stream { return new Promise((resolve, reject) => { if (!this.session.sessionConnected()) { - reject(this.session.notConnectedError()); + return reject(this.session.notConnectedError()); } logger.info('Applying filter to stream ' + this.streamId); @@ -322,9 +322,9 @@ export class Stream { if (error) { logger.error('Error applying filter for Stream ' + this.streamId, error); if (error.code === 401) { - reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to apply a filter")); + return reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to apply a filter")); } else { - reject(error); + return reject(error); } } else { logger.info('Filter successfully applied on Stream ' + this.streamId); @@ -333,7 +333,7 @@ export class Stream { this.filter.stream = this; this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this, 'filter', this.filter, oldValue, 'applyFilter')]); this.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.streamManager, this, 'filter', this.filter, oldValue, 'applyFilter')]); - resolve(this.filter); + return resolve(this.filter); } } ); @@ -349,7 +349,7 @@ export class Stream { return new Promise((resolve, reject) => { if (!this.session.sessionConnected()) { - reject(this.session.notConnectedError()); + return reject(this.session.notConnectedError()); } logger.info('Removing filter of stream ' + this.streamId); @@ -360,9 +360,9 @@ export class Stream { if (error) { logger.error('Error removing filter for Stream ' + this.streamId, error); if (error.code === 401) { - reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to remove a filter")); + return reject(new OpenViduError(OpenViduErrorName.OPENVIDU_PERMISSION_DENIED, "You don't have permissions to remove a filter")); } else { - reject(error); + return reject(error); } } else { logger.info('Filter successfully removed from Stream ' + this.streamId); @@ -370,7 +370,7 @@ export class Stream { delete this.filter; this.session.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.session, this, 'filter', this.filter!, oldValue, 'applyFilter')]); this.streamManager.emitEvent('streamPropertyChanged', [new StreamPropertyChangedEvent(this.streamManager, this, 'filter', this.filter!, oldValue, 'applyFilter')]); - resolve(); + return resolve(); } } ); @@ -438,12 +438,8 @@ export class Stream { subscribe(): Promise { return new Promise((resolve, reject) => { this.initWebRtcPeerReceive(false) - .then(() => { - resolve(); - }) - .catch(error => { - reject(error); - }); + .then(() => resolve()) + .catch(error => reject(error)); }); } @@ -454,21 +450,13 @@ export class Stream { return new Promise((resolve, reject) => { if (this.isLocalStreamReadyToPublish) { this.initWebRtcPeerSend(false) - .then(() => { - resolve(); - }) - .catch(error => { - reject(error); - }); + .then(() => resolve()) + .catch(error => reject(error)); } else { this.ee.once('stream-ready-to-publish', () => { this.publish() - .then(() => { - resolve(); - }) - .catch(error => { - reject(error); - }); + .then(() => resolve()) + .catch(error => reject(error)); }); } }); @@ -826,12 +814,8 @@ export class Stream { } else { // Ongoing reconnection console.warn(`Trying to reconnect stream ${this.streamId} (${this.isLocal() ? 'Publisher' : 'Subscriber'}) but an ongoing reconnection process is active. Waiting for response...`); - this.reconnectionEventEmitter.once('success', () => { - resolve(); - }); - this.reconnectionEventEmitter.once('error', error => { - reject(error); - }); + this.reconnectionEventEmitter.once('success', () => resolve()); + this.reconnectionEventEmitter.once('error', error => reject(error)); return true; } } @@ -857,7 +841,7 @@ export class Stream { this.reconnectionEventEmitter?.emitEvent('success'); delete this.reconnectionEventEmitter; } - resolve(); + return resolve(); } const finalReject = error => { @@ -865,7 +849,7 @@ export class Stream { this.reconnectionEventEmitter?.emitEvent('error', [error]); delete this.reconnectionEventEmitter; } - reject(error); + return reject(error); } const successOfferCallback = (sdpOfferParam) => { @@ -985,7 +969,7 @@ export class Stream { this.reconnectionEventEmitter?.emitEvent('success'); delete this.reconnectionEventEmitter; } - resolve(); + return resolve(); } /** @@ -997,7 +981,7 @@ export class Stream { this.reconnectionEventEmitter?.emitEvent('error', [error]); delete this.reconnectionEventEmitter; } - reject(error); + return reject(error); } /** @@ -1038,10 +1022,13 @@ export class Stream { */ initWebRtcPeerReceiveFromClient(reconnect: boolean): Promise { return new Promise((resolve, reject) => { - this.completeWebRtcPeerReceive(reconnect, false).then(response => { - this.webRtcPeer.processRemoteAnswer(response.sdpAnswer) - .then(() => resolve()).catch(error => reject(error)); - }).catch(error => reject(error)); + this.completeWebRtcPeerReceive(reconnect, false) + .then(response => { + this.webRtcPeer.processRemoteAnswer(response.sdpAnswer) + .then(() => resolve()) + .catch(error => reject(error)); + }) + .catch(error => reject(error)); }); } @@ -1053,10 +1040,11 @@ export class Stream { // Server initiates negotiation this.session.openvidu.sendRequest('prepareReceiveVideoFrom', { sender: this.streamId, reconnect }, (error, response) => { if (error) { - reject(new Error('Error on prepareReceiveVideoFrom: ' + JSON.stringify(error))); + return reject(new Error('Error on prepareReceiveVideoFrom: ' + JSON.stringify(error))); } else { this.completeWebRtcPeerReceive(reconnect, false, response.sdpOffer) - .then(() => resolve()).catch(error => reject(error)); + .then(() => resolve()) + .catch(error => reject(error)); } }); }); @@ -1088,9 +1076,9 @@ export class Stream { this.session.openvidu.sendRequest(method, params, (error, response) => { if (error) { - reject(new Error('Error on ' + method + ' : ' + JSON.stringify(error))); + return reject(new Error('Error on ' + method + ' : ' + JSON.stringify(error))); } else { - resolve(response); + return resolve(response); } }); }; @@ -1121,13 +1109,13 @@ export class Stream { this.webRtcPeer.processLocalAnswer(sdpAnswer).then(() => { sendSdpToServer(sdpAnswer.sdp!); }).catch(error => { - reject(new Error('(subscribe) SDP process local answer error: ' + JSON.stringify(error))); + return reject(new Error('(subscribe) SDP process local answer error: ' + JSON.stringify(error))); }); }).catch(error => { - reject(new Error('(subscribe) SDP create answer error: ' + JSON.stringify(error))); + return reject(new Error('(subscribe) SDP create answer error: ' + JSON.stringify(error))); }); }).catch(error => { - reject(new Error('(subscribe) SDP process remote offer error: ' + JSON.stringify(error))); + return reject(new Error('(subscribe) SDP process remote offer error: ' + JSON.stringify(error))); }); } else { @@ -1136,10 +1124,10 @@ export class Stream { this.webRtcPeer.processLocalOffer(sdpOffer).then(() => { sendSdpToServer(sdpOffer.sdp!); }).catch(error => { - reject(new Error('(subscribe) SDP process local offer error: ' + JSON.stringify(error))); + return reject(new Error('(subscribe) SDP process local offer error: ' + JSON.stringify(error))); }); }).catch(error => { - reject(new Error('(subscribe) SDP create offer error: ' + JSON.stringify(error))); + return reject(new Error('(subscribe) SDP create offer error: ' + JSON.stringify(error))); }); } @@ -1306,20 +1294,20 @@ export class Stream { if (wsReadyState === 1) { const responseTimeout = setTimeout(() => { console.warn(`[${event}] Websocket timeout of ${msResponseTimeout}ms`); - resolve(false); + return resolve(false); }, msResponseTimeout); this.session.openvidu.sendRequest('echo', {}, (error, response) => { clearTimeout(responseTimeout); if (!!error) { console.warn(`[${event}] Websocket 'echo' returned error: ${error}`); - resolve(false); + return resolve(false); } else { - resolve(true); + return resolve(true); } }); } else { console.warn(`[${event}] Websocket readyState is ${wsReadyState}`); - resolve(false); + return resolve(false); } }); } diff --git a/openvidu-browser/src/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts b/openvidu-browser/src/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts index eaf6e023..bacc289a 100644 --- a/openvidu-browser/src/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts +++ b/openvidu-browser/src/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts @@ -196,8 +196,7 @@ export class WebRtcPeer { // MediaStream. if (!this.configuration.mediaStream) { - reject(new Error(`${this.configuration.mode} direction requested, but no stream was configured to be sent`)); - return; + return reject(new Error(`${this.configuration.mode} direction requested, but no stream was configured to be sent`)); } for (const track of this.configuration.mediaStream.getTracks()) { @@ -320,7 +319,7 @@ export class WebRtcPeer { // Enforce our desired direction. tc.direction = this.configuration.mode; } else { - reject(new Error(`${kind} requested, but no transceiver was created from remote description`)); + return reject(new Error(`${kind} requested, but no transceiver was created from remote description`)); } } @@ -344,11 +343,9 @@ export class WebRtcPeer { offerToReceiveAudio: offerAudio, offerToReceiveVideo: offerVideo }; - this.pc!.createAnswer(constraints).then(sdpAnswer => { - resolve(sdpAnswer); - }).catch(error => { - reject(error); - }); + this.pc!.createAnswer(constraints) + .then(sdpAnswer => resolve(sdpAnswer)) + .catch(error => reject(error)); } } @@ -368,14 +365,12 @@ export class WebRtcPeer { const localDescription = this.pc.localDescription; if (!!localDescription) { logger.debug('Local description set', localDescription.sdp); - resolve(); + return resolve(); } else { - reject('Local description is not defined'); + return reject('Local description is not defined'); } }) - .catch(error => { - reject(error); - }); + .catch(error => reject(error)); }); } @@ -391,15 +386,11 @@ export class WebRtcPeer { logger.debug('SDP offer received, setting remote description', offer); if (this.pc.signalingState === 'closed') { - reject('RTCPeerConnection is closed when trying to set remote description'); + return reject('RTCPeerConnection is closed when trying to set remote description'); } this.setRemoteDescription(offer) - .then(() => { - resolve(); - }) - .catch(error => { - reject(error); - }); + .then(() => resolve()) + .catch(error => reject(error)); }); } @@ -410,7 +401,7 @@ export class WebRtcPeer { return new Promise((resolve, reject) => { logger.debug('SDP answer created, setting local description'); if (this.pc.signalingState === 'closed') { - reject('RTCPeerConnection is closed when trying to set local description'); + return reject('RTCPeerConnection is closed when trying to set local description'); } this.pc.setLocalDescription(answer) .then(() => resolve()) @@ -430,7 +421,7 @@ export class WebRtcPeer { logger.debug('SDP answer received, setting remote description'); if (this.pc.signalingState === 'closed') { - reject('RTCPeerConnection is closed when trying to set remote description'); + return reject('RTCPeerConnection is closed when trying to set remote description'); } this.setRemoteDescription(answer) .then(() => resolve()) diff --git a/openvidu-browser/src/OpenViduInternal/WebRtcStats/WebRtcStats.ts b/openvidu-browser/src/OpenViduInternal/WebRtcStats/WebRtcStats.ts index 56f68307..624c1324 100644 --- a/openvidu-browser/src/OpenViduInternal/WebRtcStats/WebRtcStats.ts +++ b/openvidu-browser/src/OpenViduInternal/WebRtcStats/WebRtcStats.ts @@ -278,7 +278,7 @@ export class WebRtcStats { finalRemoteCandidate = 'ERROR: No active remote ICE candidate. Probably ICE-TCP is being used'; } - resolve({ + return resolve({ localCandidate: finalLocalCandidate, remoteCandidate: finalRemoteCandidate });