@webex/plugin-meetings 3.8.1 → 3.9.0-next.10

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 (294) hide show
  1. package/README.md +26 -13
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.js +32 -3
  5. package/dist/constants.js.map +1 -1
  6. package/dist/controls-options-manager/enums.js +1 -0
  7. package/dist/controls-options-manager/enums.js.map +1 -1
  8. package/dist/controls-options-manager/types.js.map +1 -1
  9. package/dist/controls-options-manager/util.js +26 -0
  10. package/dist/controls-options-manager/util.js.map +1 -1
  11. package/dist/interpretation/index.js +1 -1
  12. package/dist/interpretation/siLanguage.js +1 -1
  13. package/dist/locus-info/controlsUtils.js +11 -3
  14. package/dist/locus-info/controlsUtils.js.map +1 -1
  15. package/dist/locus-info/index.js +84 -91
  16. package/dist/locus-info/index.js.map +1 -1
  17. package/dist/locus-info/parser.js +4 -1
  18. package/dist/locus-info/parser.js.map +1 -1
  19. package/dist/media/index.js +2 -2
  20. package/dist/media/index.js.map +1 -1
  21. package/dist/meeting/brbState.js +17 -14
  22. package/dist/meeting/brbState.js.map +1 -1
  23. package/dist/meeting/in-meeting-actions.js +11 -1
  24. package/dist/meeting/in-meeting-actions.js.map +1 -1
  25. package/dist/meeting/index.js +484 -287
  26. package/dist/meeting/index.js.map +1 -1
  27. package/dist/meeting/request.js +19 -0
  28. package/dist/meeting/request.js.map +1 -1
  29. package/dist/meeting/request.type.js.map +1 -1
  30. package/dist/{rtcMetrics/constants.js → meeting/type.js} +1 -5
  31. package/dist/meeting/type.js.map +1 -0
  32. package/dist/meeting/util.js +68 -2
  33. package/dist/meeting/util.js.map +1 -1
  34. package/dist/meetings/index.js +35 -33
  35. package/dist/meetings/index.js.map +1 -1
  36. package/dist/members/index.js +14 -11
  37. package/dist/members/index.js.map +1 -1
  38. package/dist/members/request.js +3 -3
  39. package/dist/members/request.js.map +1 -1
  40. package/dist/members/util.js +25 -8
  41. package/dist/members/util.js.map +1 -1
  42. package/dist/metrics/constants.js +1 -0
  43. package/dist/metrics/constants.js.map +1 -1
  44. package/dist/multistream/mediaRequestManager.js +1 -1
  45. package/dist/multistream/mediaRequestManager.js.map +1 -1
  46. package/dist/multistream/remoteMedia.js +34 -5
  47. package/dist/multistream/remoteMedia.js.map +1 -1
  48. package/dist/multistream/remoteMediaGroup.js +42 -2
  49. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  50. package/dist/multistream/sendSlotManager.js +32 -2
  51. package/dist/multistream/sendSlotManager.js.map +1 -1
  52. package/dist/reachability/index.js +8 -13
  53. package/dist/reachability/index.js.map +1 -1
  54. package/dist/types/constants.d.ts +28 -0
  55. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  56. package/dist/types/controls-options-manager/types.d.ts +4 -1
  57. package/dist/types/locus-info/index.d.ts +2 -9
  58. package/dist/types/meeting/brbState.d.ts +0 -1
  59. package/dist/types/meeting/in-meeting-actions.d.ts +10 -0
  60. package/dist/types/meeting/index.d.ts +47 -19
  61. package/dist/types/meeting/request.d.ts +9 -1
  62. package/dist/types/meeting/request.type.d.ts +74 -0
  63. package/dist/types/meeting/type.d.ts +9 -0
  64. package/dist/types/meeting/util.d.ts +3 -0
  65. package/dist/types/members/index.d.ts +12 -8
  66. package/dist/types/members/request.d.ts +1 -1
  67. package/dist/types/members/util.d.ts +13 -6
  68. package/dist/types/metrics/constants.d.ts +1 -0
  69. package/dist/types/multistream/remoteMedia.d.ts +20 -1
  70. package/dist/types/multistream/remoteMediaGroup.d.ts +11 -0
  71. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  72. package/dist/types/reachability/index.d.ts +2 -2
  73. package/dist/webinar/index.js +1 -1
  74. package/package.json +24 -25
  75. package/src/constants.ts +32 -2
  76. package/src/controls-options-manager/enums.ts +1 -0
  77. package/src/controls-options-manager/types.ts +6 -1
  78. package/src/controls-options-manager/util.ts +31 -0
  79. package/src/locus-info/controlsUtils.ts +15 -0
  80. package/src/locus-info/index.ts +103 -92
  81. package/src/locus-info/parser.ts +5 -1
  82. package/src/media/index.ts +2 -2
  83. package/src/meeting/brbState.ts +13 -9
  84. package/src/meeting/in-meeting-actions.ts +21 -0
  85. package/src/meeting/index.ts +278 -73
  86. package/src/meeting/request.ts +16 -0
  87. package/src/meeting/request.type.ts +64 -0
  88. package/src/meeting/type.ts +9 -0
  89. package/src/meeting/util.ts +73 -2
  90. package/src/meetings/index.ts +3 -2
  91. package/src/members/index.ts +22 -12
  92. package/src/members/request.ts +2 -2
  93. package/src/members/util.ts +34 -6
  94. package/src/metrics/constants.ts +1 -0
  95. package/src/multistream/mediaRequestManager.ts +7 -7
  96. package/src/multistream/remoteMedia.ts +34 -4
  97. package/src/multistream/remoteMediaGroup.ts +37 -2
  98. package/src/multistream/sendSlotManager.ts +34 -2
  99. package/src/reachability/index.ts +8 -16
  100. package/test/unit/spec/controls-options-manager/util.js +58 -0
  101. package/test/unit/spec/locus-info/controlsUtils.js +52 -0
  102. package/test/unit/spec/locus-info/index.js +247 -89
  103. package/test/unit/spec/locus-info/parser.js +3 -2
  104. package/test/unit/spec/media/index.ts +107 -0
  105. package/test/unit/spec/meeting/brbState.ts +23 -4
  106. package/test/unit/spec/meeting/in-meeting-actions.ts +10 -0
  107. package/test/unit/spec/meeting/index.js +976 -91
  108. package/test/unit/spec/meeting/request.js +71 -0
  109. package/test/unit/spec/meeting/utils.js +122 -1
  110. package/test/unit/spec/meetings/index.js +2 -0
  111. package/test/unit/spec/members/index.js +98 -11
  112. package/test/unit/spec/members/request.js +57 -2
  113. package/test/unit/spec/members/utils.js +139 -17
  114. package/test/unit/spec/multistream/mediaRequestManager.ts +19 -6
  115. package/test/unit/spec/multistream/remoteMedia.ts +66 -2
  116. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  117. package/test/unit/spec/reachability/index.ts +160 -9
  118. package/dist/annotation/annotation.types.d.ts +0 -42
  119. package/dist/annotation/constants.d.ts +0 -31
  120. package/dist/annotation/index.d.ts +0 -117
  121. package/dist/breakouts/breakout.d.ts +0 -8
  122. package/dist/breakouts/collection.d.ts +0 -5
  123. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  124. package/dist/breakouts/events.d.ts +0 -8
  125. package/dist/breakouts/index.d.ts +0 -5
  126. package/dist/breakouts/request.d.ts +0 -22
  127. package/dist/breakouts/utils.d.ts +0 -15
  128. package/dist/common/browser-detection.d.ts +0 -9
  129. package/dist/common/collection.d.ts +0 -48
  130. package/dist/common/config.d.ts +0 -2
  131. package/dist/common/errors/captcha-error.d.ts +0 -15
  132. package/dist/common/errors/intent-to-join.d.ts +0 -16
  133. package/dist/common/errors/join-meeting.d.ts +0 -17
  134. package/dist/common/errors/media.d.ts +0 -15
  135. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  136. package/dist/common/errors/parameter.d.ts +0 -15
  137. package/dist/common/errors/password-error.d.ts +0 -15
  138. package/dist/common/errors/permission.d.ts +0 -14
  139. package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
  140. package/dist/common/errors/reclaim-host-role-error.js +0 -158
  141. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  142. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  143. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  144. package/dist/common/errors/reconnection-in-progress.js +0 -35
  145. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  146. package/dist/common/errors/reconnection.d.ts +0 -15
  147. package/dist/common/errors/stats.d.ts +0 -15
  148. package/dist/common/errors/webex-errors.d.ts +0 -81
  149. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  150. package/dist/common/events/events-scope.d.ts +0 -17
  151. package/dist/common/events/events.d.ts +0 -12
  152. package/dist/common/events/trigger-proxy.d.ts +0 -2
  153. package/dist/common/events/util.d.ts +0 -2
  154. package/dist/common/logs/logger-config.d.ts +0 -2
  155. package/dist/common/logs/logger-proxy.d.ts +0 -2
  156. package/dist/common/logs/request.d.ts +0 -34
  157. package/dist/common/queue.d.ts +0 -32
  158. package/dist/config.d.ts +0 -73
  159. package/dist/constants.d.ts +0 -952
  160. package/dist/controls-options-manager/constants.d.ts +0 -4
  161. package/dist/controls-options-manager/enums.d.ts +0 -5
  162. package/dist/controls-options-manager/index.d.ts +0 -120
  163. package/dist/controls-options-manager/types.d.ts +0 -43
  164. package/dist/controls-options-manager/util.d.ts +0 -7
  165. package/dist/index.d.ts +0 -4
  166. package/dist/interceptors/index.d.ts +0 -2
  167. package/dist/interceptors/locusRetry.d.ts +0 -27
  168. package/dist/interpretation/collection.d.ts +0 -5
  169. package/dist/interpretation/index.d.ts +0 -5
  170. package/dist/interpretation/siLanguage.d.ts +0 -5
  171. package/dist/locus-info/controlsUtils.d.ts +0 -2
  172. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  173. package/dist/locus-info/fullState.d.ts +0 -2
  174. package/dist/locus-info/hostUtils.d.ts +0 -2
  175. package/dist/locus-info/index.d.ts +0 -269
  176. package/dist/locus-info/infoUtils.d.ts +0 -2
  177. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  178. package/dist/locus-info/parser.d.ts +0 -212
  179. package/dist/locus-info/selfUtils.d.ts +0 -2
  180. package/dist/media/index.d.ts +0 -32
  181. package/dist/media/properties.d.ts +0 -108
  182. package/dist/media/util.d.ts +0 -2
  183. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  184. package/dist/mediaQualityMetrics/config.js +0 -513
  185. package/dist/mediaQualityMetrics/config.js.map +0 -1
  186. package/dist/meeting/effectsState.d.ts +0 -42
  187. package/dist/meeting/effectsState.js +0 -260
  188. package/dist/meeting/effectsState.js.map +0 -1
  189. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  190. package/dist/meeting/index.d.ts +0 -1622
  191. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  192. package/dist/meeting/muteState.d.ts +0 -116
  193. package/dist/meeting/request.d.ts +0 -257
  194. package/dist/meeting/request.type.d.ts +0 -11
  195. package/dist/meeting/state.d.ts +0 -9
  196. package/dist/meeting/util.d.ts +0 -2
  197. package/dist/meeting/voicea-meeting.d.ts +0 -16
  198. package/dist/meeting-info/collection.d.ts +0 -20
  199. package/dist/meeting-info/index.d.ts +0 -57
  200. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  201. package/dist/meeting-info/request.d.ts +0 -22
  202. package/dist/meeting-info/util.d.ts +0 -2
  203. package/dist/meeting-info/utilv2.d.ts +0 -2
  204. package/dist/meetings/collection.d.ts +0 -23
  205. package/dist/meetings/index.d.ts +0 -296
  206. package/dist/meetings/meetings.types.d.ts +0 -4
  207. package/dist/meetings/request.d.ts +0 -27
  208. package/dist/meetings/util.d.ts +0 -18
  209. package/dist/member/index.d.ts +0 -148
  210. package/dist/member/member.types.d.ts +0 -11
  211. package/dist/member/member.types.js +0 -18
  212. package/dist/member/member.types.js.map +0 -1
  213. package/dist/member/types.d.ts +0 -32
  214. package/dist/member/util.d.ts +0 -2
  215. package/dist/members/collection.d.ts +0 -24
  216. package/dist/members/index.d.ts +0 -308
  217. package/dist/members/request.d.ts +0 -58
  218. package/dist/members/types.d.ts +0 -25
  219. package/dist/members/util.d.ts +0 -2
  220. package/dist/metrics/config.d.ts +0 -169
  221. package/dist/metrics/config.js +0 -289
  222. package/dist/metrics/config.js.map +0 -1
  223. package/dist/metrics/constants.d.ts +0 -59
  224. package/dist/metrics/index.d.ts +0 -152
  225. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  226. package/dist/multistream/receiveSlot.d.ts +0 -68
  227. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  228. package/dist/multistream/remoteMedia.d.ts +0 -72
  229. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  230. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  231. package/dist/multistream/sendSlotManager.d.ts +0 -69
  232. package/dist/networkQualityMonitor/index.d.ts +0 -70
  233. package/dist/networkQualityMonitor/index.js +0 -226
  234. package/dist/networkQualityMonitor/index.js.map +0 -1
  235. package/dist/peer-connection-manager/index.d.ts +0 -6
  236. package/dist/peer-connection-manager/index.js +0 -671
  237. package/dist/peer-connection-manager/index.js.map +0 -1
  238. package/dist/peer-connection-manager/util.d.ts +0 -6
  239. package/dist/peer-connection-manager/util.js +0 -110
  240. package/dist/peer-connection-manager/util.js.map +0 -1
  241. package/dist/personal-meeting-room/index.d.ts +0 -47
  242. package/dist/personal-meeting-room/request.d.ts +0 -14
  243. package/dist/personal-meeting-room/util.d.ts +0 -2
  244. package/dist/reachability/clusterReachability.d.ts +0 -109
  245. package/dist/reachability/index.d.ts +0 -139
  246. package/dist/reachability/request.d.ts +0 -35
  247. package/dist/reachability/util.d.ts +0 -8
  248. package/dist/reactions/constants.d.ts +0 -3
  249. package/dist/reactions/reactions.d.ts +0 -4
  250. package/dist/reactions/reactions.type.d.ts +0 -32
  251. package/dist/reconnection-manager/index.d.ts +0 -112
  252. package/dist/recording-controller/enums.d.ts +0 -7
  253. package/dist/recording-controller/index.d.ts +0 -193
  254. package/dist/recording-controller/util.d.ts +0 -13
  255. package/dist/roap/collection.d.ts +0 -10
  256. package/dist/roap/collection.js +0 -63
  257. package/dist/roap/collection.js.map +0 -1
  258. package/dist/roap/handler.d.ts +0 -47
  259. package/dist/roap/handler.js +0 -279
  260. package/dist/roap/handler.js.map +0 -1
  261. package/dist/roap/index.d.ts +0 -116
  262. package/dist/roap/request.d.ts +0 -35
  263. package/dist/roap/state.d.ts +0 -9
  264. package/dist/roap/state.js +0 -127
  265. package/dist/roap/state.js.map +0 -1
  266. package/dist/roap/turnDiscovery.d.ts +0 -81
  267. package/dist/roap/util.d.ts +0 -2
  268. package/dist/roap/util.js +0 -76
  269. package/dist/roap/util.js.map +0 -1
  270. package/dist/rtcMetrics/constants.d.ts +0 -4
  271. package/dist/rtcMetrics/constants.js.map +0 -1
  272. package/dist/rtcMetrics/index.d.ts +0 -61
  273. package/dist/rtcMetrics/index.js +0 -197
  274. package/dist/rtcMetrics/index.js.map +0 -1
  275. package/dist/statsAnalyzer/global.d.ts +0 -118
  276. package/dist/statsAnalyzer/global.js +0 -127
  277. package/dist/statsAnalyzer/global.js.map +0 -1
  278. package/dist/statsAnalyzer/index.d.ts +0 -193
  279. package/dist/statsAnalyzer/index.js +0 -1019
  280. package/dist/statsAnalyzer/index.js.map +0 -1
  281. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  282. package/dist/statsAnalyzer/mqaUtil.js +0 -181
  283. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  284. package/dist/transcription/index.d.ts +0 -64
  285. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  286. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  287. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  288. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  289. package/dist/types/rtcMetrics/index.d.ts +0 -71
  290. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  291. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  292. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  293. package/dist/webinar/collection.d.ts +0 -16
  294. package/dist/webinar/index.d.ts +0 -5
@@ -11,7 +11,6 @@ _Object$defineProperty(exports, "__esModule", {
11
11
  value: true
12
12
  });
13
13
  exports.default = void 0;
14
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
15
14
  var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
16
15
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
17
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
@@ -69,7 +68,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
69
68
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "aclUrl", void 0);
70
69
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "baseSequence", void 0);
71
70
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "created", void 0);
72
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "deltaParticipants", void 0);
73
71
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "identities", void 0);
74
72
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "membership", void 0);
75
73
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "participants", void 0);
@@ -107,20 +105,29 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
107
105
  * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.
108
106
  *
109
107
  * @param {Meeting} meeting
108
+ * @param {boolean} isLocusUrlChanged
109
+ * @param {Locus} locus
110
110
  * @returns {undefined}
111
111
  */
112
112
  (0, _createClass2.default)(LocusInfo, [{
113
113
  key: "doLocusSync",
114
- value: function doLocusSync(meeting) {
115
- var _this2 = this;
116
- var isDelta;
114
+ value: function doLocusSync(meeting, isLocusUrlChanged, locus) {
115
+ var _this$locusParser$wor,
116
+ _this2 = this;
117
117
  var url;
118
- if (this.locusParser.workingCopy.syncUrl) {
118
+ var isDelta = false;
119
+ var meetingDestroyed = false;
120
+ if (isLocusUrlChanged) {
121
+ // for the locus url changed case from breakout to main session, we should always do a full sync, in this case, the url from locus is always on main session,
122
+ // so use the main session locus url to get the full locus(full participants list in the response).
123
+ // for the locus url changed case from main session to breakout, we don't need to care about it here,
124
+ // because it is a USE_INCOMING case, it will not be executed here.
125
+ url = locus.url;
126
+ } else if ((_this$locusParser$wor = this.locusParser.workingCopy) !== null && _this$locusParser$wor !== void 0 && _this$locusParser$wor.syncUrl) {
119
127
  url = this.locusParser.workingCopy.syncUrl;
120
128
  isDelta = true;
121
129
  } else {
122
130
  url = meeting.locusUrl;
123
- isDelta = false;
124
131
  }
125
132
  _loggerProxy.default.logger.info("Locus-info:index#doLocusSync --> doing Locus sync (getting ".concat(isDelta ? 'delta' : 'full', " DTO)"));
126
133
 
@@ -139,30 +146,59 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
139
146
  code: e.code
140
147
  });
141
148
  isDelta = false;
142
- return meeting.meetingRequest.getLocusDTO({
143
- url: meeting.locusUrl
144
- }).catch(function (err) {
145
- _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
146
- _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
147
- throw err;
148
- });
149
+
150
+ // Locus sometimes returns 403, for example if meeting has ended, no point trying the fallback to full sync in that case
151
+ if (e.statusCode !== 403) {
152
+ return meeting.meetingRequest.getLocusDTO({
153
+ url: meeting.locusUrl
154
+ }).catch(function (err) {
155
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
156
+ _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
157
+ meetingDestroyed = true;
158
+ throw err;
159
+ });
160
+ }
161
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> got 403 from Locus, skipping fallback to full sync, destroying the meeting');
162
+ } else {
163
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
149
164
  }
150
- _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
151
165
  _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
166
+ meetingDestroyed = true;
152
167
  throw e;
153
168
  }).then(function (res) {
169
+ if ((0, _lodash.isEmpty)(res.body)) {
170
+ if (isDelta) {
171
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO');
172
+ } else {
173
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> received empty body from full DTO sync request');
174
+ }
175
+ return;
176
+ }
154
177
  if (isDelta) {
155
- if (!(0, _lodash.isEmpty)(res.body)) {
178
+ if (res.body.baseSequence) {
156
179
  meeting.locusInfo.handleLocusDelta(res.body, meeting);
157
- } else {
158
- _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO');
180
+ return;
159
181
  }
160
- } else {
161
- meeting.locusInfo.onFullLocus(res.body);
182
+ // in some cases Locus might return us full DTO even when we asked for a delta
183
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> got full DTO when we asked for delta');
184
+ }
185
+ meeting.locusInfo.onFullLocus(res.body);
186
+ }).catch(function (e) {
187
+ _loggerProxy.default.logger.info("Locus-info:index#doLocusSync --> getLocusDTO succeeded but failed to handle result, locus parser will resume but not all data may be synced (".concat(e.toString(), ")"));
188
+ _metrics.default.sendBehavioralMetric(_constants2.default.LOCUS_SYNC_HANDLING_FAILED, {
189
+ correlationId: meeting.correlationId,
190
+ url: url,
191
+ reason: e.message,
192
+ errorName: e.name,
193
+ stack: e.stack,
194
+ code: e.code
195
+ });
196
+ }).finally(function () {
197
+ if (!meetingDestroyed) {
198
+ // Notify parser to resume processing delta events.
199
+ // Any deltas in the queue that have now been superseded by this sync will simply be ignored
200
+ _this2.locusParser.resume();
162
201
  }
163
- // Notify parser to resume processing delta events.
164
- // Any deltas in the queue that have now been superseded by this sync will simply be ignored
165
- _this2.locusParser.resume();
166
202
  });
167
203
  }
168
204
 
@@ -182,6 +218,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
182
218
  USE_INCOMING = _LocusDeltaParser$loc.USE_INCOMING,
183
219
  WAIT = _LocusDeltaParser$loc.WAIT,
184
220
  LOCUS_URL_CHANGED = _LocusDeltaParser$loc.LOCUS_URL_CHANGED;
221
+ var isLocusUrlChanged = action === LOCUS_URL_CHANGED;
185
222
  switch (action) {
186
223
  case USE_INCOMING:
187
224
  meeting.locusInfo.onDeltaLocus(locus);
@@ -192,7 +229,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
192
229
  break;
193
230
  case DESYNC:
194
231
  case LOCUS_URL_CHANGED:
195
- this.doLocusSync(meeting);
232
+ this.doLocusSync(meeting, isLocusUrlChanged, locus);
196
233
  break;
197
234
  default:
198
235
  _loggerProxy.default.logger.info("Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ".concat(action));
@@ -252,16 +289,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
252
289
  * @property {Object} person - Contains person data.
253
290
  */
254
291
 
255
- /**
256
- * Stored participant changes between the last event and the current event.
257
- * All previously stored events are overwritten between events.
258
- *
259
- * @instance
260
- * @type {Array<DeltaParticipant>}
261
- * @private
262
- * @member LocusInfo
263
- */
264
- this.deltaParticipants = [];
265
292
  this.updateLocusCache(locus);
266
293
  // above section only updates the locusInfo object
267
294
  // The below section makes sure it updates the locusInfo as well as updates the meeting object
@@ -366,7 +393,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
366
393
  _loggerProxy.default.logger.info("Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=".concat(eventType));
367
394
  return;
368
395
  }
369
- this.updateParticipantDeltas(locus.participants);
370
396
  this.scheduledMeeting = locus.meeting || null;
371
397
  this.participants = locus.participants;
372
398
  var isReplaceMembers = _controlsUtils.default.isNeedReplaceMembers(this.controls, locus.controls);
@@ -450,12 +476,12 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
450
476
  this.updateCreated(locus.created);
451
477
  this.updateFullState(locus.fullState);
452
478
  this.updateHostInfo(locus.host);
479
+ this.updateLocusUrl(locus.url);
453
480
  this.updateMeetingInfo(locus.info, locus.self);
454
481
  this.updateMediaShares(locus.mediaShares);
455
482
  this.updateParticipantsUrl(locus.participantsUrl);
456
483
  this.updateReplace(locus.replace);
457
484
  this.updateSelf(locus.self);
458
- this.updateLocusUrl(locus.url);
459
485
  this.updateAclUrl(locus.aclUrl);
460
486
  this.updateBasequence(locus.baseSequence);
461
487
  this.updateSequence(locus.sequence);
@@ -657,58 +683,6 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
657
683
  }
658
684
  }
659
685
 
660
- /**
661
- * Update the deltaParticipants property of this object based on a list of
662
- * provided participants.
663
- *
664
- * @param {Array} [participants] - The participants to update against.
665
- * @returns {void}
666
- */
667
- }, {
668
- key: "updateParticipantDeltas",
669
- value: function updateParticipantDeltas() {
670
- var _this4 = this;
671
- var participants = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
672
- // Used to find a participant within a participants collection.
673
- var findParticipant = function findParticipant(participant, collection) {
674
- return collection.find(function (item) {
675
- return item.person.id === participant.person.id;
676
- });
677
- };
678
-
679
- // Generates an object that indicates which state properties have changed.
680
- var generateDelta = function generateDelta() {
681
- var prevState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
682
- var newState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
683
- // Setup deltas.
684
- var deltas = {
685
- audioStatus: prevState.audioStatus !== newState.audioStatus,
686
- videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,
687
- videoStatus: prevState.videoStatus !== newState.videoStatus
688
- };
689
-
690
- // Clean the object
691
- (0, _keys.default)(deltas).forEach(function (key) {
692
- if (deltas[key] !== true) {
693
- delete deltas[key];
694
- }
695
- });
696
- return deltas;
697
- };
698
- this.deltaParticipants = participants.reduce(function (collection, participant) {
699
- var existingParticipant = findParticipant(participant, _this4.participants || []) || {};
700
- var delta = generateDelta(existingParticipant.status, participant.status);
701
- var changed = (0, _keys.default)(delta).length > 0;
702
- if (changed) {
703
- collection.push({
704
- person: participant.person,
705
- delta: delta
706
- });
707
- }
708
- return collection;
709
- }, []);
710
- }
711
-
712
686
  /**
713
687
  * update meeting's members
714
688
  * @param {Object} participants new participants object
@@ -772,6 +746,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
772
746
  hasRecordingPausedChanged = _ControlsUtils$getCon2.hasRecordingPausedChanged,
773
747
  hasMeetingContainerChanged = _ControlsUtils$getCon2.hasMeetingContainerChanged,
774
748
  hasTranscribeChanged = _ControlsUtils$getCon2.hasTranscribeChanged,
749
+ hasTranscribeSpokenLanguageChanged = _ControlsUtils$getCon2.hasTranscribeSpokenLanguageChanged,
775
750
  hasManualCaptionChanged = _ControlsUtils$getCon2.hasManualCaptionChanged,
776
751
  hasEntryExitToneChanged = _ControlsUtils$getCon2.hasEntryExitToneChanged,
777
752
  hasBreakoutChanged = _ControlsUtils$getCon2.hasBreakoutChanged,
@@ -791,6 +766,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
791
766
  hasStageViewChanged = _ControlsUtils$getCon2.hasStageViewChanged,
792
767
  hasAnnotationControlChanged = _ControlsUtils$getCon2.hasAnnotationControlChanged,
793
768
  hasRemoteDesktopControlChanged = _ControlsUtils$getCon2.hasRemoteDesktopControlChanged,
769
+ hasPollingQAControlChanged = _ControlsUtils$getCon2.hasPollingQAControlChanged,
794
770
  current = _ControlsUtils$getCon.current;
795
771
  if (hasMuteOnEntryChanged) {
796
772
  this.emitScoped({
@@ -890,6 +866,15 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
890
866
  caption: caption
891
867
  });
892
868
  }
869
+ if (hasTranscribeSpokenLanguageChanged) {
870
+ var spokenLanguage = current.transcribe.spokenLanguage;
871
+ this.emitScoped({
872
+ file: 'locus-info',
873
+ function: 'updateControls'
874
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, {
875
+ spokenLanguage: spokenLanguage
876
+ });
877
+ }
893
878
  if (hasManualCaptionChanged) {
894
879
  var enabled = current.manualCaptionControl.enabled;
895
880
  this.emitScoped({
@@ -994,6 +979,14 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
994
979
  state: current.rdcControl
995
980
  });
996
981
  }
982
+ if (hasPollingQAControlChanged) {
983
+ this.emitScoped({
984
+ file: 'locus-info',
985
+ function: 'updateControls'
986
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, {
987
+ state: current.pollingQAControl
988
+ });
989
+ }
997
990
  this.controls = controls;
998
991
  }
999
992
  }
@@ -1145,7 +1138,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1145
1138
  value: function updateMeetingInfo(info, self) {
1146
1139
  var _this$parsedLocus$sel;
1147
1140
  var roles = self ? _selfUtils.default.getRoles(self) : ((_this$parsedLocus$sel = this.parsedLocus.self) === null || _this$parsedLocus$sel === void 0 ? void 0 : _this$parsedLocus$sel.roles) || [];
1148
- if (info && !(0, _lodash.isEqual)(this.info, info) || roles.length && !(0, _lodash.isEqual)(this.roles, roles) && info) {
1141
+ if (info && !(0, _lodash.isEqual)(this.info, info) || !(0, _lodash.isEqual)(this.roles, roles) && info) {
1149
1142
  var isJoined = _selfUtils.default.isJoined(self || this.parsedLocus.self);
1150
1143
  var parsedInfo = _infoUtils.default.getInfos(this.parsedLocus.info, info, roles, isJoined);
1151
1144
  if (parsedInfo.updates.isLocked) {
@@ -1607,7 +1600,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1607
1600
  }, {
1608
1601
  key: "updateMainSessionLocusCache",
1609
1602
  value: function updateMainSessionLocusCache(mainLocus) {
1610
- var _this5 = this;
1603
+ var _this4 = this;
1611
1604
  if (!mainLocus) {
1612
1605
  return;
1613
1606
  }
@@ -1616,7 +1609,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1616
1609
  // shallow merge and do special merge for participants
1617
1610
  (0, _lodash.assignWith)(this.mainSessionLocusCache, locusClone, function (objValue, srcValue, key) {
1618
1611
  if (key === 'participants') {
1619
- return _this5.mergeParticipants(objValue, srcValue);
1612
+ return _this4.mergeParticipants(objValue, srcValue);
1620
1613
  }
1621
1614
  return srcValue || objValue;
1622
1615
  });