@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/simple/Phone.js
CHANGED
|
@@ -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,
|
|
@@ -13320,7 +13324,7 @@ SwitchboardCall.STATE = {
|
|
|
13320
13324
|
|
|
13321
13325
|
//
|
|
13322
13326
|
|
|
13323
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
13327
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
13324
13328
|
|
|
13325
13329
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
13326
13330
|
|
|
@@ -13334,6 +13338,7 @@ class Features {
|
|
|
13334
13338
|
|
|
13335
13339
|
|
|
13336
13340
|
|
|
13341
|
+
|
|
13337
13342
|
|
|
13338
13343
|
constructor() {
|
|
13339
13344
|
this._hasChat = true;
|
|
@@ -13342,6 +13347,7 @@ class Features {
|
|
|
13342
13347
|
this._hasFax = true;
|
|
13343
13348
|
this._hasMobileDoubleCall = true;
|
|
13344
13349
|
this._hasMobileGsm = true;
|
|
13350
|
+
this._hasMeeting = true;
|
|
13345
13351
|
}
|
|
13346
13352
|
|
|
13347
13353
|
async fetchAccess() {
|
|
@@ -13362,6 +13368,7 @@ class Features {
|
|
|
13362
13368
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
13363
13369
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
13364
13370
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
13371
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
13365
13372
|
}
|
|
13366
13373
|
|
|
13367
13374
|
hasChat() { return this._hasChat; }
|
|
@@ -13370,6 +13377,7 @@ class Features {
|
|
|
13370
13377
|
hasFax() { return this._hasFax; }
|
|
13371
13378
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
13372
13379
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
13380
|
+
hasMeeting() { return this._hasMeeting; }
|
|
13373
13381
|
|
|
13374
13382
|
_hasFeatures(scopes , featureName ) {
|
|
13375
13383
|
const scopeName = getScopeName(featureName);
|
package/lib/simple/index.js
CHANGED
|
@@ -7791,7 +7791,7 @@ class WebRTCClient extends Emitter {
|
|
|
7791
7791
|
|
|
7792
7792
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7793
7793
|
} else {
|
|
7794
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
7794
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
7795
7795
|
}
|
|
7796
7796
|
|
|
7797
7797
|
if (!videoSender) {
|
|
@@ -7832,9 +7832,11 @@ class WebRTCClient extends Emitter {
|
|
|
7832
7832
|
const videoTracks = localStream.getVideoTracks();
|
|
7833
7833
|
|
|
7834
7834
|
// Remove video senders
|
|
7835
|
-
pc.getSenders
|
|
7836
|
-
|
|
7837
|
-
|
|
7835
|
+
if (pc.getSenders) {
|
|
7836
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7837
|
+
videoSender.replaceTrack(null);
|
|
7838
|
+
});
|
|
7839
|
+
}
|
|
7838
7840
|
|
|
7839
7841
|
videoTracks.forEach(videoTrack => {
|
|
7840
7842
|
videoTrack.enabled = false;
|
|
@@ -8067,7 +8069,8 @@ class WebRTCClient extends Emitter {
|
|
|
8067
8069
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
8068
8070
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
8069
8071
|
const audioTrack = stream.getAudioTracks()[0];
|
|
8070
|
-
const sender = pc && pc.getSenders
|
|
8072
|
+
const sender = pc && pc.getSenders
|
|
8073
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
8071
8074
|
|
|
8072
8075
|
if (sender) {
|
|
8073
8076
|
if (sender.track) {
|
|
@@ -8130,10 +8133,11 @@ class WebRTCClient extends Emitter {
|
|
|
8130
8133
|
// $FlowFixMe
|
|
8131
8134
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
8132
8135
|
const videoTrack = stream.getVideoTracks()[0];
|
|
8133
|
-
let sender = pc && pc.getSenders
|
|
8136
|
+
let sender = pc && pc.getSenders
|
|
8137
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
8134
8138
|
let wasTrackEnabled = false;
|
|
8135
8139
|
if (!sender) {
|
|
8136
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
8140
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
8137
8141
|
}
|
|
8138
8142
|
|
|
8139
8143
|
if (sender) {
|
|
@@ -9667,7 +9671,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9667
9671
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
9668
9672
|
const sipSession = this.currentSipSession;
|
|
9669
9673
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
9670
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9674
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9671
9675
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
9672
9676
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
9673
9677
|
const hadVideo = !!videoTrack;
|
|
@@ -9749,7 +9753,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9749
9753
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
9750
9754
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
9751
9755
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
9752
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9756
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9753
9757
|
|
|
9754
9758
|
logger$7.info('WebRTC phone - on screensharing', {
|
|
9755
9759
|
hadVideo,
|
|
@@ -13730,7 +13734,7 @@ SwitchboardCall.STATE = {
|
|
|
13730
13734
|
|
|
13731
13735
|
//
|
|
13732
13736
|
|
|
13733
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
13737
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
13734
13738
|
|
|
13735
13739
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
13736
13740
|
|
|
@@ -13744,6 +13748,7 @@ class Features {
|
|
|
13744
13748
|
|
|
13745
13749
|
|
|
13746
13750
|
|
|
13751
|
+
|
|
13747
13752
|
|
|
13748
13753
|
constructor() {
|
|
13749
13754
|
this._hasChat = true;
|
|
@@ -13752,6 +13757,7 @@ class Features {
|
|
|
13752
13757
|
this._hasFax = true;
|
|
13753
13758
|
this._hasMobileDoubleCall = true;
|
|
13754
13759
|
this._hasMobileGsm = true;
|
|
13760
|
+
this._hasMeeting = true;
|
|
13755
13761
|
}
|
|
13756
13762
|
|
|
13757
13763
|
async fetchAccess() {
|
|
@@ -13772,6 +13778,7 @@ class Features {
|
|
|
13772
13778
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
13773
13779
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
13774
13780
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
13781
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
13775
13782
|
}
|
|
13776
13783
|
|
|
13777
13784
|
hasChat() { return this._hasChat; }
|
|
@@ -13780,6 +13787,7 @@ class Features {
|
|
|
13780
13787
|
hasFax() { return this._hasFax; }
|
|
13781
13788
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
13782
13789
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
13790
|
+
hasMeeting() { return this._hasMeeting; }
|
|
13783
13791
|
|
|
13784
13792
|
_hasFeatures(scopes , featureName ) {
|
|
13785
13793
|
const scopeName = getScopeName(featureName);
|
|
@@ -7791,7 +7791,7 @@ class WebRTCClient extends Emitter {
|
|
|
7791
7791
|
|
|
7792
7792
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7793
7793
|
} else {
|
|
7794
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
7794
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
7795
7795
|
}
|
|
7796
7796
|
|
|
7797
7797
|
if (!videoSender) {
|
|
@@ -7832,9 +7832,11 @@ class WebRTCClient extends Emitter {
|
|
|
7832
7832
|
const videoTracks = localStream.getVideoTracks();
|
|
7833
7833
|
|
|
7834
7834
|
// Remove video senders
|
|
7835
|
-
pc.getSenders
|
|
7836
|
-
|
|
7837
|
-
|
|
7835
|
+
if (pc.getSenders) {
|
|
7836
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7837
|
+
videoSender.replaceTrack(null);
|
|
7838
|
+
});
|
|
7839
|
+
}
|
|
7838
7840
|
|
|
7839
7841
|
videoTracks.forEach(videoTrack => {
|
|
7840
7842
|
videoTrack.enabled = false;
|
|
@@ -8067,7 +8069,8 @@ class WebRTCClient extends Emitter {
|
|
|
8067
8069
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
8068
8070
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
8069
8071
|
const audioTrack = stream.getAudioTracks()[0];
|
|
8070
|
-
const sender = pc && pc.getSenders
|
|
8072
|
+
const sender = pc && pc.getSenders
|
|
8073
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
8071
8074
|
|
|
8072
8075
|
if (sender) {
|
|
8073
8076
|
if (sender.track) {
|
|
@@ -8130,10 +8133,11 @@ class WebRTCClient extends Emitter {
|
|
|
8130
8133
|
// $FlowFixMe
|
|
8131
8134
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
8132
8135
|
const videoTrack = stream.getVideoTracks()[0];
|
|
8133
|
-
let sender = pc && pc.getSenders
|
|
8136
|
+
let sender = pc && pc.getSenders
|
|
8137
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
8134
8138
|
let wasTrackEnabled = false;
|
|
8135
8139
|
if (!sender) {
|
|
8136
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
8140
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
8137
8141
|
}
|
|
8138
8142
|
|
|
8139
8143
|
if (sender) {
|
|
@@ -9667,7 +9671,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9667
9671
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
9668
9672
|
const sipSession = this.currentSipSession;
|
|
9669
9673
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
9670
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9674
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9671
9675
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
9672
9676
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
9673
9677
|
const hadVideo = !!videoTrack;
|
|
@@ -9749,7 +9753,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9749
9753
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
9750
9754
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
9751
9755
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
9752
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9756
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9753
9757
|
|
|
9754
9758
|
logger$7.info('WebRTC phone - on screensharing', {
|
|
9755
9759
|
hadVideo,
|
|
@@ -12560,7 +12564,7 @@ SwitchboardCall.STATE = {
|
|
|
12560
12564
|
|
|
12561
12565
|
//
|
|
12562
12566
|
|
|
12563
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
12567
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
12564
12568
|
|
|
12565
12569
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
12566
12570
|
|
|
@@ -12574,6 +12578,7 @@ class Features {
|
|
|
12574
12578
|
|
|
12575
12579
|
|
|
12576
12580
|
|
|
12581
|
+
|
|
12577
12582
|
|
|
12578
12583
|
constructor() {
|
|
12579
12584
|
this._hasChat = true;
|
|
@@ -12582,6 +12587,7 @@ class Features {
|
|
|
12582
12587
|
this._hasFax = true;
|
|
12583
12588
|
this._hasMobileDoubleCall = true;
|
|
12584
12589
|
this._hasMobileGsm = true;
|
|
12590
|
+
this._hasMeeting = true;
|
|
12585
12591
|
}
|
|
12586
12592
|
|
|
12587
12593
|
async fetchAccess() {
|
|
@@ -12602,6 +12608,7 @@ class Features {
|
|
|
12602
12608
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
12603
12609
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
12604
12610
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
12611
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
12605
12612
|
}
|
|
12606
12613
|
|
|
12607
12614
|
hasChat() { return this._hasChat; }
|
|
@@ -12610,6 +12617,7 @@ class Features {
|
|
|
12610
12617
|
hasFax() { return this._hasFax; }
|
|
12611
12618
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
12612
12619
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
12620
|
+
hasMeeting() { return this._hasMeeting; }
|
|
12613
12621
|
|
|
12614
12622
|
_hasFeatures(scopes , featureName ) {
|
|
12615
12623
|
const scopeName = getScopeName(featureName);
|
|
@@ -7791,7 +7791,7 @@ class WebRTCClient extends Emitter {
|
|
|
7791
7791
|
|
|
7792
7792
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7793
7793
|
} else {
|
|
7794
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
7794
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
7795
7795
|
}
|
|
7796
7796
|
|
|
7797
7797
|
if (!videoSender) {
|
|
@@ -7832,9 +7832,11 @@ class WebRTCClient extends Emitter {
|
|
|
7832
7832
|
const videoTracks = localStream.getVideoTracks();
|
|
7833
7833
|
|
|
7834
7834
|
// Remove video senders
|
|
7835
|
-
pc.getSenders
|
|
7836
|
-
|
|
7837
|
-
|
|
7835
|
+
if (pc.getSenders) {
|
|
7836
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7837
|
+
videoSender.replaceTrack(null);
|
|
7838
|
+
});
|
|
7839
|
+
}
|
|
7838
7840
|
|
|
7839
7841
|
videoTracks.forEach(videoTrack => {
|
|
7840
7842
|
videoTrack.enabled = false;
|
|
@@ -8067,7 +8069,8 @@ class WebRTCClient extends Emitter {
|
|
|
8067
8069
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
8068
8070
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
8069
8071
|
const audioTrack = stream.getAudioTracks()[0];
|
|
8070
|
-
const sender = pc && pc.getSenders
|
|
8072
|
+
const sender = pc && pc.getSenders
|
|
8073
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
8071
8074
|
|
|
8072
8075
|
if (sender) {
|
|
8073
8076
|
if (sender.track) {
|
|
@@ -8130,10 +8133,11 @@ class WebRTCClient extends Emitter {
|
|
|
8130
8133
|
// $FlowFixMe
|
|
8131
8134
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
8132
8135
|
const videoTrack = stream.getVideoTracks()[0];
|
|
8133
|
-
let sender = pc && pc.getSenders
|
|
8136
|
+
let sender = pc && pc.getSenders
|
|
8137
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
8134
8138
|
let wasTrackEnabled = false;
|
|
8135
8139
|
if (!sender) {
|
|
8136
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
8140
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
8137
8141
|
}
|
|
8138
8142
|
|
|
8139
8143
|
if (sender) {
|
|
@@ -9667,7 +9671,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9667
9671
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
9668
9672
|
const sipSession = this.currentSipSession;
|
|
9669
9673
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
9670
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9674
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9671
9675
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
9672
9676
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
9673
9677
|
const hadVideo = !!videoTrack;
|
|
@@ -9749,7 +9753,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9749
9753
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
9750
9754
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
9751
9755
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
9752
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9756
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9753
9757
|
|
|
9754
9758
|
logger$7.info('WebRTC phone - on screensharing', {
|
|
9755
9759
|
hadVideo,
|
|
@@ -12565,7 +12569,7 @@ SwitchboardCall.STATE = {
|
|
|
12565
12569
|
|
|
12566
12570
|
//
|
|
12567
12571
|
|
|
12568
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
12572
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
12569
12573
|
|
|
12570
12574
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
12571
12575
|
|
|
@@ -12579,6 +12583,7 @@ class Features {
|
|
|
12579
12583
|
|
|
12580
12584
|
|
|
12581
12585
|
|
|
12586
|
+
|
|
12582
12587
|
|
|
12583
12588
|
constructor() {
|
|
12584
12589
|
this._hasChat = true;
|
|
@@ -12587,6 +12592,7 @@ class Features {
|
|
|
12587
12592
|
this._hasFax = true;
|
|
12588
12593
|
this._hasMobileDoubleCall = true;
|
|
12589
12594
|
this._hasMobileGsm = true;
|
|
12595
|
+
this._hasMeeting = true;
|
|
12590
12596
|
}
|
|
12591
12597
|
|
|
12592
12598
|
async fetchAccess() {
|
|
@@ -12607,6 +12613,7 @@ class Features {
|
|
|
12607
12613
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
12608
12614
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
12609
12615
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
12616
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
12610
12617
|
}
|
|
12611
12618
|
|
|
12612
12619
|
hasChat() { return this._hasChat; }
|
|
@@ -12615,6 +12622,7 @@ class Features {
|
|
|
12615
12622
|
hasFax() { return this._hasFax; }
|
|
12616
12623
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
12617
12624
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
12625
|
+
hasMeeting() { return this._hasMeeting; }
|
|
12618
12626
|
|
|
12619
12627
|
_hasFeatures(scopes , featureName ) {
|
|
12620
12628
|
const scopeName = getScopeName(featureName);
|
|
@@ -7791,7 +7791,7 @@ class WebRTCClient extends Emitter {
|
|
|
7791
7791
|
|
|
7792
7792
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7793
7793
|
} else {
|
|
7794
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
7794
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
7795
7795
|
}
|
|
7796
7796
|
|
|
7797
7797
|
if (!videoSender) {
|
|
@@ -7832,9 +7832,11 @@ class WebRTCClient extends Emitter {
|
|
|
7832
7832
|
const videoTracks = localStream.getVideoTracks();
|
|
7833
7833
|
|
|
7834
7834
|
// Remove video senders
|
|
7835
|
-
pc.getSenders
|
|
7836
|
-
|
|
7837
|
-
|
|
7835
|
+
if (pc.getSenders) {
|
|
7836
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7837
|
+
videoSender.replaceTrack(null);
|
|
7838
|
+
});
|
|
7839
|
+
}
|
|
7838
7840
|
|
|
7839
7841
|
videoTracks.forEach(videoTrack => {
|
|
7840
7842
|
videoTrack.enabled = false;
|
|
@@ -8067,7 +8069,8 @@ class WebRTCClient extends Emitter {
|
|
|
8067
8069
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
8068
8070
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
8069
8071
|
const audioTrack = stream.getAudioTracks()[0];
|
|
8070
|
-
const sender = pc && pc.getSenders
|
|
8072
|
+
const sender = pc && pc.getSenders
|
|
8073
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
8071
8074
|
|
|
8072
8075
|
if (sender) {
|
|
8073
8076
|
if (sender.track) {
|
|
@@ -8130,10 +8133,11 @@ class WebRTCClient extends Emitter {
|
|
|
8130
8133
|
// $FlowFixMe
|
|
8131
8134
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
8132
8135
|
const videoTrack = stream.getVideoTracks()[0];
|
|
8133
|
-
let sender = pc && pc.getSenders
|
|
8136
|
+
let sender = pc && pc.getSenders
|
|
8137
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
8134
8138
|
let wasTrackEnabled = false;
|
|
8135
8139
|
if (!sender) {
|
|
8136
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
8140
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
8137
8141
|
}
|
|
8138
8142
|
|
|
8139
8143
|
if (sender) {
|
|
@@ -9667,7 +9671,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9667
9671
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
9668
9672
|
const sipSession = this.currentSipSession;
|
|
9669
9673
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
9670
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9674
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9671
9675
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
9672
9676
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
9673
9677
|
const hadVideo = !!videoTrack;
|
|
@@ -9749,7 +9753,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9749
9753
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
9750
9754
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
9751
9755
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
9752
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9756
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9753
9757
|
|
|
9754
9758
|
logger$7.info('WebRTC phone - on screensharing', {
|
|
9755
9759
|
hadVideo,
|
|
@@ -12883,7 +12887,7 @@ SwitchboardCall.STATE = {
|
|
|
12883
12887
|
|
|
12884
12888
|
//
|
|
12885
12889
|
|
|
12886
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
12890
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
12887
12891
|
|
|
12888
12892
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
12889
12893
|
|
|
@@ -12897,6 +12901,7 @@ class Features {
|
|
|
12897
12901
|
|
|
12898
12902
|
|
|
12899
12903
|
|
|
12904
|
+
|
|
12900
12905
|
|
|
12901
12906
|
constructor() {
|
|
12902
12907
|
this._hasChat = true;
|
|
@@ -12905,6 +12910,7 @@ class Features {
|
|
|
12905
12910
|
this._hasFax = true;
|
|
12906
12911
|
this._hasMobileDoubleCall = true;
|
|
12907
12912
|
this._hasMobileGsm = true;
|
|
12913
|
+
this._hasMeeting = true;
|
|
12908
12914
|
}
|
|
12909
12915
|
|
|
12910
12916
|
async fetchAccess() {
|
|
@@ -12925,6 +12931,7 @@ class Features {
|
|
|
12925
12931
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
12926
12932
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
12927
12933
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
12934
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
12928
12935
|
}
|
|
12929
12936
|
|
|
12930
12937
|
hasChat() { return this._hasChat; }
|
|
@@ -12933,6 +12940,7 @@ class Features {
|
|
|
12933
12940
|
hasFax() { return this._hasFax; }
|
|
12934
12941
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
12935
12942
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
12943
|
+
hasMeeting() { return this._hasMeeting; }
|
|
12936
12944
|
|
|
12937
12945
|
_hasFeatures(scopes , featureName ) {
|
|
12938
12946
|
const scopeName = getScopeName(featureName);
|
package/lib/simple/room/Room.js
CHANGED
|
@@ -7793,7 +7793,7 @@ class WebRTCClient extends Emitter {
|
|
|
7793
7793
|
|
|
7794
7794
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
7795
7795
|
} else {
|
|
7796
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
7796
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
7797
7797
|
}
|
|
7798
7798
|
|
|
7799
7799
|
if (!videoSender) {
|
|
@@ -7834,9 +7834,11 @@ class WebRTCClient extends Emitter {
|
|
|
7834
7834
|
const videoTracks = localStream.getVideoTracks();
|
|
7835
7835
|
|
|
7836
7836
|
// Remove video senders
|
|
7837
|
-
pc.getSenders
|
|
7838
|
-
|
|
7839
|
-
|
|
7837
|
+
if (pc.getSenders) {
|
|
7838
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
7839
|
+
videoSender.replaceTrack(null);
|
|
7840
|
+
});
|
|
7841
|
+
}
|
|
7840
7842
|
|
|
7841
7843
|
videoTracks.forEach(videoTrack => {
|
|
7842
7844
|
videoTrack.enabled = false;
|
|
@@ -8069,7 +8071,8 @@ class WebRTCClient extends Emitter {
|
|
|
8069
8071
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
8070
8072
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
8071
8073
|
const audioTrack = stream.getAudioTracks()[0];
|
|
8072
|
-
const sender = pc && pc.getSenders
|
|
8074
|
+
const sender = pc && pc.getSenders
|
|
8075
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
8073
8076
|
|
|
8074
8077
|
if (sender) {
|
|
8075
8078
|
if (sender.track) {
|
|
@@ -8132,10 +8135,11 @@ class WebRTCClient extends Emitter {
|
|
|
8132
8135
|
// $FlowFixMe
|
|
8133
8136
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
8134
8137
|
const videoTrack = stream.getVideoTracks()[0];
|
|
8135
|
-
let sender = pc && pc.getSenders
|
|
8138
|
+
let sender = pc && pc.getSenders
|
|
8139
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
8136
8140
|
let wasTrackEnabled = false;
|
|
8137
8141
|
if (!sender) {
|
|
8138
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
8142
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
8139
8143
|
}
|
|
8140
8144
|
|
|
8141
8145
|
if (sender) {
|
|
@@ -9669,7 +9673,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9669
9673
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
9670
9674
|
const sipSession = this.currentSipSession;
|
|
9671
9675
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
9672
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9676
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9673
9677
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
9674
9678
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
9675
9679
|
const hadVideo = !!videoTrack;
|
|
@@ -9751,7 +9755,7 @@ class WebRTCPhone extends Emitter {
|
|
|
9751
9755
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
9752
9756
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
9753
9757
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
9754
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9758
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
9755
9759
|
|
|
9756
9760
|
logger$7.info('WebRTC phone - on screensharing', {
|
|
9757
9761
|
hadVideo,
|
|
@@ -12896,7 +12900,7 @@ SwitchboardCall.STATE = {
|
|
|
12896
12900
|
|
|
12897
12901
|
//
|
|
12898
12902
|
|
|
12899
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
12903
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
12900
12904
|
|
|
12901
12905
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
12902
12906
|
|
|
@@ -12910,6 +12914,7 @@ class Features {
|
|
|
12910
12914
|
|
|
12911
12915
|
|
|
12912
12916
|
|
|
12917
|
+
|
|
12913
12918
|
|
|
12914
12919
|
constructor() {
|
|
12915
12920
|
this._hasChat = true;
|
|
@@ -12918,6 +12923,7 @@ class Features {
|
|
|
12918
12923
|
this._hasFax = true;
|
|
12919
12924
|
this._hasMobileDoubleCall = true;
|
|
12920
12925
|
this._hasMobileGsm = true;
|
|
12926
|
+
this._hasMeeting = true;
|
|
12921
12927
|
}
|
|
12922
12928
|
|
|
12923
12929
|
async fetchAccess() {
|
|
@@ -12938,6 +12944,7 @@ class Features {
|
|
|
12938
12944
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
12939
12945
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
12940
12946
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
12947
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
12941
12948
|
}
|
|
12942
12949
|
|
|
12943
12950
|
hasChat() { return this._hasChat; }
|
|
@@ -12946,6 +12953,7 @@ class Features {
|
|
|
12946
12953
|
hasFax() { return this._hasFax; }
|
|
12947
12954
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
12948
12955
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
12956
|
+
hasMeeting() { return this._hasMeeting; }
|
|
12949
12957
|
|
|
12950
12958
|
_hasFeatures(scopes , featureName ) {
|
|
12951
12959
|
const scopeName = getScopeName(featureName);
|