@webex/plugin-meetings 3.8.1-next.9 → 3.8.1

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 (230) hide show
  1. package/README.md +13 -26
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/constants.d.ts +31 -0
  4. package/dist/annotation/index.d.ts +117 -0
  5. package/dist/breakouts/breakout.d.ts +8 -0
  6. package/dist/breakouts/breakout.js +1 -1
  7. package/dist/breakouts/collection.d.ts +5 -0
  8. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  9. package/dist/breakouts/events.d.ts +8 -0
  10. package/dist/breakouts/index.d.ts +5 -0
  11. package/dist/breakouts/index.js +1 -1
  12. package/dist/breakouts/request.d.ts +22 -0
  13. package/dist/breakouts/utils.d.ts +15 -0
  14. package/dist/common/browser-detection.d.ts +9 -0
  15. package/dist/common/collection.d.ts +48 -0
  16. package/dist/common/config.d.ts +2 -0
  17. package/dist/common/errors/captcha-error.d.ts +15 -0
  18. package/dist/common/errors/intent-to-join.d.ts +16 -0
  19. package/dist/common/errors/join-meeting.d.ts +17 -0
  20. package/dist/common/errors/media.d.ts +15 -0
  21. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  22. package/dist/common/errors/parameter.d.ts +15 -0
  23. package/dist/common/errors/password-error.d.ts +15 -0
  24. package/dist/common/errors/permission.d.ts +14 -0
  25. package/dist/common/errors/reclaim-host-role-error.d.ts +60 -0
  26. package/dist/common/errors/reclaim-host-role-error.js +158 -0
  27. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  28. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  29. package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
  30. package/dist/common/errors/reconnection-in-progress.js +35 -0
  31. package/dist/common/errors/reconnection-in-progress.js.map +1 -0
  32. package/dist/common/errors/reconnection.d.ts +15 -0
  33. package/dist/common/errors/stats.d.ts +15 -0
  34. package/dist/common/errors/webex-errors.d.ts +81 -0
  35. package/dist/common/errors/webex-meetings-error.d.ts +20 -0
  36. package/dist/common/events/events-scope.d.ts +17 -0
  37. package/dist/common/events/events.d.ts +12 -0
  38. package/dist/common/events/trigger-proxy.d.ts +2 -0
  39. package/dist/common/events/util.d.ts +2 -0
  40. package/dist/common/logs/logger-config.d.ts +2 -0
  41. package/dist/common/logs/logger-proxy.d.ts +2 -0
  42. package/dist/common/logs/request.d.ts +34 -0
  43. package/dist/common/queue.d.ts +32 -0
  44. package/dist/config.d.ts +73 -0
  45. package/dist/constants.d.ts +952 -0
  46. package/dist/constants.js +1 -8
  47. package/dist/constants.js.map +1 -1
  48. package/dist/controls-options-manager/constants.d.ts +4 -0
  49. package/dist/controls-options-manager/enums.d.ts +5 -0
  50. package/dist/controls-options-manager/enums.js +0 -1
  51. package/dist/controls-options-manager/enums.js.map +1 -1
  52. package/dist/controls-options-manager/index.d.ts +120 -0
  53. package/dist/controls-options-manager/types.d.ts +43 -0
  54. package/dist/controls-options-manager/types.js.map +1 -1
  55. package/dist/controls-options-manager/util.d.ts +7 -0
  56. package/dist/controls-options-manager/util.js +0 -26
  57. package/dist/controls-options-manager/util.js.map +1 -1
  58. package/dist/index.d.ts +4 -0
  59. package/dist/interceptors/index.d.ts +2 -0
  60. package/dist/interceptors/locusRetry.d.ts +27 -0
  61. package/dist/interpretation/collection.d.ts +5 -0
  62. package/dist/interpretation/index.d.ts +5 -0
  63. package/dist/interpretation/index.js +1 -1
  64. package/dist/interpretation/siLanguage.d.ts +5 -0
  65. package/dist/interpretation/siLanguage.js +1 -1
  66. package/dist/locus-info/controlsUtils.d.ts +2 -0
  67. package/dist/locus-info/controlsUtils.js +3 -11
  68. package/dist/locus-info/controlsUtils.js.map +1 -1
  69. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
  70. package/dist/locus-info/fullState.d.ts +2 -0
  71. package/dist/locus-info/hostUtils.d.ts +2 -0
  72. package/dist/locus-info/index.d.ts +269 -0
  73. package/dist/locus-info/index.js +0 -30
  74. package/dist/locus-info/index.js.map +1 -1
  75. package/dist/locus-info/infoUtils.d.ts +2 -0
  76. package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
  77. package/dist/locus-info/parser.d.ts +212 -0
  78. package/dist/locus-info/selfUtils.d.ts +2 -0
  79. package/dist/media/index.d.ts +32 -0
  80. package/dist/media/properties.d.ts +108 -0
  81. package/dist/media/util.d.ts +2 -0
  82. package/dist/mediaQualityMetrics/config.d.ts +233 -0
  83. package/dist/mediaQualityMetrics/config.js +513 -0
  84. package/dist/mediaQualityMetrics/config.js.map +1 -0
  85. package/dist/meeting/brbState.js +2 -3
  86. package/dist/meeting/brbState.js.map +1 -1
  87. package/dist/meeting/effectsState.d.ts +42 -0
  88. package/dist/meeting/effectsState.js +260 -0
  89. package/dist/meeting/effectsState.js.map +1 -0
  90. package/dist/meeting/in-meeting-actions.d.ts +79 -0
  91. package/dist/meeting/in-meeting-actions.js +1 -5
  92. package/dist/meeting/in-meeting-actions.js.map +1 -1
  93. package/dist/meeting/index.d.ts +1622 -0
  94. package/dist/meeting/index.js +66 -88
  95. package/dist/meeting/index.js.map +1 -1
  96. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  97. package/dist/meeting/muteState.d.ts +116 -0
  98. package/dist/meeting/request.d.ts +257 -0
  99. package/dist/meeting/request.type.d.ts +11 -0
  100. package/dist/meeting/state.d.ts +9 -0
  101. package/dist/meeting/util.d.ts +2 -0
  102. package/dist/meeting/voicea-meeting.d.ts +16 -0
  103. package/dist/meeting-info/collection.d.ts +20 -0
  104. package/dist/meeting-info/index.d.ts +57 -0
  105. package/dist/meeting-info/meeting-info-v2.d.ts +93 -0
  106. package/dist/meeting-info/request.d.ts +22 -0
  107. package/dist/meeting-info/util.d.ts +2 -0
  108. package/dist/meeting-info/utilv2.d.ts +2 -0
  109. package/dist/meetings/collection.d.ts +23 -0
  110. package/dist/meetings/index.d.ts +296 -0
  111. package/dist/meetings/meetings.types.d.ts +4 -0
  112. package/dist/meetings/request.d.ts +27 -0
  113. package/dist/meetings/util.d.ts +18 -0
  114. package/dist/member/index.d.ts +148 -0
  115. package/dist/member/member.types.d.ts +11 -0
  116. package/dist/member/member.types.js +18 -0
  117. package/dist/member/member.types.js.map +1 -0
  118. package/dist/member/types.d.ts +32 -0
  119. package/dist/member/util.d.ts +2 -0
  120. package/dist/members/collection.d.ts +24 -0
  121. package/dist/members/index.d.ts +308 -0
  122. package/dist/members/request.d.ts +58 -0
  123. package/dist/members/types.d.ts +25 -0
  124. package/dist/members/util.d.ts +2 -0
  125. package/dist/metrics/config.d.ts +169 -0
  126. package/dist/metrics/config.js +289 -0
  127. package/dist/metrics/config.js.map +1 -0
  128. package/dist/metrics/constants.d.ts +59 -0
  129. package/dist/metrics/constants.js +0 -1
  130. package/dist/metrics/constants.js.map +1 -1
  131. package/dist/metrics/index.d.ts +152 -0
  132. package/dist/multistream/mediaRequestManager.d.ts +119 -0
  133. package/dist/multistream/receiveSlot.d.ts +68 -0
  134. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  135. package/dist/multistream/remoteMedia.d.ts +72 -0
  136. package/dist/multistream/remoteMediaGroup.d.ts +49 -0
  137. package/dist/multistream/remoteMediaManager.d.ts +300 -0
  138. package/dist/multistream/sendSlotManager.d.ts +69 -0
  139. package/dist/networkQualityMonitor/index.d.ts +70 -0
  140. package/dist/networkQualityMonitor/index.js +226 -0
  141. package/dist/networkQualityMonitor/index.js.map +1 -0
  142. package/dist/peer-connection-manager/index.d.ts +6 -0
  143. package/dist/peer-connection-manager/index.js +671 -0
  144. package/dist/peer-connection-manager/index.js.map +1 -0
  145. package/dist/peer-connection-manager/util.d.ts +6 -0
  146. package/dist/peer-connection-manager/util.js +110 -0
  147. package/dist/peer-connection-manager/util.js.map +1 -0
  148. package/dist/personal-meeting-room/index.d.ts +47 -0
  149. package/dist/personal-meeting-room/request.d.ts +14 -0
  150. package/dist/personal-meeting-room/util.d.ts +2 -0
  151. package/dist/reachability/clusterReachability.d.ts +109 -0
  152. package/dist/reachability/index.d.ts +139 -0
  153. package/dist/reachability/index.js +10 -5
  154. package/dist/reachability/index.js.map +1 -1
  155. package/dist/reachability/request.d.ts +35 -0
  156. package/dist/reachability/util.d.ts +8 -0
  157. package/dist/reactions/constants.d.ts +3 -0
  158. package/dist/reactions/reactions.d.ts +4 -0
  159. package/dist/reactions/reactions.type.d.ts +32 -0
  160. package/dist/reconnection-manager/index.d.ts +112 -0
  161. package/dist/recording-controller/enums.d.ts +7 -0
  162. package/dist/recording-controller/index.d.ts +193 -0
  163. package/dist/recording-controller/util.d.ts +13 -0
  164. package/dist/roap/collection.d.ts +10 -0
  165. package/dist/roap/collection.js +63 -0
  166. package/dist/roap/collection.js.map +1 -0
  167. package/dist/roap/handler.d.ts +47 -0
  168. package/dist/roap/handler.js +279 -0
  169. package/dist/roap/handler.js.map +1 -0
  170. package/dist/roap/index.d.ts +116 -0
  171. package/dist/roap/request.d.ts +35 -0
  172. package/dist/roap/state.d.ts +9 -0
  173. package/dist/roap/state.js +127 -0
  174. package/dist/roap/state.js.map +1 -0
  175. package/dist/roap/turnDiscovery.d.ts +81 -0
  176. package/dist/roap/util.d.ts +2 -0
  177. package/dist/roap/util.js +76 -0
  178. package/dist/roap/util.js.map +1 -0
  179. package/dist/rtcMetrics/constants.d.ts +4 -0
  180. package/dist/rtcMetrics/constants.js +11 -0
  181. package/dist/rtcMetrics/constants.js.map +1 -0
  182. package/dist/rtcMetrics/index.d.ts +61 -0
  183. package/dist/rtcMetrics/index.js +197 -0
  184. package/dist/rtcMetrics/index.js.map +1 -0
  185. package/dist/statsAnalyzer/global.d.ts +118 -0
  186. package/dist/statsAnalyzer/global.js +127 -0
  187. package/dist/statsAnalyzer/global.js.map +1 -0
  188. package/dist/statsAnalyzer/index.d.ts +193 -0
  189. package/dist/statsAnalyzer/index.js +1019 -0
  190. package/dist/statsAnalyzer/index.js.map +1 -0
  191. package/dist/statsAnalyzer/mqaUtil.d.ts +22 -0
  192. package/dist/statsAnalyzer/mqaUtil.js +181 -0
  193. package/dist/statsAnalyzer/mqaUtil.js.map +1 -0
  194. package/dist/transcription/index.d.ts +64 -0
  195. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  196. package/dist/types/constants.d.ts +0 -6
  197. package/dist/types/controls-options-manager/enums.d.ts +1 -2
  198. package/dist/types/controls-options-manager/types.d.ts +1 -4
  199. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  200. package/dist/types/meeting/in-meeting-actions.d.ts +0 -4
  201. package/dist/types/metrics/constants.d.ts +0 -1
  202. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  203. package/dist/types/reachability/index.d.ts +2 -2
  204. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  205. package/dist/types/rtcMetrics/index.d.ts +71 -0
  206. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  207. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  208. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  209. package/dist/webinar/collection.d.ts +16 -0
  210. package/dist/webinar/index.d.ts +5 -0
  211. package/dist/webinar/index.js +1 -1
  212. package/package.json +23 -23
  213. package/src/constants.ts +0 -9
  214. package/src/controls-options-manager/enums.ts +0 -1
  215. package/src/controls-options-manager/types.ts +1 -6
  216. package/src/controls-options-manager/util.ts +0 -31
  217. package/src/locus-info/controlsUtils.ts +0 -15
  218. package/src/locus-info/index.ts +0 -41
  219. package/src/meeting/brbState.ts +2 -4
  220. package/src/meeting/in-meeting-actions.ts +0 -8
  221. package/src/meeting/index.ts +29 -62
  222. package/src/metrics/constants.ts +0 -1
  223. package/src/reachability/index.ts +13 -5
  224. package/test/unit/spec/controls-options-manager/util.js +0 -58
  225. package/test/unit/spec/locus-info/controlsUtils.js +0 -52
  226. package/test/unit/spec/locus-info/index.js +0 -42
  227. package/test/unit/spec/meeting/brbState.ts +2 -21
  228. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -4
  229. package/test/unit/spec/meeting/index.js +27 -130
  230. package/test/unit/spec/reachability/index.ts +6 -2
@@ -263,9 +263,8 @@ type FetchMeetingInfoParams = {
263
263
  };
264
264
 
265
265
  type MediaReachabilityMetrics = ReachabilityMetrics & {
266
- subnet_reachable: boolean;
267
- selected_cluster: string | null;
268
- selected_subnet: string | null;
266
+ isSubnetReachable: boolean;
267
+ selectedCluster: string | null;
269
268
  };
270
269
 
271
270
  /**
@@ -1345,7 +1344,7 @@ export default class Meeting extends StatelessWebexPlugin {
1345
1344
  captions: [],
1346
1345
  isListening: false,
1347
1346
  commandText: '',
1348
- languageOptions: {currentSpokenLanguage: 'en'},
1347
+ languageOptions: {},
1349
1348
  showCaptionBox: false,
1350
1349
  transcribingRequestStatus: 'INACTIVE',
1351
1350
  isCaptioning: false,
@@ -2754,27 +2753,6 @@ export default class Meeting extends StatelessWebexPlugin {
2754
2753
  }
2755
2754
  );
2756
2755
 
2757
- this.locusInfo.on(
2758
- LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,
2759
- ({spokenLanguage}) => {
2760
- if (spokenLanguage) {
2761
- this.transcription.languageOptions.currentSpokenLanguage = spokenLanguage;
2762
- // @ts-ignore
2763
- this.webex.internal.voicea.onSpokenLanguageUpdate(spokenLanguage);
2764
-
2765
- Trigger.trigger(
2766
- this,
2767
- {
2768
- file: 'meeting/index',
2769
- function: 'setupLocusControlsListener',
2770
- },
2771
- EVENT_TRIGGERS.MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,
2772
- {spokenLanguage}
2773
- );
2774
- }
2775
- }
2776
- );
2777
-
2778
2756
  this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED, ({enable}) => {
2779
2757
  Trigger.trigger(
2780
2758
  this,
@@ -2943,15 +2921,6 @@ export default class Meeting extends StatelessWebexPlugin {
2943
2921
  {state}
2944
2922
  );
2945
2923
  });
2946
-
2947
- this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, ({state}) => {
2948
- Trigger.trigger(
2949
- this,
2950
- {file: 'meeting/index', function: 'setupLocusControlsListener'},
2951
- EVENT_TRIGGERS.MEETING_CONTROLS_POLLING_QA_UPDATED,
2952
- {state}
2953
- );
2954
- });
2955
2924
  }
2956
2925
 
2957
2926
  /**
@@ -3917,16 +3886,13 @@ export default class Meeting extends StatelessWebexPlugin {
3917
3886
  return Promise.reject(error);
3918
3887
  }
3919
3888
 
3920
- return this.brbState
3921
- .enable(enabled, this.sendSlotManager)
3922
- .then(() => {
3923
- if (this.audio && enabled) {
3924
- // locus mutes the participant with brb enabled request,
3925
- // so we need to explicitly update remote mute for correct logic flow
3926
- this.audio.handleServerRemoteMuteUpdate(this, enabled);
3927
- }
3928
- })
3929
- .catch((error) => Promise.reject(error));
3889
+ return this.brbState.enable(enabled, this.sendSlotManager).then(() => {
3890
+ if (this.audio && enabled) {
3891
+ // locus mutes the participant with brb enabled request,
3892
+ // so we need to explicitly update remote mute for correct logic flow
3893
+ this.audio.handleServerRemoteMuteUpdate(this, enabled);
3894
+ }
3895
+ });
3930
3896
  }
3931
3897
 
3932
3898
  /**
@@ -4393,14 +4359,6 @@ export default class Meeting extends StatelessWebexPlugin {
4393
4359
  requiredHints: [DISPLAY_HINTS.DISABLE_RDC_MEETING_OPTION],
4394
4360
  displayHints: this.userDisplayHints,
4395
4361
  }),
4396
- canEnablePollingQA: ControlsOptionsUtil.hasHints({
4397
- requiredHints: [DISPLAY_HINTS.ENABLE_ATTENDEE_START_POLLING_QA],
4398
- displayHints: this.userDisplayHints,
4399
- }),
4400
- canDisablePollingQA: ControlsOptionsUtil.hasHints({
4401
- requiredHints: [DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],
4402
- displayHints: this.userDisplayHints,
4403
- }),
4404
4362
  }) || changed;
4405
4363
  }
4406
4364
  if (changed) {
@@ -4916,6 +4874,11 @@ export default class Meeting extends StatelessWebexPlugin {
4916
4874
 
4917
4875
  // Only send restore event when it was disconnected before and for connected later
4918
4876
  if (!this.hasWebsocketConnected) {
4877
+ // @ts-ignore
4878
+ this.webex.internal.newMetrics.submitClientEvent({
4879
+ name: 'client.mercury.connection.restored',
4880
+ options: {meetingId: this.id},
4881
+ });
4919
4882
  Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MERCURY_CONNECTION_RESTORED, {
4920
4883
  correlation_id: this.correlationId,
4921
4884
  });
@@ -4926,6 +4889,11 @@ export default class Meeting extends StatelessWebexPlugin {
4926
4889
  // @ts-ignore
4927
4890
  this.webex.internal.mercury.on(OFFLINE, () => {
4928
4891
  LoggerProxy.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
4892
+ // @ts-ignore
4893
+ this.webex.internal.newMetrics.submitClientEvent({
4894
+ name: 'client.mercury.connection.lost',
4895
+ options: {meetingId: this.id},
4896
+ });
4929
4897
  Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MERCURY_CONNECTION_FAILURE, {
4930
4898
  correlation_id: this.correlationId,
4931
4899
  });
@@ -9722,22 +9690,21 @@ export default class Meeting extends StatelessWebexPlugin {
9722
9690
  return total;
9723
9691
  }, 0);
9724
9692
 
9725
- const selectedSubnetFirstOctet = this.mediaServerIp?.split('.')[0];
9726
-
9727
9693
  let isSubnetReachable = null;
9728
- if (totalSuccessCases > 0 && selectedSubnetFirstOctet) {
9729
- isSubnetReachable =
9730
- // @ts-ignore
9731
- this.webex.meetings.reachability.isSubnetReachable(selectedSubnetFirstOctet);
9694
+ if (totalSuccessCases > 0) {
9695
+ // @ts-ignore
9696
+ isSubnetReachable = this.webex.meetings.reachability.isSubnetReachable(this.mediaServerIp);
9732
9697
  }
9733
9698
 
9734
- const selectedCluster = this.mediaConnections?.[0]?.mediaAgentCluster ?? null;
9699
+ let selectedCluster = null;
9700
+ if (this.mediaConnections && this.mediaConnections.length > 0) {
9701
+ selectedCluster = this.mediaConnections[0].mediaAgentCluster;
9702
+ }
9735
9703
 
9736
9704
  return {
9737
9705
  ...reachabilityMetrics,
9738
- subnet_reachable: isSubnetReachable,
9739
- selected_cluster: selectedCluster,
9740
- selected_subnet: selectedSubnetFirstOctet ? `${selectedSubnetFirstOctet}.X.X.X` : null,
9706
+ isSubnetReachable,
9707
+ selectedCluster,
9741
9708
  };
9742
9709
  }
9743
9710
  }
@@ -72,7 +72,6 @@ const BEHAVIORAL_METRICS = {
72
72
  MEETING_INFO_POLICY_ERROR: 'js_sdk_meeting_info_policy_error',
73
73
  LOCUS_DELTA_SYNC_FAILED: 'js_sdk_locus_delta_sync_failed',
74
74
  LOCUS_DELTA_OUT_OF_ORDER: 'js_sdk_locus_delta_ooo',
75
- LOCUS_SYNC_HANDLING_FAILED: 'js_sdk_locus_sync_handling_failed',
76
75
  PERMISSION_TOKEN_REFRESH: 'js_sdk_permission_token_refresh',
77
76
  PERMISSION_TOKEN_REFRESH_ERROR: 'js_sdk_permission_token_refresh_error',
78
77
  TURN_DISCOVERY_LATENCY: 'js_sdk_turn_discovery_latency',
@@ -140,14 +140,22 @@ export default class Reachability extends EventsScope {
140
140
 
141
141
  /**
142
142
  * Checks if the given subnet is reachable
143
- * @param {string} selectedSubnetFirstOctet - selected subnet first octet, e.g. "10" for "10.X.X.X"
143
+ * @param {string} mediaServerIp - media server ip
144
144
  * @returns {boolean | null} true if reachable, false if not reachable, null if mediaServerIp is not provided
145
145
  * @public
146
146
  * @memberof Reachability
147
147
  */
148
- public isSubnetReachable(selectedSubnetFirstOctet: string): boolean | null {
148
+ public isSubnetReachable(mediaServerIp?: string): boolean | null {
149
+ if (!mediaServerIp) {
150
+ LoggerProxy.logger.error(`Reachability:index#isSubnetReachable --> mediaServerIp is null`);
151
+
152
+ return null;
153
+ }
154
+
155
+ const subnetFirstOctet = mediaServerIp.split('.')[0];
156
+
149
157
  LoggerProxy.logger.info(
150
- `Reachability:index#isSubnetReachable --> Looking for subnet: ${selectedSubnetFirstOctet}.X.X.X`
158
+ `Reachability:index#isSubnetReachable --> Looking for subnet: ${subnetFirstOctet}.X.X.X`
151
159
  );
152
160
 
153
161
  const matchingReachedClusters = Object.values(this.clusterReachability).reduce(
@@ -159,7 +167,7 @@ export default class Reachability extends EventsScope {
159
167
  const subnet = reachedSubnetsArray[i];
160
168
  const reachedSubnetFirstOctet = subnet.split('.')[0];
161
169
 
162
- if (selectedSubnetFirstOctet === reachedSubnetFirstOctet) {
170
+ if (subnetFirstOctet === reachedSubnetFirstOctet) {
163
171
  acc.add(cluster.name);
164
172
  }
165
173
 
@@ -178,7 +186,7 @@ export default class Reachability extends EventsScope {
178
186
  );
179
187
 
180
188
  LoggerProxy.logger.info(
181
- `Reachability:index#isSubnetReachable --> Found ${matchingReachedClusters.size} clusters that use the subnet ${selectedSubnetFirstOctet}.X.X.X`
189
+ `Reachability:index#isSubnetReachable --> Found ${matchingReachedClusters.size} clusters that use the subnet ${subnetFirstOctet}.X.X.X`
182
190
  );
183
191
 
184
192
  return matchingReachedClusters.size > 0;
@@ -473,40 +473,6 @@ describe('plugin-meetings', () => {
473
473
  assert.equal(results, expected);
474
474
  });
475
475
  });
476
-
477
- describe('canUpdatePollingQA()', () => {
478
- beforeEach(() => {
479
- sinon.stub(ControlsOptionsUtil, 'hasHints').returns(true);
480
- });
481
-
482
- it('should call hasHints() with proper hints when `enabled` is true', () => {
483
- ControlsOptionsUtil.canUpdatePollingQA({properties: {enabled: true}}, []);
484
-
485
- assert.calledWith(ControlsOptionsUtil.hasHints, {
486
- requiredHints: [DISPLAY_HINTS.ENABLE_ATTENDEE_START_POLLING_QA],
487
- displayHints: [],
488
- });
489
- });
490
-
491
- it('should call hasHints() with proper hints when `enabled` is false', () => {
492
- ControlsOptionsUtil.canUpdatePollingQA({properties: {enabled: false}}, []);
493
-
494
- assert.calledWith(ControlsOptionsUtil.hasHints, {
495
- requiredHints: [DISPLAY_HINTS.DISABLE_ATTENDEE_START_POLLING_QA],
496
- displayHints: [],
497
- });
498
- });
499
-
500
- it('should return the resolution of hasHints()', () => {
501
- const expected = 'example-return-value';
502
- ControlsOptionsUtil.hasHints.returns(expected);
503
-
504
- const results = ControlsOptionsUtil.canUpdatePollingQA({properties: {}}, []);
505
-
506
- assert.calledOnce(ControlsOptionsUtil.hasHints);
507
- assert.equal(results, expected);
508
- });
509
- });
510
476
 
511
477
  describe('canUpdate()', () => {
512
478
  const displayHints = [];
@@ -520,7 +486,6 @@ describe('plugin-meetings', () => {
520
486
  ControlsOptionsUtil.canUpdateViewTheParticipantsList = sinon.stub().returns(true);
521
487
  ControlsOptionsUtil.canUpdateAnnotation = sinon.stub().returns(true);
522
488
  ControlsOptionsUtil.canUpdateRemoteDesktopControl = sinon.stub().returns(true);
523
- ControlsOptionsUtil.canUpdatePollingQA = sinon.stub().returns(true);
524
489
  });
525
490
 
526
491
  it('should only call canUpdateAudio() if the scope is audio', () => {
@@ -656,28 +621,6 @@ describe('plugin-meetings', () => {
656
621
  control,
657
622
  displayHints
658
623
  );
659
- assert.callCount(ControlsOptionsUtil.canUpdatePollingQA, 0);
660
- assert.isTrue(results);
661
- });
662
-
663
- it('should only call canUpdatePollingQA() if the scope is pollingQA', () => {
664
- const control = {scope: 'pollingQA'};
665
-
666
- const results = ControlsOptionsUtil.canUpdate(control, displayHints);
667
-
668
- assert.callCount(ControlsOptionsUtil.canUpdateAudio, 0);
669
- assert.callCount(ControlsOptionsUtil.canUpdateRaiseHand, 0);
670
- assert.callCount(ControlsOptionsUtil.canUpdateReactions, 0);
671
- assert.callCount(ControlsOptionsUtil.canUpdateShareControl, 0);
672
- assert.callCount(ControlsOptionsUtil.canUpdateVideo, 0);
673
- assert.callCount(ControlsOptionsUtil.canUpdateViewTheParticipantsList, 0);
674
- assert.callCount(ControlsOptionsUtil.canUpdateAnnotation, 0);
675
- assert.callCount(ControlsOptionsUtil.canUpdateRemoteDesktopControl, 0);
676
- assert.calledWith(
677
- ControlsOptionsUtil.canUpdatePollingQA,
678
- control,
679
- displayHints
680
- );
681
624
  assert.isTrue(results);
682
625
  });
683
626
 
@@ -694,7 +637,6 @@ describe('plugin-meetings', () => {
694
637
  assert.callCount(ControlsOptionsUtil.canUpdateViewTheParticipantsList, 0);
695
638
  assert.callCount(ControlsOptionsUtil.canUpdateAnnotation, 0);
696
639
  assert.callCount(ControlsOptionsUtil.canUpdateRemoteDesktopControl, 0);
697
- assert.callCount(ControlsOptionsUtil.canUpdatePollingQA, 0);
698
640
  assert.isFalse(results);
699
641
  });
700
642
  });
@@ -164,14 +164,6 @@ describe('plugin-meetings', () => {
164
164
 
165
165
  assert.equal(parsedControls.rdcControl.enabled, newControls.rdcControl.enabled);
166
166
  });
167
-
168
- it('should parse the pollingQAControl control', () => {
169
- const newControls = {pollingQAControl: {enabled: true}};
170
-
171
- const parsedControls = ControlsUtils.parse(newControls);
172
-
173
- assert.equal(parsedControls.pollingQAControl.enabled, newControls.pollingQAControl.enabled);
174
- });
175
167
 
176
168
  describe('videoEnabled', () => {
177
169
  it('returns expected', () => {
@@ -419,50 +411,6 @@ describe('plugin-meetings', () => {
419
411
  assert.equal(updates.hasRemoteDesktopControlChanged, true);
420
412
  });
421
413
 
422
- it('returns hasPollingQAControlChanged = true when changed', () => {
423
- const newControls = {pollingQAControl: {enabled: true}};
424
-
425
- const {updates} = ControlsUtils.getControls(defaultControls, newControls);
426
-
427
- assert.equal(updates.hasPollingQAControlChanged, true);
428
- });
429
-
430
- it('returns false when previous spoken language is undefined and current is a invalid value', () => {
431
- const previous = { transcribe: undefined };
432
- const current = { transcribe: { spokenLanguage: null } };
433
-
434
- const {updates} = ControlsUtils.getControls(previous, current);
435
-
436
- assert.equal(updates.hasTranscribeSpokenLanguageChanged, false);
437
- });
438
-
439
- it('detects spoken language change when previous is undefined and current is a valid value', () => {
440
- const previous = { transcribe: undefined };
441
- const current = { transcribe: { spokenLanguage: 'en-US' } };
442
-
443
- const {updates} = ControlsUtils.getControls(previous, current);
444
-
445
- assert.equal(updates.hasTranscribeSpokenLanguageChanged, true);
446
- });
447
-
448
- it('returns false when spoken language changes to a same value', () => {
449
- const previous = { transcribe: {caption: true, spokenLanguage: 'en-US' } };
450
- const current = { transcribe: {caption: true, spokenLanguage: 'en-US' } };
451
-
452
- const {updates} = ControlsUtils.getControls(previous, current);
453
-
454
- assert.equal(updates.hasTranscribeSpokenLanguageChanged, false);
455
- });
456
-
457
- it('returns true when spoken language changes to a different value', () => {
458
- const previous = { transcribe: {caption: true, spokenLanguage: 'en-US' } };
459
- const current = { transcribe: {caption: true, spokenLanguage: 'fr-FR' } };
460
-
461
- const {updates} = ControlsUtils.getControls(previous, current);
462
-
463
- assert.equal(updates.hasTranscribeSpokenLanguageChanged, true);
464
- });
465
-
466
414
  describe('videoEnabled', () => {
467
415
  const testVideoEnabled = (oldControls, newControls, updatedProperty) => {
468
416
  const result = ControlsUtils.getControls(oldControls, newControls);
@@ -305,20 +305,6 @@ describe('plugin-meetings', () => {
305
305
  {state: newControls.rdcControl}
306
306
  );
307
307
  });
308
-
309
- it('should trigger the CONTROLS_POLLING_QA_CHANGED event when necessary', () => {
310
- locusInfo.controls = {};
311
- locusInfo.emitScoped = sinon.stub();
312
- newControls.pollingQAControl = { enabled: true };
313
- locusInfo.updateControls(newControls);
314
-
315
- assert.calledWith(
316
- locusInfo.emitScoped,
317
- {file: 'locus-info', function: 'updateControls'},
318
- LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED,
319
- {state: newControls.pollingQAControl}
320
- );
321
- });
322
308
 
323
309
  it('should keep the recording state to `IDLE`', () => {
324
310
  locusInfo.controls = {
@@ -571,34 +557,6 @@ describe('plugin-meetings', () => {
571
557
  );
572
558
  });
573
559
 
574
- it('should update the transcribe spoken language', () => {
575
- locusInfo.emitScoped = sinon.stub();
576
- locusInfo.controls = {
577
- transcribe: {
578
- transcribing: false,
579
- caption: true,
580
- spokenLanguage: 'en-US',
581
- },
582
- };
583
- newControls.transcribe.transcribing = false;
584
- newControls.transcribe.caption = true;
585
- newControls.transcribe.spokenLanguage = 'fr';
586
-
587
- locusInfo.updateControls(newControls);
588
-
589
- assert.calledWith(
590
- locusInfo.emitScoped,
591
- {
592
- file: 'locus-info',
593
- function: 'updateControls',
594
- },
595
- LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,
596
- {
597
- spokenLanguage: 'fr',
598
- }
599
- );
600
- });
601
-
602
560
  it('should update the manual caption state', () => {
603
561
  locusInfo.emitScoped = sinon.stub();
604
562
  locusInfo.controls = {
@@ -1,14 +1,12 @@
1
1
  import sinon from 'sinon';
2
- import {assert, expect} from '@webex/test-helper-chai';
2
+ import {assert} from '@webex/test-helper-chai';
3
3
 
4
4
  import testUtils from '../../../utils/testUtils';
5
5
  import {BrbState, createBrbState} from '@webex/plugin-meetings/src/meeting/brbState';
6
- import LoggerProxy from '@webex/plugin-meetings/src/common/logs/logger-proxy';
7
6
 
8
7
  describe('plugin-meetings', () => {
9
8
  let meeting: any;
10
9
  let brbState: BrbState;
11
- let setBrbStub: sinon.SinonStub;
12
10
 
13
11
  beforeEach(async () => {
14
12
  meeting = {
@@ -23,20 +21,14 @@ describe('plugin-meetings', () => {
23
21
  setSourceStateOverride: sinon.stub(),
24
22
  },
25
23
  meetingRequest: {
26
- setBrb: () => {}
24
+ setBrb: sinon.stub().resolves(),
27
25
  },
28
26
  };
29
27
 
30
- setBrbStub = sinon.stub(meeting.meetingRequest, 'setBrb').resolves();
31
-
32
28
  brbState = new BrbState(meeting, false);
33
29
  await testUtils.flushPromises();
34
30
  });
35
31
 
36
- afterEach(() => {
37
- sinon.restore();
38
- });
39
-
40
32
  describe('brbState library', () => {
41
33
  it('takes into account current status when instantiated', async () => {
42
34
  // create a new BrbState instance
@@ -137,16 +129,5 @@ describe('plugin-meetings', () => {
137
129
  sendLocalBrbStateToServerStub.restore();
138
130
  handleServerBrbUpdateSpy.restore();
139
131
  });
140
-
141
- it('should reject when sendLocalBrbStateToServer fails', async () => {
142
- const error = new Error('send failed');
143
- setBrbStub.rejects(error);
144
-
145
- await expect(
146
- brbState.enable(true, meeting.sendSlotManager)
147
- ).to.be.rejectedWith(error);
148
-
149
- assert.isFalse(brbState.state.syncToServerInProgress);
150
- });
151
132
  });
152
133
  });
@@ -102,8 +102,6 @@ describe('plugin-meetings', () => {
102
102
  canEnableRemoteDesktopControl: null,
103
103
  canDisableRemoteDesktopControl: null,
104
104
  canMoveToLobby: null,
105
- canEnablePollingQA: null,
106
- canDisablePollingQA: null,
107
105
 
108
106
  ...expected,
109
107
  };
@@ -212,8 +210,6 @@ describe('plugin-meetings', () => {
212
210
  'canEnableRemoteDesktopControl',
213
211
  'canDisableRemoteDesktopControl',
214
212
  'canMoveToLobby',
215
- 'canEnablePollingQA',
216
- 'canDisablePollingQA',
217
213
  ].forEach((key) => {
218
214
  it(`get and set for ${key} work as expected`, () => {
219
215
  const inMeetingActions = new InMeetingActions();