@wazo/sdk 0.38.10 → 0.38.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/wazo-sdk.js +2 -2
- package/esm/__tests__/web-rtc-client.test.js +11 -7
- package/esm/checker/Checker.js +11 -7
- package/esm/checker/checks/index.js +11 -7
- package/esm/checker/checks/webrtc-transport.js +11 -7
- package/esm/checker/checks/webrtc.js +11 -7
- package/esm/domain/Features.js +5 -1
- package/esm/domain/Phone/WebRTCPhone.js +2 -2
- package/esm/index.js +18 -10
- package/esm/simple/Auth.js +18 -10
- package/esm/simple/Configuration.js +18 -10
- package/esm/simple/Phone.js +18 -10
- package/esm/simple/index.js +18 -10
- package/esm/simple/room/LocalParticipant.js +18 -10
- package/esm/simple/room/Participant.js +18 -10
- package/esm/simple/room/RemoteParticipant.js +18 -10
- package/esm/simple/room/Room.js +18 -10
- package/esm/simple/room/SipRoom.js +18 -10
- package/esm/simple/room/Stream.js +18 -10
- package/esm/simple/room/__tests__/Participant.test.js +18 -10
- package/esm/simple/room/__tests__/RemoteParticipant.test.js +18 -10
- package/esm/simple/utils.js +18 -10
- package/esm/web-rtc-client.js +11 -7
- package/lib/__tests__/web-rtc-client.test.js +11 -7
- package/lib/checker/Checker.js +11 -7
- package/lib/checker/checks/index.js +11 -7
- package/lib/checker/checks/webrtc-transport.js +11 -7
- package/lib/checker/checks/webrtc.js +11 -7
- package/lib/domain/Features.js +5 -1
- package/lib/domain/Phone/WebRTCPhone.js +2 -2
- package/lib/index.js +18 -10
- package/lib/simple/Auth.js +18 -10
- package/lib/simple/Configuration.js +18 -10
- package/lib/simple/Phone.js +18 -10
- package/lib/simple/index.js +18 -10
- package/lib/simple/room/LocalParticipant.js +18 -10
- package/lib/simple/room/Participant.js +18 -10
- package/lib/simple/room/RemoteParticipant.js +18 -10
- package/lib/simple/room/Room.js +18 -10
- package/lib/simple/room/SipRoom.js +18 -10
- package/lib/simple/room/Stream.js +18 -10
- package/lib/simple/room/__tests__/Participant.test.js +18 -10
- package/lib/simple/room/__tests__/RemoteParticipant.test.js +18 -10
- package/lib/simple/utils.js +18 -10
- package/lib/web-rtc-client.js +11 -7
- package/package.json +1 -1
- package/src/domain/Features.js +5 -1
- package/src/domain/Phone/WebRTCPhone.js +2 -2
- package/src/web-rtc-client.js +11 -7
package/lib/checker/Checker.js
CHANGED
|
@@ -6965,7 +6965,7 @@ class WebRTCClient extends Emitter {
|
|
|
6965
6965
|
|
|
6966
6966
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
6967
6967
|
} else {
|
|
6968
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
6968
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
6969
6969
|
}
|
|
6970
6970
|
|
|
6971
6971
|
if (!videoSender) {
|
|
@@ -7006,9 +7006,11 @@ class WebRTCClient extends Emitter {
|
|
|
7006
7006
|
const videoTracks = localStream.getVideoTracks();
|
|
7007
7007
|
|
|
7008
7008
|
// Remove video senders
|
|
7009
|
-
pc.getSenders
|
|
7010
|
-
|
|
7011
|
-
|
|
7009
|
+
if (pc.getSenders) {
|
|
7010
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7011
|
+
videoSender.replaceTrack(null);
|
|
7012
|
+
});
|
|
7013
|
+
}
|
|
7012
7014
|
|
|
7013
7015
|
videoTracks.forEach(videoTrack => {
|
|
7014
7016
|
videoTrack.enabled = false;
|
|
@@ -7241,7 +7243,8 @@ class WebRTCClient extends Emitter {
|
|
|
7241
7243
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7242
7244
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7243
7245
|
const audioTrack = stream.getAudioTracks()[0];
|
|
7244
|
-
const sender = pc && pc.getSenders
|
|
7246
|
+
const sender = pc && pc.getSenders
|
|
7247
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7245
7248
|
|
|
7246
7249
|
if (sender) {
|
|
7247
7250
|
if (sender.track) {
|
|
@@ -7304,10 +7307,11 @@ class WebRTCClient extends Emitter {
|
|
|
7304
7307
|
// $FlowFixMe
|
|
7305
7308
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
7306
7309
|
const videoTrack = stream.getVideoTracks()[0];
|
|
7307
|
-
let sender = pc && pc.getSenders
|
|
7310
|
+
let sender = pc && pc.getSenders
|
|
7311
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
7308
7312
|
let wasTrackEnabled = false;
|
|
7309
7313
|
if (!sender) {
|
|
7310
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
7314
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
7311
7315
|
}
|
|
7312
7316
|
|
|
7313
7317
|
if (sender) {
|
|
@@ -6965,7 +6965,7 @@ class WebRTCClient extends Emitter {
|
|
|
6965
6965
|
|
|
6966
6966
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
6967
6967
|
} else {
|
|
6968
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
6968
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
6969
6969
|
}
|
|
6970
6970
|
|
|
6971
6971
|
if (!videoSender) {
|
|
@@ -7006,9 +7006,11 @@ class WebRTCClient extends Emitter {
|
|
|
7006
7006
|
const videoTracks = localStream.getVideoTracks();
|
|
7007
7007
|
|
|
7008
7008
|
// Remove video senders
|
|
7009
|
-
pc.getSenders
|
|
7010
|
-
|
|
7011
|
-
|
|
7009
|
+
if (pc.getSenders) {
|
|
7010
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7011
|
+
videoSender.replaceTrack(null);
|
|
7012
|
+
});
|
|
7013
|
+
}
|
|
7012
7014
|
|
|
7013
7015
|
videoTracks.forEach(videoTrack => {
|
|
7014
7016
|
videoTrack.enabled = false;
|
|
@@ -7241,7 +7243,8 @@ class WebRTCClient extends Emitter {
|
|
|
7241
7243
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7242
7244
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7243
7245
|
const audioTrack = stream.getAudioTracks()[0];
|
|
7244
|
-
const sender = pc && pc.getSenders
|
|
7246
|
+
const sender = pc && pc.getSenders
|
|
7247
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7245
7248
|
|
|
7246
7249
|
if (sender) {
|
|
7247
7250
|
if (sender.track) {
|
|
@@ -7304,10 +7307,11 @@ class WebRTCClient extends Emitter {
|
|
|
7304
7307
|
// $FlowFixMe
|
|
7305
7308
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
7306
7309
|
const videoTrack = stream.getVideoTracks()[0];
|
|
7307
|
-
let sender = pc && pc.getSenders
|
|
7310
|
+
let sender = pc && pc.getSenders
|
|
7311
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
7308
7312
|
let wasTrackEnabled = false;
|
|
7309
7313
|
if (!sender) {
|
|
7310
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
7314
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
7311
7315
|
}
|
|
7312
7316
|
|
|
7313
7317
|
if (sender) {
|
|
@@ -6377,7 +6377,7 @@ class WebRTCClient extends Emitter {
|
|
|
6377
6377
|
|
|
6378
6378
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
6379
6379
|
} else {
|
|
6380
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
6380
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
6381
6381
|
}
|
|
6382
6382
|
|
|
6383
6383
|
if (!videoSender) {
|
|
@@ -6418,9 +6418,11 @@ class WebRTCClient extends Emitter {
|
|
|
6418
6418
|
const videoTracks = localStream.getVideoTracks();
|
|
6419
6419
|
|
|
6420
6420
|
// Remove video senders
|
|
6421
|
-
pc.getSenders
|
|
6422
|
-
|
|
6423
|
-
|
|
6421
|
+
if (pc.getSenders) {
|
|
6422
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
6423
|
+
videoSender.replaceTrack(null);
|
|
6424
|
+
});
|
|
6425
|
+
}
|
|
6424
6426
|
|
|
6425
6427
|
videoTracks.forEach(videoTrack => {
|
|
6426
6428
|
videoTrack.enabled = false;
|
|
@@ -6653,7 +6655,8 @@ class WebRTCClient extends Emitter {
|
|
|
6653
6655
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
6654
6656
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
6655
6657
|
const audioTrack = stream.getAudioTracks()[0];
|
|
6656
|
-
const sender = pc && pc.getSenders
|
|
6658
|
+
const sender = pc && pc.getSenders
|
|
6659
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
6657
6660
|
|
|
6658
6661
|
if (sender) {
|
|
6659
6662
|
if (sender.track) {
|
|
@@ -6716,10 +6719,11 @@ class WebRTCClient extends Emitter {
|
|
|
6716
6719
|
// $FlowFixMe
|
|
6717
6720
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
6718
6721
|
const videoTrack = stream.getVideoTracks()[0];
|
|
6719
|
-
let sender = pc && pc.getSenders
|
|
6722
|
+
let sender = pc && pc.getSenders
|
|
6723
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
6720
6724
|
let wasTrackEnabled = false;
|
|
6721
6725
|
if (!sender) {
|
|
6722
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
6726
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
6723
6727
|
}
|
|
6724
6728
|
|
|
6725
6729
|
if (sender) {
|
|
@@ -6377,7 +6377,7 @@ class WebRTCClient extends Emitter {
|
|
|
6377
6377
|
|
|
6378
6378
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
6379
6379
|
} else {
|
|
6380
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
6380
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
6381
6381
|
}
|
|
6382
6382
|
|
|
6383
6383
|
if (!videoSender) {
|
|
@@ -6418,9 +6418,11 @@ class WebRTCClient extends Emitter {
|
|
|
6418
6418
|
const videoTracks = localStream.getVideoTracks();
|
|
6419
6419
|
|
|
6420
6420
|
// Remove video senders
|
|
6421
|
-
pc.getSenders
|
|
6422
|
-
|
|
6423
|
-
|
|
6421
|
+
if (pc.getSenders) {
|
|
6422
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
6423
|
+
videoSender.replaceTrack(null);
|
|
6424
|
+
});
|
|
6425
|
+
}
|
|
6424
6426
|
|
|
6425
6427
|
videoTracks.forEach(videoTrack => {
|
|
6426
6428
|
videoTrack.enabled = false;
|
|
@@ -6653,7 +6655,8 @@ class WebRTCClient extends Emitter {
|
|
|
6653
6655
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
6654
6656
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
6655
6657
|
const audioTrack = stream.getAudioTracks()[0];
|
|
6656
|
-
const sender = pc && pc.getSenders
|
|
6658
|
+
const sender = pc && pc.getSenders
|
|
6659
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
6657
6660
|
|
|
6658
6661
|
if (sender) {
|
|
6659
6662
|
if (sender.track) {
|
|
@@ -6716,10 +6719,11 @@ class WebRTCClient extends Emitter {
|
|
|
6716
6719
|
// $FlowFixMe
|
|
6717
6720
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
6718
6721
|
const videoTrack = stream.getVideoTracks()[0];
|
|
6719
|
-
let sender = pc && pc.getSenders
|
|
6722
|
+
let sender = pc && pc.getSenders
|
|
6723
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
6720
6724
|
let wasTrackEnabled = false;
|
|
6721
6725
|
if (!sender) {
|
|
6722
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
6726
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
6723
6727
|
}
|
|
6724
6728
|
|
|
6725
6729
|
if (sender) {
|
package/lib/domain/Features.js
CHANGED
|
@@ -4951,7 +4951,7 @@ var getApiClient = (forServer = null) => {
|
|
|
4951
4951
|
|
|
4952
4952
|
//
|
|
4953
4953
|
|
|
4954
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
4954
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
4955
4955
|
|
|
4956
4956
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
4957
4957
|
|
|
@@ -4965,6 +4965,7 @@ class Features {
|
|
|
4965
4965
|
|
|
4966
4966
|
|
|
4967
4967
|
|
|
4968
|
+
|
|
4968
4969
|
|
|
4969
4970
|
constructor() {
|
|
4970
4971
|
this._hasChat = true;
|
|
@@ -4973,6 +4974,7 @@ class Features {
|
|
|
4973
4974
|
this._hasFax = true;
|
|
4974
4975
|
this._hasMobileDoubleCall = true;
|
|
4975
4976
|
this._hasMobileGsm = true;
|
|
4977
|
+
this._hasMeeting = true;
|
|
4976
4978
|
}
|
|
4977
4979
|
|
|
4978
4980
|
async fetchAccess() {
|
|
@@ -4993,6 +4995,7 @@ class Features {
|
|
|
4993
4995
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
4994
4996
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
4995
4997
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
4998
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
4996
4999
|
}
|
|
4997
5000
|
|
|
4998
5001
|
hasChat() { return this._hasChat; }
|
|
@@ -5001,6 +5004,7 @@ class Features {
|
|
|
5001
5004
|
hasFax() { return this._hasFax; }
|
|
5002
5005
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
5003
5006
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
5007
|
+
hasMeeting() { return this._hasMeeting; }
|
|
5004
5008
|
|
|
5005
5009
|
_hasFeatures(scopes , featureName ) {
|
|
5006
5010
|
const scopeName = getScopeName(featureName);
|
|
@@ -1405,7 +1405,7 @@ class WebRTCPhone extends Emitter {
|
|
|
1405
1405
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
1406
1406
|
const sipSession = this.currentSipSession;
|
|
1407
1407
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
1408
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
1408
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
1409
1409
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
1410
1410
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
1411
1411
|
const hadVideo = !!videoTrack;
|
|
@@ -1487,7 +1487,7 @@ class WebRTCPhone extends Emitter {
|
|
|
1487
1487
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
1488
1488
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
1489
1489
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
1490
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
1490
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
1491
1491
|
|
|
1492
1492
|
logger.info('WebRTC phone - on screensharing', {
|
|
1493
1493
|
hadVideo,
|
package/lib/index.js
CHANGED
|
@@ -7283,7 +7283,7 @@ class WebRTCClient extends Emitter {
|
|
|
7283
7283
|
|
|
7284
7284
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7285
7285
|
} else {
|
|
7286
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
7286
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
7287
7287
|
}
|
|
7288
7288
|
|
|
7289
7289
|
if (!videoSender) {
|
|
@@ -7324,9 +7324,11 @@ class WebRTCClient extends Emitter {
|
|
|
7324
7324
|
const videoTracks = localStream.getVideoTracks();
|
|
7325
7325
|
|
|
7326
7326
|
// Remove video senders
|
|
7327
|
-
pc.getSenders
|
|
7328
|
-
|
|
7329
|
-
|
|
7327
|
+
if (pc.getSenders) {
|
|
7328
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7329
|
+
videoSender.replaceTrack(null);
|
|
7330
|
+
});
|
|
7331
|
+
}
|
|
7330
7332
|
|
|
7331
7333
|
videoTracks.forEach(videoTrack => {
|
|
7332
7334
|
videoTrack.enabled = false;
|
|
@@ -7559,7 +7561,8 @@ class WebRTCClient extends Emitter {
|
|
|
7559
7561
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7560
7562
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7561
7563
|
const audioTrack = stream.getAudioTracks()[0];
|
|
7562
|
-
const sender = pc && pc.getSenders
|
|
7564
|
+
const sender = pc && pc.getSenders
|
|
7565
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7563
7566
|
|
|
7564
7567
|
if (sender) {
|
|
7565
7568
|
if (sender.track) {
|
|
@@ -7622,10 +7625,11 @@ class WebRTCClient extends Emitter {
|
|
|
7622
7625
|
// $FlowFixMe
|
|
7623
7626
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
7624
7627
|
const videoTrack = stream.getVideoTracks()[0];
|
|
7625
|
-
let sender = pc && pc.getSenders
|
|
7628
|
+
let sender = pc && pc.getSenders
|
|
7629
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
7626
7630
|
let wasTrackEnabled = false;
|
|
7627
7631
|
if (!sender) {
|
|
7628
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
7632
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
7629
7633
|
}
|
|
7630
7634
|
|
|
7631
7635
|
if (sender) {
|
|
@@ -9226,7 +9230,7 @@ var COUNTRIES = {
|
|
|
9226
9230
|
|
|
9227
9231
|
//
|
|
9228
9232
|
|
|
9229
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
9233
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
9230
9234
|
|
|
9231
9235
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
9232
9236
|
|
|
@@ -9240,6 +9244,7 @@ class Features {
|
|
|
9240
9244
|
|
|
9241
9245
|
|
|
9242
9246
|
|
|
9247
|
+
|
|
9243
9248
|
|
|
9244
9249
|
constructor() {
|
|
9245
9250
|
this._hasChat = true;
|
|
@@ -9248,6 +9253,7 @@ class Features {
|
|
|
9248
9253
|
this._hasFax = true;
|
|
9249
9254
|
this._hasMobileDoubleCall = true;
|
|
9250
9255
|
this._hasMobileGsm = true;
|
|
9256
|
+
this._hasMeeting = true;
|
|
9251
9257
|
}
|
|
9252
9258
|
|
|
9253
9259
|
async fetchAccess() {
|
|
@@ -9268,6 +9274,7 @@ class Features {
|
|
|
9268
9274
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
9269
9275
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
9270
9276
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
9277
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
9271
9278
|
}
|
|
9272
9279
|
|
|
9273
9280
|
hasChat() { return this._hasChat; }
|
|
@@ -9276,6 +9283,7 @@ class Features {
|
|
|
9276
9283
|
hasFax() { return this._hasFax; }
|
|
9277
9284
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
9278
9285
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
9286
|
+
hasMeeting() { return this._hasMeeting; }
|
|
9279
9287
|
|
|
9280
9288
|
_hasFeatures(scopes , featureName ) {
|
|
9281
9289
|
const scopeName = getScopeName(featureName);
|
|
@@ -10063,7 +10071,7 @@ class WebRTCPhone extends Emitter {
|
|
|
10063
10071
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
10064
10072
|
const sipSession = this.currentSipSession;
|
|
10065
10073
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
10066
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
10074
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
10067
10075
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
10068
10076
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
10069
10077
|
const hadVideo = !!videoTrack;
|
|
@@ -10145,7 +10153,7 @@ class WebRTCPhone extends Emitter {
|
|
|
10145
10153
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
10146
10154
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
10147
10155
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
10148
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
10156
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
10149
10157
|
|
|
10150
10158
|
logger$7.info('WebRTC phone - on screensharing', {
|
|
10151
10159
|
hadVideo,
|
package/lib/simple/Auth.js
CHANGED
|
@@ -7462,7 +7462,7 @@ class WebRTCClient extends Emitter {
|
|
|
7462
7462
|
|
|
7463
7463
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7464
7464
|
} else {
|
|
7465
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
7465
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
7466
7466
|
}
|
|
7467
7467
|
|
|
7468
7468
|
if (!videoSender) {
|
|
@@ -7503,9 +7503,11 @@ class WebRTCClient extends Emitter {
|
|
|
7503
7503
|
const videoTracks = localStream.getVideoTracks();
|
|
7504
7504
|
|
|
7505
7505
|
// Remove video senders
|
|
7506
|
-
pc.getSenders
|
|
7507
|
-
|
|
7508
|
-
|
|
7506
|
+
if (pc.getSenders) {
|
|
7507
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7508
|
+
videoSender.replaceTrack(null);
|
|
7509
|
+
});
|
|
7510
|
+
}
|
|
7509
7511
|
|
|
7510
7512
|
videoTracks.forEach(videoTrack => {
|
|
7511
7513
|
videoTrack.enabled = false;
|
|
@@ -7738,7 +7740,8 @@ class WebRTCClient extends Emitter {
|
|
|
7738
7740
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7739
7741
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7740
7742
|
const audioTrack = stream.getAudioTracks()[0];
|
|
7741
|
-
const sender = pc && pc.getSenders
|
|
7743
|
+
const sender = pc && pc.getSenders
|
|
7744
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7742
7745
|
|
|
7743
7746
|
if (sender) {
|
|
7744
7747
|
if (sender.track) {
|
|
@@ -7801,10 +7804,11 @@ class WebRTCClient extends Emitter {
|
|
|
7801
7804
|
// $FlowFixMe
|
|
7802
7805
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
7803
7806
|
const videoTrack = stream.getVideoTracks()[0];
|
|
7804
|
-
let sender = pc && pc.getSenders
|
|
7807
|
+
let sender = pc && pc.getSenders
|
|
7808
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
7805
7809
|
let wasTrackEnabled = false;
|
|
7806
7810
|
if (!sender) {
|
|
7807
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
7811
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
7808
7812
|
}
|
|
7809
7813
|
|
|
7810
7814
|
if (sender) {
|
|
@@ -9338,7 +9342,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9338
9342
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
9339
9343
|
const sipSession = this.currentSipSession;
|
|
9340
9344
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
9341
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9345
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9342
9346
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
9343
9347
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
9344
9348
|
const hadVideo = !!videoTrack;
|
|
@@ -9420,7 +9424,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9420
9424
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
9421
9425
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
9422
9426
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
9423
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9427
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9424
9428
|
|
|
9425
9429
|
logger$8.info('WebRTC phone - on screensharing', {
|
|
9426
9430
|
hadVideo,
|
|
@@ -13401,7 +13405,7 @@ SwitchboardCall.STATE = {
|
|
|
13401
13405
|
|
|
13402
13406
|
//
|
|
13403
13407
|
|
|
13404
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
13408
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
13405
13409
|
|
|
13406
13410
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
13407
13411
|
|
|
@@ -13415,6 +13419,7 @@ class Features {
|
|
|
13415
13419
|
|
|
13416
13420
|
|
|
13417
13421
|
|
|
13422
|
+
|
|
13418
13423
|
|
|
13419
13424
|
constructor() {
|
|
13420
13425
|
this._hasChat = true;
|
|
@@ -13423,6 +13428,7 @@ class Features {
|
|
|
13423
13428
|
this._hasFax = true;
|
|
13424
13429
|
this._hasMobileDoubleCall = true;
|
|
13425
13430
|
this._hasMobileGsm = true;
|
|
13431
|
+
this._hasMeeting = true;
|
|
13426
13432
|
}
|
|
13427
13433
|
|
|
13428
13434
|
async fetchAccess() {
|
|
@@ -13443,6 +13449,7 @@ class Features {
|
|
|
13443
13449
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
13444
13450
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
13445
13451
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
13452
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
13446
13453
|
}
|
|
13447
13454
|
|
|
13448
13455
|
hasChat() { return this._hasChat; }
|
|
@@ -13451,6 +13458,7 @@ class Features {
|
|
|
13451
13458
|
hasFax() { return this._hasFax; }
|
|
13452
13459
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
13453
13460
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
13461
|
+
hasMeeting() { return this._hasMeeting; }
|
|
13454
13462
|
|
|
13455
13463
|
_hasFeatures(scopes , featureName ) {
|
|
13456
13464
|
const scopeName = getScopeName(featureName);
|
|
@@ -7460,7 +7460,7 @@ class WebRTCClient extends Emitter {
|
|
|
7460
7460
|
|
|
7461
7461
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7462
7462
|
} else {
|
|
7463
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
7463
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
7464
7464
|
}
|
|
7465
7465
|
|
|
7466
7466
|
if (!videoSender) {
|
|
@@ -7501,9 +7501,11 @@ class WebRTCClient extends Emitter {
|
|
|
7501
7501
|
const videoTracks = localStream.getVideoTracks();
|
|
7502
7502
|
|
|
7503
7503
|
// Remove video senders
|
|
7504
|
-
pc.getSenders
|
|
7505
|
-
|
|
7506
|
-
|
|
7504
|
+
if (pc.getSenders) {
|
|
7505
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7506
|
+
videoSender.replaceTrack(null);
|
|
7507
|
+
});
|
|
7508
|
+
}
|
|
7507
7509
|
|
|
7508
7510
|
videoTracks.forEach(videoTrack => {
|
|
7509
7511
|
videoTrack.enabled = false;
|
|
@@ -7736,7 +7738,8 @@ class WebRTCClient extends Emitter {
|
|
|
7736
7738
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
7737
7739
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
7738
7740
|
const audioTrack = stream.getAudioTracks()[0];
|
|
7739
|
-
const sender = pc && pc.getSenders
|
|
7741
|
+
const sender = pc && pc.getSenders
|
|
7742
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
7740
7743
|
|
|
7741
7744
|
if (sender) {
|
|
7742
7745
|
if (sender.track) {
|
|
@@ -7799,10 +7802,11 @@ class WebRTCClient extends Emitter {
|
|
|
7799
7802
|
// $FlowFixMe
|
|
7800
7803
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
7801
7804
|
const videoTrack = stream.getVideoTracks()[0];
|
|
7802
|
-
let sender = pc && pc.getSenders
|
|
7805
|
+
let sender = pc && pc.getSenders
|
|
7806
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
7803
7807
|
let wasTrackEnabled = false;
|
|
7804
7808
|
if (!sender) {
|
|
7805
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
7809
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
7806
7810
|
}
|
|
7807
7811
|
|
|
7808
7812
|
if (sender) {
|
|
@@ -9336,7 +9340,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9336
9340
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
9337
9341
|
const sipSession = this.currentSipSession;
|
|
9338
9342
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
9339
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9343
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9340
9344
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
9341
9345
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
9342
9346
|
const hadVideo = !!videoTrack;
|
|
@@ -9418,7 +9422,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9418
9422
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
9419
9423
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
9420
9424
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
9421
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9425
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9422
9426
|
|
|
9423
9427
|
logger$8.info('WebRTC phone - on screensharing', {
|
|
9424
9428
|
hadVideo,
|
|
@@ -13382,7 +13386,7 @@ SwitchboardCall.STATE = {
|
|
|
13382
13386
|
|
|
13383
13387
|
//
|
|
13384
13388
|
|
|
13385
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
13389
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
13386
13390
|
|
|
13387
13391
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
13388
13392
|
|
|
@@ -13396,6 +13400,7 @@ class Features {
|
|
|
13396
13400
|
|
|
13397
13401
|
|
|
13398
13402
|
|
|
13403
|
+
|
|
13399
13404
|
|
|
13400
13405
|
constructor() {
|
|
13401
13406
|
this._hasChat = true;
|
|
@@ -13404,6 +13409,7 @@ class Features {
|
|
|
13404
13409
|
this._hasFax = true;
|
|
13405
13410
|
this._hasMobileDoubleCall = true;
|
|
13406
13411
|
this._hasMobileGsm = true;
|
|
13412
|
+
this._hasMeeting = true;
|
|
13407
13413
|
}
|
|
13408
13414
|
|
|
13409
13415
|
async fetchAccess() {
|
|
@@ -13424,6 +13430,7 @@ class Features {
|
|
|
13424
13430
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
13425
13431
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
13426
13432
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
13433
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
13427
13434
|
}
|
|
13428
13435
|
|
|
13429
13436
|
hasChat() { return this._hasChat; }
|
|
@@ -13432,6 +13439,7 @@ class Features {
|
|
|
13432
13439
|
hasFax() { return this._hasFax; }
|
|
13433
13440
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
13434
13441
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
13442
|
+
hasMeeting() { return this._hasMeeting; }
|
|
13435
13443
|
|
|
13436
13444
|
_hasFeatures(scopes , featureName ) {
|
|
13437
13445
|
const scopeName = getScopeName(featureName);
|