From 087ef665c23a18b52e572570dd35efd481affa7f Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Thu, 25 Mar 2021 16:29:38 +0100 Subject: [PATCH] openvidu-browser: small refactoring of Publisher.replaceTrack method --- openvidu-browser/src/OpenVidu/Publisher.ts | 42 +++++++++------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/openvidu-browser/src/OpenVidu/Publisher.ts b/openvidu-browser/src/OpenVidu/Publisher.ts index db728939..caa5e8cb 100644 --- a/openvidu-browser/src/OpenVidu/Publisher.ts +++ b/openvidu-browser/src/OpenVidu/Publisher.ts @@ -304,7 +304,7 @@ export class Publisher extends StreamManager { * * @returns A Promise (to which you can optionally subscribe to) that is resolved if the track was successfully replaced and rejected with an Error object in other case */ - replaceTrack(track: MediaStreamTrack): Promise { + async replaceTrack(track: MediaStreamTrack): Promise { const replaceTrackInMediaStream = (): Promise => { return new Promise((resolve, reject) => { @@ -354,37 +354,27 @@ export class Publisher extends StreamManager { }); } - return new Promise(async (resolve, reject) => { - // Set field "enabled" of the new track to the previous value - const trackOriginalEnabledValue: boolean = track.enabled; - if (track.kind === 'video') { - track.enabled = this.stream.videoActive; - } else if (track.kind === 'audio') { - track.enabled = this.stream.audioActive; - } + // Set field "enabled" of the new track to the previous value + const trackOriginalEnabledValue: boolean = track.enabled; + if (track.kind === 'video') { + track.enabled = this.stream.videoActive; + } else if (track.kind === 'audio') { + track.enabled = this.stream.audioActive; + } + try { if (this.stream.isLocalStreamPublished) { // Only if the Publisher has been published is necessary to call native Web API RTCRtpSender.replaceTrack // If it has not been published yet, replacing it on the MediaStream object is enough - try { - await replaceTrackInRtcRtpSender(); - await replaceTrackInMediaStream(); - resolve(); - } catch (error) { - track.enabled = trackOriginalEnabledValue; - reject(error); - } + await replaceTrackInRtcRtpSender(); + return await replaceTrackInMediaStream(); } else { // Publisher not published. Simply replace the track on the local MediaStream - try { - await replaceTrackInMediaStream(); - resolve(); - } catch (error) { - track.enabled = trackOriginalEnabledValue; - reject(error); - } + return await replaceTrackInMediaStream(); } - }); - + } catch (error) { + track.enabled = trackOriginalEnabledValue; + throw error; + } } /* Hidden methods */