@webex/plugin-meetings 3.0.0-beta.8 → 3.0.0-beta.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/breakouts/breakout.js +178 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/index.js +843 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +56 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +37 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +7 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +160 -52
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +25 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +292 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +250 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +11 -18
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +31 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +242 -201
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +87 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +56 -146
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +83 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +35 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2264 -2242
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +102 -100
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +308 -264
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +69 -217
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +268 -279
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +154 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +26 -19
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +566 -552
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +151 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +100 -85
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +90 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +13 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +175 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +54 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +107 -44
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +4 -14
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +3 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +59 -156
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +167 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +74 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +40 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +192 -191
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +15 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +340 -460
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +48 -70
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +143 -131
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +91 -98
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +385 -459
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +143 -87
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +8 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +78 -0
- package/dist/types/constants.d.ts +957 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +13 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +37 -0
- package/dist/types/controls-options-manager/util.d.ts +103 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +277 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +32 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +105 -0
- package/dist/types/meeting/index.d.ts +1721 -0
- package/dist/types/meeting/muteState.d.ts +132 -0
- package/dist/types/meeting/request.d.ts +271 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +2 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +111 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +315 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +156 -0
- package/dist/types/member/types.d.ts +21 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +69 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +171 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +152 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +100 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +74 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +27 -20
- package/src/breakouts/README.md +219 -0
- package/src/breakouts/breakout.ts +153 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/index.ts +745 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +44 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +18 -12
- package/src/constants.ts +108 -5
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +16 -0
- package/src/controls-options-manager/index.ts +275 -0
- package/src/controls-options-manager/types.ts +49 -0
- package/src/controls-options-manager/util.ts +229 -0
- package/src/index.js +4 -1
- package/src/locus-info/controlsUtils.ts +141 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +218 -73
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +187 -68
- package/src/media/{index.js → index.ts} +179 -176
- package/src/media/{properties.js → properties.ts} +60 -37
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/config.ts +384 -0
- package/src/meeting/in-meeting-actions.ts +75 -3
- package/src/meeting/{index.js → index.ts} +2658 -1598
- package/src/meeting/{muteState.js → muteState.ts} +138 -73
- package/src/meeting/{request.js → request.ts} +326 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +136 -115
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +342 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +74 -61
- package/src/meetings/{collection.js → collection.ts} +26 -3
- package/src/meetings/index.ts +1280 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/{util.js → util.ts} +99 -33
- package/src/member/{index.js → index.ts} +124 -56
- package/src/member/types.ts +24 -0
- package/src/member/{util.js → util.ts} +105 -25
- package/src/members/{collection.js → collection.ts} +10 -2
- package/src/members/{index.js → index.ts} +316 -144
- package/src/members/request.ts +215 -0
- package/src/members/types.ts +28 -0
- package/src/members/{util.js → util.ts} +145 -54
- package/src/metrics/{config.js → config.ts} +255 -92
- package/src/metrics/{constants.js → constants.ts} +1 -6
- package/src/metrics/{index.js → index.ts} +110 -94
- package/src/multistream/mediaRequestManager.ts +201 -43
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +62 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +157 -94
- package/src/reachability/request.ts +46 -35
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/{index.js → index.ts} +231 -120
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/{index.js → index.ts} +77 -60
- package/src/roap/request.ts +172 -0
- package/src/roap/turnDiscovery.ts +81 -41
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1273 -0
- package/src/statsAnalyzer/mqaUtil.ts +291 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/converged-space-meetings.js +176 -0
- package/test/integration/spec/journey.js +665 -464
- package/test/integration/spec/space-meeting.js +320 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/breakouts/breakout.ts +178 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/index.ts +1252 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +54 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +280 -0
- package/test/unit/spec/controls-options-manager/util.js +403 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +133 -34
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +333 -3
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +101 -103
- package/test/unit/spec/locus-info/selfUtils.js +191 -12
- package/test/unit/spec/media/index.ts +72 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +34 -3
- package/test/unit/spec/meeting/index.js +2547 -802
- package/test/unit/spec/meeting/muteState.js +146 -61
- package/test/unit/spec/meeting/request.js +141 -43
- package/test/unit/spec/meeting/utils.js +166 -163
- package/test/unit/spec/meeting-info/meetinginfov2.js +241 -74
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +110 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +682 -262
- package/test/unit/spec/meetings/utils.js +65 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +359 -32
- package/test/unit/spec/members/index.js +402 -54
- package/test/unit/spec/members/request.js +76 -20
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +62 -30
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +12 -8
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +72 -49
- package/test/unit/spec/stats-analyzer/index.js +116 -60
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/testUtils.js +98 -77
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/members/request.js +0 -131
- package/src/multistream/multistreamMedia.ts +0 -92
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/global.js +0 -133
- package/src/statsAnalyzer/index.js +0 -1006
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -291
- /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
|
@@ -19,14 +19,14 @@ import {
|
|
|
19
19
|
} from '../constants';
|
|
20
20
|
import Metrics from '../metrics';
|
|
21
21
|
import {eventType} from '../metrics/config';
|
|
22
|
-
import InfoUtils from '
|
|
23
|
-
import FullState from '
|
|
24
|
-
import SelfUtils from '
|
|
25
|
-
import HostUtils from '
|
|
26
|
-
import ControlsUtils from '
|
|
27
|
-
import EmbeddedAppsUtils from '
|
|
28
|
-
import MediaSharesUtils from '
|
|
29
|
-
import LocusDeltaParser from '
|
|
22
|
+
import InfoUtils from './infoUtils';
|
|
23
|
+
import FullState from './fullState';
|
|
24
|
+
import SelfUtils from './selfUtils';
|
|
25
|
+
import HostUtils from './hostUtils';
|
|
26
|
+
import ControlsUtils from './controlsUtils';
|
|
27
|
+
import EmbeddedAppsUtils from './embeddedAppsUtils';
|
|
28
|
+
import MediaSharesUtils from './mediaSharesUtils';
|
|
29
|
+
import LocusDeltaParser from './parser';
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
|
|
@@ -35,6 +35,43 @@ import LocusDeltaParser from '../locus-info/parser';
|
|
|
35
35
|
* @class LocusInfo
|
|
36
36
|
*/
|
|
37
37
|
export default class LocusInfo extends EventsScope {
|
|
38
|
+
compareAndUpdateFlags: any;
|
|
39
|
+
emitChange: any;
|
|
40
|
+
locusParser: any;
|
|
41
|
+
meetingId: any;
|
|
42
|
+
parsedLocus: any;
|
|
43
|
+
updateMeeting: any;
|
|
44
|
+
webex: any;
|
|
45
|
+
aclUrl: any;
|
|
46
|
+
baseSequence: any;
|
|
47
|
+
created: any;
|
|
48
|
+
deltaParticipants: any;
|
|
49
|
+
identities: any;
|
|
50
|
+
membership: any;
|
|
51
|
+
participants: any;
|
|
52
|
+
participantsUrl: any;
|
|
53
|
+
replaces: any;
|
|
54
|
+
scheduledMeeting: any;
|
|
55
|
+
sequence: any;
|
|
56
|
+
controls: any;
|
|
57
|
+
conversationUrl: any;
|
|
58
|
+
embeddedApps: any;
|
|
59
|
+
fullState: any;
|
|
60
|
+
host: any;
|
|
61
|
+
info: any;
|
|
62
|
+
roles: any;
|
|
63
|
+
mediaShares: any;
|
|
64
|
+
replace: any;
|
|
65
|
+
url: any;
|
|
66
|
+
services: any;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Constructor
|
|
70
|
+
* @param {boolean} updateMeeting true if the meeting should be updated
|
|
71
|
+
* @param {object} webex
|
|
72
|
+
* @param {string} meetingId
|
|
73
|
+
* @returns {undefined}
|
|
74
|
+
*/
|
|
38
75
|
constructor(updateMeeting, webex, meetingId) {
|
|
39
76
|
super();
|
|
40
77
|
this.parsedLocus = {
|
|
@@ -55,7 +92,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
55
92
|
* @param {Meeting} meeting
|
|
56
93
|
* @returns {undefined}
|
|
57
94
|
*/
|
|
58
|
-
applyLocusDeltaData(action, locus, meeting) {
|
|
95
|
+
applyLocusDeltaData(action: string, locus: any, meeting: any) {
|
|
59
96
|
const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;
|
|
60
97
|
|
|
61
98
|
switch (action) {
|
|
@@ -94,7 +131,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
94
131
|
* @param {Meeting} meeting
|
|
95
132
|
* @returns {undefined}
|
|
96
133
|
*/
|
|
97
|
-
handleLocusDelta(locus, meeting) {
|
|
134
|
+
handleLocusDelta(locus: any, meeting: any) {
|
|
98
135
|
// register a function to process delta actions
|
|
99
136
|
if (!this.locusParser.onDeltaAction) {
|
|
100
137
|
// delta action, along with associated loci
|
|
@@ -112,7 +149,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
112
149
|
* @returns {undefined}
|
|
113
150
|
* @memberof LocusInfo
|
|
114
151
|
*/
|
|
115
|
-
init(locus = {}) {
|
|
152
|
+
init(locus: any = {}) {
|
|
116
153
|
this.created = locus.created || null;
|
|
117
154
|
this.scheduledMeeting = locus.meeting || null;
|
|
118
155
|
this.participantsUrl = locus.participantsUrl || null;
|
|
@@ -157,6 +194,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
157
194
|
this.updateSelf(locus.self, locus.participants);
|
|
158
195
|
this.updateHostInfo(locus.host);
|
|
159
196
|
this.updateMediaShares(locus.mediaShares);
|
|
197
|
+
this.updateServices(locus.links?.services);
|
|
160
198
|
}
|
|
161
199
|
|
|
162
200
|
/**
|
|
@@ -164,7 +202,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
164
202
|
* @returns {undefined}
|
|
165
203
|
* @memberof LocusInfo
|
|
166
204
|
*/
|
|
167
|
-
initialSetup(locus) {
|
|
205
|
+
initialSetup(locus: object) {
|
|
168
206
|
this.onFullLocus(locus);
|
|
169
207
|
|
|
170
208
|
// Change it to true after it receives it first locus object
|
|
@@ -177,7 +215,8 @@ export default class LocusInfo extends EventsScope {
|
|
|
177
215
|
* @returns {undefined}
|
|
178
216
|
* @memberof LocusInfo
|
|
179
217
|
*/
|
|
180
|
-
parse(meeting, data) {
|
|
218
|
+
parse(meeting: any, data: any) {
|
|
219
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
181
220
|
const {eventType} = data;
|
|
182
221
|
|
|
183
222
|
LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);
|
|
@@ -217,18 +256,19 @@ export default class LocusInfo extends EventsScope {
|
|
|
217
256
|
* @returns {undefined}
|
|
218
257
|
* @memberof LocusInfo
|
|
219
258
|
*/
|
|
220
|
-
emitScoped(scope, eventName, args) {
|
|
259
|
+
emitScoped(scope?: any, eventName?: string, args?: any) {
|
|
221
260
|
return this.emit(scope, eventName, args);
|
|
222
261
|
}
|
|
223
262
|
|
|
224
263
|
/**
|
|
225
264
|
* updates the locus with full locus object
|
|
226
265
|
* @param {object} locus locus object
|
|
227
|
-
* @param {
|
|
266
|
+
* @param {string} eventType particulat locus event
|
|
228
267
|
* @returns {object} null
|
|
229
268
|
* @memberof LocusInfo
|
|
230
269
|
*/
|
|
231
|
-
|
|
270
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
271
|
+
onFullLocus(locus: any, eventType?: string) {
|
|
232
272
|
if (!locus) {
|
|
233
273
|
LoggerProxy.logger.error(
|
|
234
274
|
'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'
|
|
@@ -237,8 +277,9 @@ export default class LocusInfo extends EventsScope {
|
|
|
237
277
|
this.updateParticipantDeltas(locus.participants);
|
|
238
278
|
this.scheduledMeeting = locus.meeting || null;
|
|
239
279
|
this.participants = locus.participants;
|
|
280
|
+
const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);
|
|
240
281
|
this.updateLocusInfo(locus);
|
|
241
|
-
this.updateParticipants(locus.participants);
|
|
282
|
+
this.updateParticipants(locus.participants, isReplaceMembers);
|
|
242
283
|
this.isMeetingActive();
|
|
243
284
|
this.handleOneOnOneEvent(eventType);
|
|
244
285
|
this.updateEmbeddedApps(locus.embeddedApps);
|
|
@@ -252,7 +293,8 @@ export default class LocusInfo extends EventsScope {
|
|
|
252
293
|
* @returns {undefined}
|
|
253
294
|
* @memberof LocusInfo
|
|
254
295
|
*/
|
|
255
|
-
|
|
296
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
297
|
+
handleOneOnOneEvent(eventType: string) {
|
|
256
298
|
if (
|
|
257
299
|
this.parsedLocus.fullState.type === _CALL_ ||
|
|
258
300
|
this.parsedLocus.fullState.type === _SIP_BRIDGE_
|
|
@@ -295,9 +337,10 @@ export default class LocusInfo extends EventsScope {
|
|
|
295
337
|
* @returns {undefined}
|
|
296
338
|
* @memberof LocusInfo
|
|
297
339
|
*/
|
|
298
|
-
onDeltaLocus(locus) {
|
|
340
|
+
onDeltaLocus(locus: any) {
|
|
341
|
+
const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);
|
|
299
342
|
this.updateLocusInfo(locus);
|
|
300
|
-
this.updateParticipants(locus.participants);
|
|
343
|
+
this.updateParticipants(locus.participants, isReplaceMembers);
|
|
301
344
|
this.isMeetingActive();
|
|
302
345
|
}
|
|
303
346
|
|
|
@@ -307,6 +350,13 @@ export default class LocusInfo extends EventsScope {
|
|
|
307
350
|
* @memberof LocusInfo
|
|
308
351
|
*/
|
|
309
352
|
updateLocusInfo(locus) {
|
|
353
|
+
if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {
|
|
354
|
+
// When moved to a breakout session locus sends a message for the previous locus
|
|
355
|
+
// indicating that we have been moved. It isn't helpful to continue parsing this
|
|
356
|
+
// as it gets interpreted as if we have left the call
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
|
|
310
360
|
this.updateControls(locus.controls);
|
|
311
361
|
this.updateConversationUrl(locus.conversationUrl, locus.info);
|
|
312
362
|
this.updateCreated(locus.created);
|
|
@@ -324,6 +374,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
324
374
|
this.updateMemberShip(locus.membership);
|
|
325
375
|
this.updateIdentifiers(locus.identities);
|
|
326
376
|
this.updateEmbeddedApps(locus.embeddedApps);
|
|
377
|
+
this.updateServices(locus.links?.services);
|
|
327
378
|
this.compareAndUpdate();
|
|
328
379
|
// update which required to compare different objects from locus
|
|
329
380
|
}
|
|
@@ -334,7 +385,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
334
385
|
* @returns {Array}
|
|
335
386
|
* @memberof LocusInfo
|
|
336
387
|
*/
|
|
337
|
-
getLocusPartner(participants
|
|
388
|
+
getLocusPartner(participants: Array<any>, self: any) {
|
|
338
389
|
if (!participants || participants.length === 0) {
|
|
339
390
|
return null;
|
|
340
391
|
}
|
|
@@ -345,6 +396,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
345
396
|
self &&
|
|
346
397
|
participant.identity !== self.identity &&
|
|
347
398
|
(participants.length <= 2 || (participant.type === _USER_ && !participant.removed))
|
|
399
|
+
// @ts-ignore
|
|
348
400
|
) || this.partner
|
|
349
401
|
);
|
|
350
402
|
}
|
|
@@ -359,6 +411,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
359
411
|
this.parsedLocus.fullState.type === _CALL_ ||
|
|
360
412
|
this.parsedLocus.fullState.type === _SIP_BRIDGE_
|
|
361
413
|
) {
|
|
414
|
+
// @ts-ignore
|
|
362
415
|
const partner = this.getLocusPartner(this.participants, this.self);
|
|
363
416
|
|
|
364
417
|
this.updateMeeting({partner});
|
|
@@ -390,8 +443,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
390
443
|
shouldLeave: false,
|
|
391
444
|
}
|
|
392
445
|
);
|
|
393
|
-
}
|
|
394
|
-
else if (
|
|
446
|
+
} else if (
|
|
395
447
|
partner.state === MEETING_STATE.STATES.LEFT &&
|
|
396
448
|
this.parsedLocus.self &&
|
|
397
449
|
(this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||
|
|
@@ -414,8 +466,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
414
466
|
this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,
|
|
415
467
|
}
|
|
416
468
|
);
|
|
417
|
-
}
|
|
418
|
-
else if (
|
|
469
|
+
} else if (
|
|
419
470
|
this.parsedLocus.self &&
|
|
420
471
|
this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&
|
|
421
472
|
(partner.state === MEETING_STATE.STATES.LEFT ||
|
|
@@ -439,11 +490,11 @@ export default class LocusInfo extends EventsScope {
|
|
|
439
490
|
}
|
|
440
491
|
);
|
|
441
492
|
}
|
|
442
|
-
}
|
|
443
|
-
else if (this.parsedLocus.fullState.type === _MEETING_) {
|
|
493
|
+
} else if (this.parsedLocus.fullState.type === _MEETING_) {
|
|
444
494
|
if (
|
|
445
495
|
this.fullState &&
|
|
446
496
|
(this.fullState.state === LOCUS.STATE.INACTIVE ||
|
|
497
|
+
// @ts-ignore
|
|
447
498
|
this.fullState.state === LOCUS.STATE.TERMINATING)
|
|
448
499
|
) {
|
|
449
500
|
LoggerProxy.logger.warn(
|
|
@@ -464,8 +515,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
464
515
|
shouldLeave: false,
|
|
465
516
|
}
|
|
466
517
|
);
|
|
467
|
-
}
|
|
468
|
-
else if (this.fullState && this.fullState.removed) {
|
|
518
|
+
} else if (this.fullState && this.fullState.removed) {
|
|
469
519
|
// user has been dropped from a meeting
|
|
470
520
|
Metrics.postEvent({
|
|
471
521
|
event: eventType.REMOTE_ENDED,
|
|
@@ -499,8 +549,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
499
549
|
}
|
|
500
550
|
);
|
|
501
551
|
}
|
|
502
|
-
}
|
|
503
|
-
else {
|
|
552
|
+
} else {
|
|
504
553
|
LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');
|
|
505
554
|
}
|
|
506
555
|
}
|
|
@@ -543,8 +592,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
543
592
|
canAssignHost: true,
|
|
544
593
|
}
|
|
545
594
|
);
|
|
546
|
-
}
|
|
547
|
-
else {
|
|
595
|
+
} else {
|
|
548
596
|
this.emitScoped(
|
|
549
597
|
{
|
|
550
598
|
file: 'locus-info',
|
|
@@ -565,13 +613,13 @@ export default class LocusInfo extends EventsScope {
|
|
|
565
613
|
* @param {Array} [participants] - The participants to update against.
|
|
566
614
|
* @returns {void}
|
|
567
615
|
*/
|
|
568
|
-
updateParticipantDeltas(participants = []) {
|
|
616
|
+
updateParticipantDeltas(participants: Array<any> = []) {
|
|
569
617
|
// Used to find a participant within a participants collection.
|
|
570
618
|
const findParticipant = (participant, collection) =>
|
|
571
619
|
collection.find((item) => item.person.id === participant.person.id);
|
|
572
620
|
|
|
573
621
|
// Generates an object that indicates which state properties have changed.
|
|
574
|
-
const generateDelta = (prevState = {}, newState = {}) => {
|
|
622
|
+
const generateDelta = (prevState: any = {}, newState: any = {}) => {
|
|
575
623
|
// Setup deltas.
|
|
576
624
|
const deltas = {
|
|
577
625
|
audioStatus: prevState.audioStatus !== newState.audioStatus,
|
|
@@ -608,13 +656,13 @@ export default class LocusInfo extends EventsScope {
|
|
|
608
656
|
}
|
|
609
657
|
|
|
610
658
|
/**
|
|
611
|
-
*
|
|
659
|
+
* update meeting's members
|
|
612
660
|
* @param {Object} participants new participants object
|
|
613
|
-
* @param {
|
|
661
|
+
* @param {Boolean} isReplace is replace the whole members
|
|
614
662
|
* @returns {Array} updatedParticipants
|
|
615
663
|
* @memberof LocusInfo
|
|
616
664
|
*/
|
|
617
|
-
updateParticipants(participants) {
|
|
665
|
+
updateParticipants(participants: object, isReplace?: boolean) {
|
|
618
666
|
this.emitScoped(
|
|
619
667
|
{
|
|
620
668
|
file: 'locus-info',
|
|
@@ -627,6 +675,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
627
675
|
selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,
|
|
628
676
|
selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,
|
|
629
677
|
hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,
|
|
678
|
+
isReplace,
|
|
630
679
|
}
|
|
631
680
|
);
|
|
632
681
|
}
|
|
@@ -636,7 +685,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
636
685
|
* @returns {undefined}
|
|
637
686
|
* @memberof LocusInfo
|
|
638
687
|
*/
|
|
639
|
-
updateControls(controls) {
|
|
688
|
+
updateControls(controls: object) {
|
|
640
689
|
if (controls && !isEqual(this.controls, controls)) {
|
|
641
690
|
this.parsedLocus.controls = ControlsUtils.parse(controls);
|
|
642
691
|
const {
|
|
@@ -646,6 +695,8 @@ export default class LocusInfo extends EventsScope {
|
|
|
646
695
|
hasMeetingContainerChanged,
|
|
647
696
|
hasTranscribeChanged,
|
|
648
697
|
hasEntryExitToneChanged,
|
|
698
|
+
hasBreakoutChanged,
|
|
699
|
+
hasVideoEnabledChanged,
|
|
649
700
|
},
|
|
650
701
|
current,
|
|
651
702
|
} = ControlsUtils.getControls(this.controls, controls);
|
|
@@ -656,13 +707,11 @@ export default class LocusInfo extends EventsScope {
|
|
|
656
707
|
if (hasRecordingPausedChanged) {
|
|
657
708
|
if (current.record.paused) {
|
|
658
709
|
state = RECORDING_STATE.PAUSED;
|
|
659
|
-
}
|
|
660
|
-
else {
|
|
710
|
+
} else {
|
|
661
711
|
// state will be `IDLE` if the recording is not active, even when there is a `pause` status change.
|
|
662
712
|
state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;
|
|
663
713
|
}
|
|
664
|
-
}
|
|
665
|
-
else if (hasRecordingChanged) {
|
|
714
|
+
} else if (hasRecordingChanged) {
|
|
666
715
|
state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;
|
|
667
716
|
}
|
|
668
717
|
|
|
@@ -711,9 +760,26 @@ export default class LocusInfo extends EventsScope {
|
|
|
711
760
|
);
|
|
712
761
|
}
|
|
713
762
|
|
|
763
|
+
if (hasBreakoutChanged) {
|
|
764
|
+
const {breakout} = current;
|
|
765
|
+
|
|
766
|
+
this.emitScoped(
|
|
767
|
+
{
|
|
768
|
+
file: 'locus-info',
|
|
769
|
+
function: 'updateControls',
|
|
770
|
+
},
|
|
771
|
+
LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,
|
|
772
|
+
{
|
|
773
|
+
breakout,
|
|
774
|
+
}
|
|
775
|
+
);
|
|
776
|
+
}
|
|
777
|
+
|
|
714
778
|
if (hasEntryExitToneChanged) {
|
|
715
779
|
const {entryExitTone} = current;
|
|
716
780
|
|
|
781
|
+
this.updateMeeting({entryExitTone});
|
|
782
|
+
|
|
717
783
|
this.emitScoped(
|
|
718
784
|
{
|
|
719
785
|
file: 'locus-info',
|
|
@@ -721,11 +787,29 @@ export default class LocusInfo extends EventsScope {
|
|
|
721
787
|
},
|
|
722
788
|
LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,
|
|
723
789
|
{
|
|
724
|
-
entryExitTone
|
|
790
|
+
entryExitTone,
|
|
725
791
|
}
|
|
726
792
|
);
|
|
793
|
+
}
|
|
727
794
|
|
|
728
|
-
|
|
795
|
+
// videoEnabled is handled differently than other controls,
|
|
796
|
+
// to fit with audio mute status logic
|
|
797
|
+
if (hasVideoEnabledChanged) {
|
|
798
|
+
const {videoEnabled} = current;
|
|
799
|
+
|
|
800
|
+
this.updateMeeting({unmuteVideoAllowed: videoEnabled});
|
|
801
|
+
|
|
802
|
+
this.emitScoped(
|
|
803
|
+
{
|
|
804
|
+
file: 'locus-info',
|
|
805
|
+
function: 'updateControls',
|
|
806
|
+
},
|
|
807
|
+
LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,
|
|
808
|
+
{
|
|
809
|
+
// muted: not part of locus.controls
|
|
810
|
+
unmuteAllowed: videoEnabled,
|
|
811
|
+
}
|
|
812
|
+
);
|
|
729
813
|
}
|
|
730
814
|
|
|
731
815
|
this.controls = controls;
|
|
@@ -738,12 +822,11 @@ export default class LocusInfo extends EventsScope {
|
|
|
738
822
|
* @returns {undefined}
|
|
739
823
|
* @memberof LocusInfo
|
|
740
824
|
*/
|
|
741
|
-
updateConversationUrl(conversationUrl, info) {
|
|
825
|
+
updateConversationUrl(conversationUrl: string, info: any) {
|
|
742
826
|
if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {
|
|
743
827
|
this.conversationUrl = conversationUrl;
|
|
744
828
|
this.updateMeeting({conversationUrl});
|
|
745
|
-
}
|
|
746
|
-
else if (
|
|
829
|
+
} else if (
|
|
747
830
|
info &&
|
|
748
831
|
info.conversationUrl &&
|
|
749
832
|
!isEqual(this.conversationUrl, info.conversationUrl)
|
|
@@ -758,18 +841,39 @@ export default class LocusInfo extends EventsScope {
|
|
|
758
841
|
* @returns {undefined}
|
|
759
842
|
* @memberof LocusInfo
|
|
760
843
|
*/
|
|
761
|
-
updateCreated(created) {
|
|
844
|
+
updateCreated(created: object) {
|
|
762
845
|
if (created && !isEqual(this.created, created)) {
|
|
763
846
|
this.created = created;
|
|
764
847
|
}
|
|
765
848
|
}
|
|
766
849
|
|
|
850
|
+
/**
|
|
851
|
+
* @param {Object} services
|
|
852
|
+
* @returns {undefined}
|
|
853
|
+
* @memberof LocusInfo
|
|
854
|
+
*/
|
|
855
|
+
updateServices(services: Record<'breakout' | 'record', {url: string}>) {
|
|
856
|
+
if (services && !isEqual(this.services, services)) {
|
|
857
|
+
this.services = services;
|
|
858
|
+
this.emitScoped(
|
|
859
|
+
{
|
|
860
|
+
file: 'locus-info',
|
|
861
|
+
function: 'updateServices',
|
|
862
|
+
},
|
|
863
|
+
LOCUSINFO.EVENTS.LINKS_SERVICES,
|
|
864
|
+
{
|
|
865
|
+
services,
|
|
866
|
+
}
|
|
867
|
+
);
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
|
|
767
871
|
/**
|
|
768
872
|
* @param {Object} fullState
|
|
769
873
|
* @returns {undefined}
|
|
770
874
|
* @memberof LocusInfo
|
|
771
875
|
*/
|
|
772
|
-
updateFullState(fullState) {
|
|
876
|
+
updateFullState(fullState: object) {
|
|
773
877
|
if (fullState && !isEqual(this.fullState, fullState)) {
|
|
774
878
|
const result = FullState.getFullState(this.fullState, fullState);
|
|
775
879
|
|
|
@@ -813,7 +917,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
813
917
|
* @memberof LocusInfo
|
|
814
918
|
* emits internal event locus_info_update_host
|
|
815
919
|
*/
|
|
816
|
-
updateHostInfo(host) {
|
|
920
|
+
updateHostInfo(host: object) {
|
|
817
921
|
if (host && !isEqual(this.host, host)) {
|
|
818
922
|
const parsedHosts = HostUtils.getHosts(this.host, host);
|
|
819
923
|
|
|
@@ -834,8 +938,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
834
938
|
);
|
|
835
939
|
}
|
|
836
940
|
this.host = host;
|
|
837
|
-
}
|
|
838
|
-
else {
|
|
941
|
+
} else {
|
|
839
942
|
this.compareAndUpdateFlags.compareSelfAndHost = false;
|
|
840
943
|
}
|
|
841
944
|
}
|
|
@@ -846,9 +949,12 @@ export default class LocusInfo extends EventsScope {
|
|
|
846
949
|
* @returns {undefined}
|
|
847
950
|
* @memberof LocusInfo
|
|
848
951
|
*/
|
|
849
|
-
updateMeetingInfo(info, self) {
|
|
850
|
-
|
|
851
|
-
|
|
952
|
+
updateMeetingInfo(info: object, self?: object) {
|
|
953
|
+
const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];
|
|
954
|
+
if (
|
|
955
|
+
(info && !isEqual(this.info, info)) ||
|
|
956
|
+
(roles.length && !isEqual(this.roles, roles) && info)
|
|
957
|
+
) {
|
|
852
958
|
const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);
|
|
853
959
|
const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);
|
|
854
960
|
|
|
@@ -887,6 +993,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
887
993
|
// Parses the info and adds necessary values
|
|
888
994
|
this.updateMeeting(parsedInfo.current);
|
|
889
995
|
}
|
|
996
|
+
this.roles = roles;
|
|
890
997
|
}
|
|
891
998
|
|
|
892
999
|
/**
|
|
@@ -894,7 +1001,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
894
1001
|
* @returns {undefined}
|
|
895
1002
|
* @memberof LocusInfo
|
|
896
1003
|
*/
|
|
897
|
-
updateEmbeddedApps(embeddedApps) {
|
|
1004
|
+
updateEmbeddedApps(embeddedApps: object) {
|
|
898
1005
|
// don't do anything if the arrays of apps haven't changed significantly
|
|
899
1006
|
if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {
|
|
900
1007
|
return;
|
|
@@ -922,11 +1029,13 @@ export default class LocusInfo extends EventsScope {
|
|
|
922
1029
|
* @memberof LocusInfo
|
|
923
1030
|
* emits internal event locus_info_update_media_shares
|
|
924
1031
|
*/
|
|
925
|
-
updateMediaShares(mediaShares) {
|
|
1032
|
+
updateMediaShares(mediaShares: object) {
|
|
926
1033
|
if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {
|
|
927
1034
|
const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);
|
|
928
1035
|
|
|
929
1036
|
this.updateMeeting(parsedMediaShares.current);
|
|
1037
|
+
this.parsedLocus.mediaShares = parsedMediaShares.current;
|
|
1038
|
+
this.mediaShares = mediaShares;
|
|
930
1039
|
this.emitScoped(
|
|
931
1040
|
{
|
|
932
1041
|
file: 'locus-info',
|
|
@@ -938,8 +1047,6 @@ export default class LocusInfo extends EventsScope {
|
|
|
938
1047
|
previous: parsedMediaShares.previous,
|
|
939
1048
|
}
|
|
940
1049
|
);
|
|
941
|
-
this.parsedLocus.mediaShares = parsedMediaShares.current;
|
|
942
|
-
this.mediaShares = mediaShares;
|
|
943
1050
|
}
|
|
944
1051
|
}
|
|
945
1052
|
|
|
@@ -948,7 +1055,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
948
1055
|
* @returns {undefined}
|
|
949
1056
|
* @memberof LocusInfo
|
|
950
1057
|
*/
|
|
951
|
-
updateParticipantsUrl(participantsUrl) {
|
|
1058
|
+
updateParticipantsUrl(participantsUrl: string) {
|
|
952
1059
|
if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {
|
|
953
1060
|
this.participantsUrl = participantsUrl;
|
|
954
1061
|
}
|
|
@@ -959,7 +1066,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
959
1066
|
* @returns {undefined}
|
|
960
1067
|
* @memberof LocusInfo
|
|
961
1068
|
*/
|
|
962
|
-
updateReplace(replace) {
|
|
1069
|
+
updateReplace(replace: object) {
|
|
963
1070
|
if (replace && !isEqual(this.replace, replace)) {
|
|
964
1071
|
this.replace = replace;
|
|
965
1072
|
}
|
|
@@ -973,8 +1080,10 @@ export default class LocusInfo extends EventsScope {
|
|
|
973
1080
|
* @memberof LocusInfo
|
|
974
1081
|
* emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self
|
|
975
1082
|
*/
|
|
976
|
-
updateSelf(self, participants) {
|
|
1083
|
+
updateSelf(self: any, participants: Array<any>) {
|
|
1084
|
+
// @ts-ignore - check where this.self come from
|
|
977
1085
|
if (self && !isEqual(this.self, self)) {
|
|
1086
|
+
// @ts-ignore
|
|
978
1087
|
const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);
|
|
979
1088
|
|
|
980
1089
|
this.updateMeeting(parsedSelves.current);
|
|
@@ -1000,8 +1109,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1000
1109
|
|
|
1001
1110
|
if (parsedSelves.updates.moderatorChanged) {
|
|
1002
1111
|
this.compareAndUpdateFlags.compareHostAndSelf = true;
|
|
1003
|
-
}
|
|
1004
|
-
else {
|
|
1112
|
+
} else {
|
|
1005
1113
|
this.compareAndUpdateFlags.compareHostAndSelf = false;
|
|
1006
1114
|
}
|
|
1007
1115
|
|
|
@@ -1016,6 +1124,17 @@ export default class LocusInfo extends EventsScope {
|
|
|
1016
1124
|
);
|
|
1017
1125
|
}
|
|
1018
1126
|
|
|
1127
|
+
if (parsedSelves.updates.breakoutsChanged) {
|
|
1128
|
+
this.emitScoped(
|
|
1129
|
+
{
|
|
1130
|
+
file: 'locus-info',
|
|
1131
|
+
function: 'updateSelf',
|
|
1132
|
+
},
|
|
1133
|
+
LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,
|
|
1134
|
+
{breakoutSessions: parsedSelves.current.breakoutSessions}
|
|
1135
|
+
);
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1019
1138
|
if (parsedSelves.updates.isMediaInactiveOrReleased) {
|
|
1020
1139
|
this.emitScoped(
|
|
1021
1140
|
{
|
|
@@ -1037,6 +1156,31 @@ export default class LocusInfo extends EventsScope {
|
|
|
1037
1156
|
self
|
|
1038
1157
|
);
|
|
1039
1158
|
}
|
|
1159
|
+
// When the user upgrades to moderator or cohost
|
|
1160
|
+
if (parsedSelves.updates.isUpgradeToModeratorOrCohost) {
|
|
1161
|
+
this.emitScoped(
|
|
1162
|
+
{
|
|
1163
|
+
file: 'locus-info',
|
|
1164
|
+
function: 'updateSelf',
|
|
1165
|
+
},
|
|
1166
|
+
LOCUSINFO.EVENTS.SELF_MODERATOR_OR_COHOST_UPGRADE,
|
|
1167
|
+
self
|
|
1168
|
+
);
|
|
1169
|
+
}
|
|
1170
|
+
//
|
|
1171
|
+
if (parsedSelves.updates.isVideoMutedByOthersChanged) {
|
|
1172
|
+
this.emitScoped(
|
|
1173
|
+
{
|
|
1174
|
+
file: 'locus-info',
|
|
1175
|
+
function: 'updateSelf',
|
|
1176
|
+
},
|
|
1177
|
+
LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,
|
|
1178
|
+
{
|
|
1179
|
+
muted: parsedSelves.current.remoteVideoMuted,
|
|
1180
|
+
// unmuteAllowed: not part of .self
|
|
1181
|
+
}
|
|
1182
|
+
);
|
|
1183
|
+
}
|
|
1040
1184
|
if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {
|
|
1041
1185
|
this.emitScoped(
|
|
1042
1186
|
{
|
|
@@ -1100,6 +1244,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1100
1244
|
file: 'locus-info',
|
|
1101
1245
|
function: 'updateSelf',
|
|
1102
1246
|
},
|
|
1247
|
+
// @ts-ignore
|
|
1103
1248
|
LOCUSINFO.EVENTS.MEDIA_INACTIVITY,
|
|
1104
1249
|
SelfUtils.getMediaStatus(self.mediaSessions)
|
|
1105
1250
|
);
|
|
@@ -1168,9 +1313,9 @@ export default class LocusInfo extends EventsScope {
|
|
|
1168
1313
|
}
|
|
1169
1314
|
);
|
|
1170
1315
|
this.parsedLocus.self = parsedSelves.current;
|
|
1316
|
+
// @ts-ignore
|
|
1171
1317
|
this.self = self;
|
|
1172
|
-
}
|
|
1173
|
-
else {
|
|
1318
|
+
} else {
|
|
1174
1319
|
this.compareAndUpdateFlags.compareHostAndSelf = false;
|
|
1175
1320
|
}
|
|
1176
1321
|
}
|
|
@@ -1181,7 +1326,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1181
1326
|
* @returns {undefined}
|
|
1182
1327
|
* emits internal event locus_info_update_url
|
|
1183
1328
|
*/
|
|
1184
|
-
updateLocusUrl(url) {
|
|
1329
|
+
updateLocusUrl(url: string) {
|
|
1185
1330
|
if (url && this.url !== url) {
|
|
1186
1331
|
this.url = url;
|
|
1187
1332
|
this.updateMeeting({locusUrl: url});
|
|
@@ -1201,7 +1346,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1201
1346
|
* @returns {undefined}
|
|
1202
1347
|
* @memberof LocusInfo
|
|
1203
1348
|
*/
|
|
1204
|
-
updateAclUrl(aclUrl) {
|
|
1349
|
+
updateAclUrl(aclUrl: string) {
|
|
1205
1350
|
if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {
|
|
1206
1351
|
this.aclUrl = aclUrl;
|
|
1207
1352
|
}
|
|
@@ -1212,7 +1357,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1212
1357
|
* @returns {undefined}
|
|
1213
1358
|
* @memberof LocusInfo
|
|
1214
1359
|
*/
|
|
1215
|
-
updateBasequence(baseSequence) {
|
|
1360
|
+
updateBasequence(baseSequence: number) {
|
|
1216
1361
|
if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {
|
|
1217
1362
|
this.baseSequence = baseSequence;
|
|
1218
1363
|
}
|
|
@@ -1223,7 +1368,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1223
1368
|
* @returns {undefined}
|
|
1224
1369
|
* @memberof LocusInfo
|
|
1225
1370
|
*/
|
|
1226
|
-
updateSequence(sequence) {
|
|
1371
|
+
updateSequence(sequence: number) {
|
|
1227
1372
|
if (sequence && !isEqual(this.sequence, sequence)) {
|
|
1228
1373
|
this.sequence = sequence;
|
|
1229
1374
|
}
|
|
@@ -1234,7 +1379,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1234
1379
|
* @returns {undefined}
|
|
1235
1380
|
* @memberof LocusInfo
|
|
1236
1381
|
*/
|
|
1237
|
-
updateMemberShip(membership) {
|
|
1382
|
+
updateMemberShip(membership: object) {
|
|
1238
1383
|
if (membership && !isEqual(this.membership, membership)) {
|
|
1239
1384
|
this.membership = membership;
|
|
1240
1385
|
}
|
|
@@ -1245,7 +1390,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1245
1390
|
* @returns {undefined}
|
|
1246
1391
|
* @memberof LocusInfo
|
|
1247
1392
|
*/
|
|
1248
|
-
updateIdentifiers(identities) {
|
|
1393
|
+
updateIdentifiers(identities: Array<any>) {
|
|
1249
1394
|
if (identities && !isEqual(this.identities, identities)) {
|
|
1250
1395
|
this.identities = identities;
|
|
1251
1396
|
}
|