From 8550b77d17263249ff0ff5c16019ec8a83e6b837 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Thu, 28 Apr 2022 14:05:28 +0200 Subject: [PATCH] openvidu-browser: fix removeFilter error when no filter available --- openvidu-browser/src/OpenVidu/Stream.ts | 74 ++++++++++++++----------- 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/openvidu-browser/src/OpenVidu/Stream.ts b/openvidu-browser/src/OpenVidu/Stream.ts index 03866c46..d44fca64 100644 --- a/openvidu-browser/src/OpenVidu/Stream.ts +++ b/openvidu-browser/src/OpenVidu/Stream.ts @@ -540,50 +540,60 @@ export class Stream { } } - if (!!this.filter && this.filter?.type.startsWith('VB:')) { + if (!!this.filter) { + + // There is a filter applied - // Client filters + if (this.filter?.type.startsWith('VB:')) { - try { + // Client filters - const mediaStreamClone = this.virtualBackgroundSourceElements!.mediaStreamClone; - if (!isDisposing) { - if (this.streamManager.remote) { - await this.streamManager.replaceTrackInMediaStream(mediaStreamClone.getVideoTracks()[0]); + try { + + const mediaStreamClone = this.virtualBackgroundSourceElements!.mediaStreamClone; + if (!isDisposing) { + if (this.streamManager.remote) { + await this.streamManager.replaceTrackInMediaStream(mediaStreamClone.getVideoTracks()[0]); + } else { + await (this.streamManager as Publisher).replaceTrack(mediaStreamClone.getVideoTracks()[0]); + } } else { - await (this.streamManager as Publisher).replaceTrack(mediaStreamClone.getVideoTracks()[0]); + mediaStreamClone.getTracks().forEach((track) => track.stop()); } - } else { - mediaStreamClone.getTracks().forEach((track) => track.stop()); + + this.virtualBackgroundSinkElements!.VB.cleanUp(); + + delete this.virtualBackgroundSinkElements; + delete this.virtualBackgroundSourceElements; + + return resolveRemoveFilter(undefined, false); + + } catch (error) { + return resolveRemoveFilter(error, false); } - this.virtualBackgroundSinkElements!.VB.cleanUp(); + } else { - delete this.virtualBackgroundSinkElements; - delete this.virtualBackgroundSourceElements; + // Server filters - return resolveRemoveFilter(undefined, false); + if (!this.session.sessionConnected()) { + return reject(this.session.notConnectedError()); + } + + logger.info('Removing filter of stream ' + this.streamId); + this.session.openvidu.sendRequest( + 'removeFilter', + { streamId: this.streamId }, + (error, response) => { + return resolveRemoveFilter(error, true); + } + ); - } catch (error) { - return resolveRemoveFilter(error, false); } - } else { - - // Server filters - - if (!this.session.sessionConnected()) { - return reject(this.session.notConnectedError()); - } - - logger.info('Removing filter of stream ' + this.streamId); - this.session.openvidu.sendRequest( - 'removeFilter', - { streamId: this.streamId }, - (error, response) => { - return resolveRemoveFilter(error, true); - } - ); + + // There is no filter applied + return reject(new OpenViduError(OpenViduErrorName.GENERIC_ERROR, "Stream " + this.streamId + " has no filter applied")); } });