@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
|
@@ -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,
|
|
@@ -13591,7 +13595,7 @@ SwitchboardCall.STATE = {
|
|
|
13591
13595
|
|
|
13592
13596
|
//
|
|
13593
13597
|
|
|
13594
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
13598
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
13595
13599
|
|
|
13596
13600
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
13597
13601
|
|
|
@@ -13605,6 +13609,7 @@ class Features {
|
|
|
13605
13609
|
|
|
13606
13610
|
|
|
13607
13611
|
|
|
13612
|
+
|
|
13608
13613
|
|
|
13609
13614
|
constructor() {
|
|
13610
13615
|
this._hasChat = true;
|
|
@@ -13613,6 +13618,7 @@ class Features {
|
|
|
13613
13618
|
this._hasFax = true;
|
|
13614
13619
|
this._hasMobileDoubleCall = true;
|
|
13615
13620
|
this._hasMobileGsm = true;
|
|
13621
|
+
this._hasMeeting = true;
|
|
13616
13622
|
}
|
|
13617
13623
|
|
|
13618
13624
|
async fetchAccess() {
|
|
@@ -13633,6 +13639,7 @@ class Features {
|
|
|
13633
13639
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
13634
13640
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
13635
13641
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
13642
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
13636
13643
|
}
|
|
13637
13644
|
|
|
13638
13645
|
hasChat() { return this._hasChat; }
|
|
@@ -13641,6 +13648,7 @@ class Features {
|
|
|
13641
13648
|
hasFax() { return this._hasFax; }
|
|
13642
13649
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
13643
13650
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
13651
|
+
hasMeeting() { return this._hasMeeting; }
|
|
13644
13652
|
|
|
13645
13653
|
_hasFeatures(scopes , featureName ) {
|
|
13646
13654
|
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,
|
|
@@ -13672,7 +13676,7 @@ SwitchboardCall.STATE = {
|
|
|
13672
13676
|
|
|
13673
13677
|
//
|
|
13674
13678
|
|
|
13675
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
13679
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
13676
13680
|
|
|
13677
13681
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
13678
13682
|
|
|
@@ -13686,6 +13690,7 @@ class Features {
|
|
|
13686
13690
|
|
|
13687
13691
|
|
|
13688
13692
|
|
|
13693
|
+
|
|
13689
13694
|
|
|
13690
13695
|
constructor() {
|
|
13691
13696
|
this._hasChat = true;
|
|
@@ -13694,6 +13699,7 @@ class Features {
|
|
|
13694
13699
|
this._hasFax = true;
|
|
13695
13700
|
this._hasMobileDoubleCall = true;
|
|
13696
13701
|
this._hasMobileGsm = true;
|
|
13702
|
+
this._hasMeeting = true;
|
|
13697
13703
|
}
|
|
13698
13704
|
|
|
13699
13705
|
async fetchAccess() {
|
|
@@ -13714,6 +13720,7 @@ class Features {
|
|
|
13714
13720
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
13715
13721
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
13716
13722
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
13723
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
13717
13724
|
}
|
|
13718
13725
|
|
|
13719
13726
|
hasChat() { return this._hasChat; }
|
|
@@ -13722,6 +13729,7 @@ class Features {
|
|
|
13722
13729
|
hasFax() { return this._hasFax; }
|
|
13723
13730
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
13724
13731
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
13732
|
+
hasMeeting() { return this._hasMeeting; }
|
|
13725
13733
|
|
|
13726
13734
|
_hasFeatures(scopes , featureName ) {
|
|
13727
13735
|
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,
|
|
@@ -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,
|
|
@@ -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);
|
package/lib/simple/utils.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,
|
|
@@ -13716,7 +13720,7 @@ SwitchboardCall.STATE = {
|
|
|
13716
13720
|
|
|
13717
13721
|
//
|
|
13718
13722
|
|
|
13719
|
-
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
13723
|
+
const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
13720
13724
|
|
|
13721
13725
|
const getScopeName = (featureName ) => `enterprise.app.${featureName}`;
|
|
13722
13726
|
|
|
@@ -13730,6 +13734,7 @@ class Features {
|
|
|
13730
13734
|
|
|
13731
13735
|
|
|
13732
13736
|
|
|
13737
|
+
|
|
13733
13738
|
|
|
13734
13739
|
constructor() {
|
|
13735
13740
|
this._hasChat = true;
|
|
@@ -13738,6 +13743,7 @@ class Features {
|
|
|
13738
13743
|
this._hasFax = true;
|
|
13739
13744
|
this._hasMobileDoubleCall = true;
|
|
13740
13745
|
this._hasMobileGsm = true;
|
|
13746
|
+
this._hasMeeting = true;
|
|
13741
13747
|
}
|
|
13742
13748
|
|
|
13743
13749
|
async fetchAccess() {
|
|
@@ -13758,6 +13764,7 @@ class Features {
|
|
|
13758
13764
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
13759
13765
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
13760
13766
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
13767
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
13761
13768
|
}
|
|
13762
13769
|
|
|
13763
13770
|
hasChat() { return this._hasChat; }
|
|
@@ -13766,6 +13773,7 @@ class Features {
|
|
|
13766
13773
|
hasFax() { return this._hasFax; }
|
|
13767
13774
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
13768
13775
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
13776
|
+
hasMeeting() { return this._hasMeeting; }
|
|
13769
13777
|
|
|
13770
13778
|
_hasFeatures(scopes , featureName ) {
|
|
13771
13779
|
const scopeName = getScopeName(featureName);
|
package/lib/web-rtc-client.js
CHANGED
|
@@ -6382,7 +6382,7 @@ class WebRTCClient extends Emitter {
|
|
|
6382
6382
|
|
|
6383
6383
|
videoSender = transceiverIdx !== -1 ? transceivers[transceiverIdx].sender : null;
|
|
6384
6384
|
} else {
|
|
6385
|
-
videoSender = pc.getSenders().find(sender => sender.track === null);
|
|
6385
|
+
videoSender = pc && pc.getSenders && pc.getSenders().find(sender => sender.track === null);
|
|
6386
6386
|
}
|
|
6387
6387
|
|
|
6388
6388
|
if (!videoSender) {
|
|
@@ -6423,9 +6423,11 @@ class WebRTCClient extends Emitter {
|
|
|
6423
6423
|
const videoTracks = localStream.getVideoTracks();
|
|
6424
6424
|
|
|
6425
6425
|
// Remove video senders
|
|
6426
|
-
pc.getSenders
|
|
6427
|
-
|
|
6428
|
-
|
|
6426
|
+
if (pc.getSenders) {
|
|
6427
|
+
pc.getSenders().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
|
|
6428
|
+
videoSender.replaceTrack(null);
|
|
6429
|
+
});
|
|
6430
|
+
}
|
|
6429
6431
|
|
|
6430
6432
|
videoTracks.forEach(videoTrack => {
|
|
6431
6433
|
videoTrack.enabled = false;
|
|
@@ -6658,7 +6660,8 @@ class WebRTCClient extends Emitter {
|
|
|
6658
6660
|
const constraints = { audio: { deviceId: { exact: deviceId } } };
|
|
6659
6661
|
const stream = await navigator.mediaDevices.getUserMedia(constraints);
|
|
6660
6662
|
const audioTrack = stream.getAudioTracks()[0];
|
|
6661
|
-
const sender = pc && pc.getSenders
|
|
6663
|
+
const sender = pc && pc.getSenders
|
|
6664
|
+
&& pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
|
|
6662
6665
|
|
|
6663
6666
|
if (sender) {
|
|
6664
6667
|
if (sender.track) {
|
|
@@ -6721,10 +6724,11 @@ class WebRTCClient extends Emitter {
|
|
|
6721
6724
|
// $FlowFixMe
|
|
6722
6725
|
return navigator.mediaDevices.getUserMedia(constraints).then(async stream => {
|
|
6723
6726
|
const videoTrack = stream.getVideoTracks()[0];
|
|
6724
|
-
let sender = pc && pc.getSenders
|
|
6727
|
+
let sender = pc && pc.getSenders
|
|
6728
|
+
&& pc.getSenders().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
|
|
6725
6729
|
let wasTrackEnabled = false;
|
|
6726
6730
|
if (!sender) {
|
|
6727
|
-
sender = pc && pc.getSenders().find(s => !s.track);
|
|
6731
|
+
sender = pc && pc.getSenders && pc.getSenders().find(s => !s.track);
|
|
6728
6732
|
}
|
|
6729
6733
|
|
|
6730
6734
|
if (sender) {
|
package/package.json
CHANGED
package/src/domain/Features.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import getApiClient from '../service/getApiClient';
|
|
4
4
|
|
|
5
|
-
export const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm'];
|
|
5
|
+
export const FEATURES = ['chat', 'video', 'call_recording', 'fax', 'mobile_double_call', 'mobile_gsm', 'meeting'];
|
|
6
6
|
|
|
7
7
|
export const getScopeName = (featureName: string) => `enterprise.app.${featureName}`;
|
|
8
8
|
|
|
@@ -16,6 +16,7 @@ class Features {
|
|
|
16
16
|
_hasFax: boolean;
|
|
17
17
|
_hasMobileDoubleCall: boolean;
|
|
18
18
|
_hasMobileGsm: boolean;
|
|
19
|
+
_hasMeeting: boolean;
|
|
19
20
|
|
|
20
21
|
constructor() {
|
|
21
22
|
this._hasChat = true;
|
|
@@ -24,6 +25,7 @@ class Features {
|
|
|
24
25
|
this._hasFax = true;
|
|
25
26
|
this._hasMobileDoubleCall = true;
|
|
26
27
|
this._hasMobileGsm = true;
|
|
28
|
+
this._hasMeeting = true;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
async fetchAccess() {
|
|
@@ -44,6 +46,7 @@ class Features {
|
|
|
44
46
|
this._hasFax = this._hasFeatures(scopes, 'fax');
|
|
45
47
|
this._hasMobileDoubleCall = this._hasFeatures(scopes, 'mobile_double_call');
|
|
46
48
|
this._hasMobileGsm = this._hasFeatures(scopes, 'mobile_gsm');
|
|
49
|
+
this._hasMeeting = this._hasFeatures(scopes, 'meeting');
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
hasChat() { return this._hasChat; }
|
|
@@ -52,6 +55,7 @@ class Features {
|
|
|
52
55
|
hasFax() { return this._hasFax; }
|
|
53
56
|
hasMobileDoubleCall() { return this._hasMobileDoubleCall; }
|
|
54
57
|
hasMobileGsm() { return this._hasMobileGsm; }
|
|
58
|
+
hasMeeting() { return this._hasMeeting; }
|
|
55
59
|
|
|
56
60
|
_hasFeatures(scopes: Object, featureName: string) {
|
|
57
61
|
const scopeName = getScopeName(featureName);
|
|
@@ -493,7 +493,7 @@ export default class WebRTCPhone extends Emitter implements Phone {
|
|
|
493
493
|
const screenTrack = screenShareStream.getVideoTracks()[0];
|
|
494
494
|
const sipSession = this.currentSipSession;
|
|
495
495
|
const pc = this.client.getPeerConnection(this.getSipSessionId(sipSession));
|
|
496
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
496
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
497
497
|
const localStream = this.client.getLocalStream(this.getSipSessionId(sipSession));
|
|
498
498
|
const videoTrack = localStream ? localStream.getTracks().find(track => track.kind === 'video') : null;
|
|
499
499
|
const hadVideo = !!videoTrack;
|
|
@@ -575,7 +575,7 @@ export default class WebRTCPhone extends Emitter implements Phone {
|
|
|
575
575
|
const screenTrack = screenStream.getVideoTracks()[0];
|
|
576
576
|
const sipSessionId = this.getSipSessionId(sipSession);
|
|
577
577
|
const pc = this.client.getPeerConnection(sipSessionId);
|
|
578
|
-
const sender = pc && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
578
|
+
const sender = pc && pc.getSenders && pc.getSenders().find(s => s && s.track && s.track.kind === 'video');
|
|
579
579
|
|
|
580
580
|
logger.info('WebRTC phone - on screensharing', {
|
|
581
581
|
hadVideo,
|