@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.
Files changed (49) hide show
  1. package/dist/wazo-sdk.js +2 -2
  2. package/esm/__tests__/web-rtc-client.test.js +11 -7
  3. package/esm/checker/Checker.js +11 -7
  4. package/esm/checker/checks/index.js +11 -7
  5. package/esm/checker/checks/webrtc-transport.js +11 -7
  6. package/esm/checker/checks/webrtc.js +11 -7
  7. package/esm/domain/Features.js +5 -1
  8. package/esm/domain/Phone/WebRTCPhone.js +2 -2
  9. package/esm/index.js +18 -10
  10. package/esm/simple/Auth.js +18 -10
  11. package/esm/simple/Configuration.js +18 -10
  12. package/esm/simple/Phone.js +18 -10
  13. package/esm/simple/index.js +18 -10
  14. package/esm/simple/room/LocalParticipant.js +18 -10
  15. package/esm/simple/room/Participant.js +18 -10
  16. package/esm/simple/room/RemoteParticipant.js +18 -10
  17. package/esm/simple/room/Room.js +18 -10
  18. package/esm/simple/room/SipRoom.js +18 -10
  19. package/esm/simple/room/Stream.js +18 -10
  20. package/esm/simple/room/__tests__/Participant.test.js +18 -10
  21. package/esm/simple/room/__tests__/RemoteParticipant.test.js +18 -10
  22. package/esm/simple/utils.js +18 -10
  23. package/esm/web-rtc-client.js +11 -7
  24. package/lib/__tests__/web-rtc-client.test.js +11 -7
  25. package/lib/checker/Checker.js +11 -7
  26. package/lib/checker/checks/index.js +11 -7
  27. package/lib/checker/checks/webrtc-transport.js +11 -7
  28. package/lib/checker/checks/webrtc.js +11 -7
  29. package/lib/domain/Features.js +5 -1
  30. package/lib/domain/Phone/WebRTCPhone.js +2 -2
  31. package/lib/index.js +18 -10
  32. package/lib/simple/Auth.js +18 -10
  33. package/lib/simple/Configuration.js +18 -10
  34. package/lib/simple/Phone.js +18 -10
  35. package/lib/simple/index.js +18 -10
  36. package/lib/simple/room/LocalParticipant.js +18 -10
  37. package/lib/simple/room/Participant.js +18 -10
  38. package/lib/simple/room/RemoteParticipant.js +18 -10
  39. package/lib/simple/room/Room.js +18 -10
  40. package/lib/simple/room/SipRoom.js +18 -10
  41. package/lib/simple/room/Stream.js +18 -10
  42. package/lib/simple/room/__tests__/Participant.test.js +18 -10
  43. package/lib/simple/room/__tests__/RemoteParticipant.test.js +18 -10
  44. package/lib/simple/utils.js +18 -10
  45. package/lib/web-rtc-client.js +11 -7
  46. package/package.json +1 -1
  47. package/src/domain/Features.js +5 -1
  48. package/src/domain/Phone/WebRTCPhone.js +2 -2
  49. 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().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
7836
- videoSender.replaceTrack(null);
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().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
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().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
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().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
7836
- videoSender.replaceTrack(null);
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().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
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().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
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().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
7836
- videoSender.replaceTrack(null);
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().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
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().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
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().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
7836
- videoSender.replaceTrack(null);
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().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
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().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
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);
@@ -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().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
7838
- videoSender.replaceTrack(null);
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().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
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().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
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);
@@ -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().filter(sender => sender.track && sender.track.kind === 'video').forEach(videoSender => {
6427
- videoSender.replaceTrack(null);
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().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
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().find(s => videoTrack && s && s.track && s.track.kind === videoTrack.kind);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wazo/sdk",
3
- "version": "0.38.10",
3
+ "version": "0.38.13",
4
4
  "description": "Wazo's JavaScript Software Development Kit.",
5
5
  "main": "dist/wazo-sdk.js",
6
6
  "author": "Wazo (http://wazo.io)",
@@ -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,