@wazo/sdk 0.38.6 → 0.38.9

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 (118) hide show
  1. package/dist/wazo-sdk.js +2 -2
  2. package/esm/__tests__/api-client.test.js +142 -2
  3. package/esm/__tests__/web-rtc-client.test.js +249 -28
  4. package/esm/api/calld.js +8 -0
  5. package/esm/api/confd.js +134 -2
  6. package/esm/api-client.js +142 -2
  7. package/esm/checker/Checker.js +205 -25
  8. package/esm/checker/checks/aor.js +142 -2
  9. package/esm/checker/checks/api.js +142 -2
  10. package/esm/checker/checks/index.js +205 -25
  11. package/esm/checker/checks/wazo-websocket.js +2 -0
  12. package/esm/checker/checks/webrtc-transport.js +203 -25
  13. package/esm/checker/checks/webrtc.js +203 -25
  14. package/esm/domain/AdHocAPIConference.js +142 -2
  15. package/esm/domain/Features.js +142 -2
  16. package/esm/domain/Meeting.js +18 -0
  17. package/esm/domain/MeetingAuthorization.js +70 -0
  18. package/esm/domain/Phone/CTIPhone.js +142 -2
  19. package/esm/domain/Phone/WebRTCPhone.js +1 -3
  20. package/esm/domain/__tests__/Meeting.test.js +87 -1
  21. package/esm/domain/__tests__/MeetingAuthorization.test.js +109 -0
  22. package/esm/index.js +249 -31
  23. package/esm/lib/WazoSessionDescriptionHandler.js +22 -1
  24. package/esm/service/CallApi.js +142 -2
  25. package/esm/service/getApiClient.js +142 -2
  26. package/esm/simple/Auth.js +249 -31
  27. package/esm/simple/Configuration.js +249 -31
  28. package/esm/simple/Directory.js +142 -2
  29. package/esm/simple/Phone.js +249 -31
  30. package/esm/simple/Websocket.js +3 -0
  31. package/esm/simple/index.js +249 -31
  32. package/esm/simple/room/LocalParticipant.js +249 -31
  33. package/esm/simple/room/Participant.js +249 -31
  34. package/esm/simple/room/RemoteParticipant.js +249 -31
  35. package/esm/simple/room/Room.js +249 -31
  36. package/esm/simple/room/SipRoom.js +249 -31
  37. package/esm/simple/room/Stream.js +249 -31
  38. package/esm/simple/room/__tests__/Participant.test.js +14745 -0
  39. package/esm/simple/room/__tests__/RemoteParticipant.test.js +249 -31
  40. package/esm/simple/utils.js +249 -31
  41. package/esm/utils/__tests__/object.test.js +57 -0
  42. package/esm/utils/__tests__/sdp.test.js +50 -0
  43. package/esm/utils/__tests__/string.test.js +30 -0
  44. package/esm/utils/object.js +24 -0
  45. package/esm/utils/sdp.js +19 -1
  46. package/esm/utils/string.js +10 -0
  47. package/esm/web-rtc-client.js +203 -25
  48. package/esm/websocket-client.js +3 -1
  49. package/lib/__tests__/api-client.test.js +142 -2
  50. package/lib/__tests__/web-rtc-client.test.js +249 -28
  51. package/lib/api/calld.js +8 -0
  52. package/lib/api/confd.js +134 -2
  53. package/lib/api-client.js +142 -2
  54. package/lib/checker/Checker.js +205 -25
  55. package/lib/checker/checks/aor.js +142 -2
  56. package/lib/checker/checks/api.js +142 -2
  57. package/lib/checker/checks/index.js +205 -25
  58. package/lib/checker/checks/wazo-websocket.js +2 -0
  59. package/lib/checker/checks/webrtc-transport.js +203 -25
  60. package/lib/checker/checks/webrtc.js +203 -25
  61. package/lib/domain/AdHocAPIConference.js +142 -2
  62. package/lib/domain/Features.js +142 -2
  63. package/lib/domain/Meeting.js +18 -0
  64. package/lib/domain/MeetingAuthorization.js +79 -0
  65. package/lib/domain/Phone/CTIPhone.js +142 -2
  66. package/lib/domain/Phone/WebRTCPhone.js +1 -3
  67. package/lib/domain/__tests__/Meeting.test.js +87 -1
  68. package/lib/domain/__tests__/MeetingAuthorization.test.js +111 -0
  69. package/lib/index.js +249 -31
  70. package/lib/lib/WazoSessionDescriptionHandler.js +22 -1
  71. package/lib/service/CallApi.js +142 -2
  72. package/lib/service/getApiClient.js +142 -2
  73. package/lib/simple/Auth.js +249 -31
  74. package/lib/simple/Configuration.js +249 -31
  75. package/lib/simple/Directory.js +142 -2
  76. package/lib/simple/Phone.js +249 -31
  77. package/lib/simple/Websocket.js +3 -0
  78. package/lib/simple/index.js +249 -31
  79. package/lib/simple/room/LocalParticipant.js +249 -31
  80. package/lib/simple/room/Participant.js +249 -31
  81. package/lib/simple/room/RemoteParticipant.js +249 -31
  82. package/lib/simple/room/Room.js +249 -31
  83. package/lib/simple/room/SipRoom.js +249 -31
  84. package/lib/simple/room/Stream.js +249 -31
  85. package/lib/simple/room/__tests__/Participant.test.js +14755 -0
  86. package/lib/simple/room/__tests__/RemoteParticipant.test.js +249 -31
  87. package/lib/simple/utils.js +249 -31
  88. package/lib/utils/__tests__/object.test.js +59 -0
  89. package/lib/utils/__tests__/sdp.test.js +50 -0
  90. package/lib/utils/__tests__/string.test.js +32 -0
  91. package/lib/utils/object.js +28 -0
  92. package/lib/utils/sdp.js +19 -0
  93. package/lib/utils/string.js +14 -0
  94. package/lib/web-rtc-client.js +203 -25
  95. package/lib/websocket-client.js +3 -0
  96. package/package.json +2 -2
  97. package/src/__tests__/web-rtc-client.test.js +46 -3
  98. package/src/api/calld.js +8 -0
  99. package/src/api/confd.js +43 -2
  100. package/src/domain/Meeting.js +20 -0
  101. package/src/domain/MeetingAuthorization.js +67 -0
  102. package/src/domain/Phone/WebRTCPhone.js +1 -3
  103. package/src/domain/__tests__/Meeting.test.js +70 -1
  104. package/src/domain/__tests__/MeetingAuthorization.test.js +58 -0
  105. package/src/lib/WazoSessionDescriptionHandler.js +5 -2
  106. package/src/simple/room/Participant.js +40 -0
  107. package/src/simple/room/Room.js +2 -2
  108. package/src/simple/room/SipRoom.js +1 -1
  109. package/src/simple/room/__tests__/Participant.test.js +81 -0
  110. package/src/types/WebSocketMessage.js +7 -1
  111. package/src/utils/__tests__/object.test.js +35 -0
  112. package/src/utils/__tests__/sdp.test.js +33 -1
  113. package/src/utils/__tests__/string.test.js +23 -0
  114. package/src/utils/object.js +15 -0
  115. package/src/utils/sdp.js +18 -0
  116. package/src/utils/string.js +8 -0
  117. package/src/web-rtc-client.js +39 -22
  118. package/src/websocket-client.js +2 -0
@@ -1070,7 +1070,7 @@ export default class WebRTCClient extends Emitter {
1070
1070
  });
1071
1071
  }
1072
1072
 
1073
- changeAudioInputDevice(id: string, session: ?Inviter, force: ?boolean) {
1073
+ async changeAudioInputDevice(id: string, session: ?Inviter, force: ?boolean) {
1074
1074
  const currentId = this.getAudioDeviceId();
1075
1075
  logger.info('setting audio input device', { id, currentId, session: !!session });
1076
1076
 
@@ -1078,33 +1078,50 @@ export default class WebRTCClient extends Emitter {
1078
1078
  return null;
1079
1079
  }
1080
1080
 
1081
+ // in order to handle an audio track change for default devices
1082
+ // we need the actual id of the device (not 'default')
1083
+ let deviceId = id;
1084
+ if (id === 'default' && navigator.mediaDevices) {
1085
+ const devices = await navigator.mediaDevices.enumerateDevices();
1086
+ const defaultDevice = devices.find(device => device.deviceId === 'default');
1087
+ if (defaultDevice) {
1088
+ const deviceLabel = defaultDevice.label.replace('Default - ', '');
1089
+ const targetDevice = devices.find(device => device.label === deviceLabel);
1090
+ if (targetDevice) {
1091
+ deviceId = targetDevice.deviceId;
1092
+ if (!force && deviceId === currentId) {
1093
+ return null;
1094
+ }
1095
+ }
1096
+ }
1097
+ }
1098
+
1081
1099
  // let's update the local audio value
1082
1100
  if (this.audio) {
1083
1101
  this.audio = {
1084
1102
  deviceId: {
1085
- exact: id,
1103
+ exact: deviceId,
1086
1104
  },
1087
1105
  };
1088
1106
  }
1089
1107
 
1090
- if (session) {
1108
+ if (session && navigator.mediaDevices) {
1091
1109
  const sdh = session.sessionDescriptionHandler;
1092
1110
  const pc = sdh.peerConnection;
1093
1111
 
1094
- // $FlowFixMe
1095
- return navigator.mediaDevices.getUserMedia({ audio: { deviceId: { exact: id } } }).then(async stream => {
1096
- const audioTrack = stream.getAudioTracks()[0];
1097
- const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
1112
+ const constraints = { audio: { deviceId: { exact: deviceId } } };
1113
+ const stream = await navigator.mediaDevices.getUserMedia(constraints);
1114
+ const audioTrack = stream.getAudioTracks()[0];
1115
+ const sender = pc && pc.getSenders().find(s => audioTrack && s && s.track && s.track.kind === audioTrack.kind);
1098
1116
 
1099
- if (sender) {
1100
- if (sender.track) {
1101
- audioTrack.enabled = sender.track.enabled;
1102
- }
1103
- sender.replaceTrack(audioTrack);
1117
+ if (sender) {
1118
+ if (sender.track) {
1119
+ audioTrack.enabled = sender.track.enabled;
1104
1120
  }
1121
+ sender.replaceTrack(audioTrack);
1122
+ }
1105
1123
 
1106
- return stream;
1107
- });
1124
+ return stream;
1108
1125
  }
1109
1126
  }
1110
1127
 
@@ -1124,14 +1141,14 @@ export default class WebRTCClient extends Emitter {
1124
1141
  return null;
1125
1142
  }
1126
1143
 
1127
- // let's update the local video value
1128
- if (this.video) {
1129
- this.video = {
1130
- deviceId: {
1131
- exact: id,
1132
- },
1133
- };
1134
- }
1144
+ // let's make sure we don't lose other video constraints settings -- width, height, frameRate...
1145
+ const videoObject = typeof this.video === 'object' ? this.video : {};
1146
+ this.video = {
1147
+ ...videoObject,
1148
+ deviceId: {
1149
+ exact: id,
1150
+ },
1151
+ };
1135
1152
  }
1136
1153
 
1137
1154
  changeSessionVideoInputDevice(id: ?string, session: Inviter) {
@@ -94,6 +94,7 @@ export const AGENT_UNPAUSED = 'agent_unpaused';
94
94
  export const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
95
95
  export const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
96
96
  export const MEETING_USER_PROGRESS = 'meeting_user_progress';
97
+ export const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
97
98
 
98
99
  const BLACKLIST_EVENTS = [
99
100
  CHAT_MESSAGE_SENT,
@@ -448,6 +449,7 @@ WebSocketClient.eventLists = [
448
449
  CONFERENCE_ADHOC_PARTICIPANT_LEFT,
449
450
  CONFERENCE_ADHOC_DELETED,
450
451
  MEETING_USER_PROGRESS,
452
+ MEETING_USER_GUEST_AUTHORIZATION_CREATED,
451
453
  ];
452
454
 
453
455
  export default WebSocketClient;