@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.131
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/README.md +45 -1
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +355 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +193 -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/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +994 -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 +67 -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 +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- 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 +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- 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 +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- 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 +1 -24
- 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 +35 -61
- 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 +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +203 -53
- 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 +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -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 +294 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +100 -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 +406 -216
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +54 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +105 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +55 -165
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +71 -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 +77 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2603 -2462
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +291 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +292 -138
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +315 -336
- 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 +463 -583
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +305 -286
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- 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 +156 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +692 -593
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +23 -42
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +186 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +89 -88
- 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 +101 -69
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +12 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +166 -205
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +120 -85
- 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 +314 -260
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +50 -16
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +4 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +93 -162
- 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 +32 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- 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 +190 -199
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -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 +2 -4
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +19 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +326 -465
- 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 +31 -75
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +129 -136
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +143 -103
- 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 +369 -461
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +144 -94
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +35 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- 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/events.d.ts +2 -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 +15 -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 +993 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -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 +315 -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 +34 -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 +147 -0
- package/dist/types/meeting/index.d.ts +1762 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
- package/dist/types/meeting/muteState.d.ts +186 -0
- package/dist/types/meeting/request.d.ts +269 -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 +76 -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 +122 -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 +345 -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 +157 -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 +114 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +210 -0
- package/dist/types/metrics/config.d.ts +195 -0
- package/dist/types/metrics/constants.d.ts +55 -0
- package/dist/types/metrics/index.d.ts +169 -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 +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -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 +36 -0
- package/dist/types/roap/turnDiscovery.d.ts +91 -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 +28 -21
- package/src/annotation/annotation.types.ts +42 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +163 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +860 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +16 -12
- package/src/constants.ts +153 -7
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +281 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +142 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +346 -55
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +52 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +195 -56
- package/src/media/index.ts +139 -196
- package/src/media/properties.ts +43 -36
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +380 -378
- package/src/meeting/in-meeting-actions.ts +159 -3
- package/src/meeting/index.ts +2803 -1584
- package/src/meeting/locusMediaRequest.ts +309 -0
- package/src/meeting/muteState.ts +290 -72
- package/src/meeting/request.ts +247 -178
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +445 -395
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +235 -116
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +71 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +772 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +132 -33
- package/src/member/index.ts +95 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +106 -13
- package/src/members/collection.ts +8 -1
- package/src/members/index.ts +288 -130
- package/src/members/request.ts +144 -31
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +316 -235
- package/src/metrics/config.ts +302 -90
- package/src/metrics/constants.ts +2 -6
- package/src/metrics/index.ts +124 -95
- package/src/multistream/mediaRequestManager.ts +203 -45
- 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.ts +24 -27
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +131 -79
- package/src/reachability/request.ts +43 -34
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +8 -8
- package/src/reactions/reactions.type.ts +31 -5
- package/src/reconnection-manager/index.ts +193 -111
- 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.ts +53 -53
- package/src/roap/request.ts +77 -64
- package/src/roap/turnDiscovery.ts +101 -48
- package/src/statsAnalyzer/global.ts +8 -104
- package/src/statsAnalyzer/index.ts +624 -376
- package/src/statsAnalyzer/mqaUtil.ts +203 -90
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +670 -466
- package/test/integration/spec/space-meeting.js +320 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +433 -0
- package/test/unit/spec/breakouts/breakout.ts +203 -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/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1609 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +504 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- package/test/unit/spec/locus-info/controlsUtils.js +305 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +636 -5
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- 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/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +252 -12
- package/test/unit/spec/media/index.ts +104 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +76 -3
- package/test/unit/spec/meeting/index.js +3112 -921
- package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
- package/test/unit/spec/meeting/muteState.js +421 -94
- package/test/unit/spec/meeting/request.js +421 -79
- package/test/unit/spec/meeting/utils.js +326 -189
- package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
- 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 +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1126 -328
- package/test/unit/spec/meetings/utils.js +220 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +383 -32
- package/test/unit/spec/members/index.js +424 -55
- package/test/unit/spec/members/request.js +228 -40
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +113 -20
- 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 -31
- 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 +19 -49
- package/test/unit/spec/roap/request.ts +187 -0
- package/test/unit/spec/roap/turnDiscovery.ts +92 -50
- 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/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- 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 -334
- 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/index.js +0 -15
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting/effectsState.ts +0 -211
- package/src/multistream/multistreamMedia.ts +0 -92
- package/test/unit/spec/meeting/effectsState.js +0 -291
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
SHARE_STOPPED_REASON,
|
|
14
14
|
_CALL_,
|
|
15
15
|
_LEFT_,
|
|
16
|
-
_ID_
|
|
16
|
+
_ID_,
|
|
17
17
|
} from '../constants';
|
|
18
18
|
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
19
19
|
import ReconnectionError from '../common/errors/reconnection';
|
|
@@ -22,6 +22,7 @@ import {eventType, reconnection, errorObjects} from '../metrics/config';
|
|
|
22
22
|
import Media from '../media';
|
|
23
23
|
import Metrics from '../metrics';
|
|
24
24
|
import Meeting from '../meeting';
|
|
25
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Used to indicate that the reconnect logic needs to be retried.
|
|
@@ -64,7 +65,7 @@ class NeedsRejoinError extends Error {
|
|
|
64
65
|
/**
|
|
65
66
|
* @export
|
|
66
67
|
* @class ReconnectionManager
|
|
67
|
-
*/
|
|
68
|
+
*/
|
|
68
69
|
export default class ReconnectionManager {
|
|
69
70
|
autoRejoinEnabled: any;
|
|
70
71
|
iceState: any;
|
|
@@ -92,7 +93,7 @@ export default class ReconnectionManager {
|
|
|
92
93
|
resolve: () => {},
|
|
93
94
|
timer: undefined,
|
|
94
95
|
// @ts-ignore
|
|
95
|
-
timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout
|
|
96
|
+
timeoutDuration: meeting.config.reconnection.iceReconnectionTimeout,
|
|
96
97
|
};
|
|
97
98
|
|
|
98
99
|
/**
|
|
@@ -100,21 +101,21 @@ export default class ReconnectionManager {
|
|
|
100
101
|
* @type {String}
|
|
101
102
|
* @private
|
|
102
103
|
* @memberof ReconnectionManager
|
|
103
|
-
|
|
104
|
+
*/
|
|
104
105
|
this.status = RECONNECTION.STATE.DEFAULT_STATUS;
|
|
105
106
|
/**
|
|
106
107
|
* @instance
|
|
107
108
|
* @type {Number}
|
|
108
109
|
* @private
|
|
109
110
|
* @memberof ReconnectionManager
|
|
110
|
-
|
|
111
|
+
*/
|
|
111
112
|
this.tryCount = RECONNECTION.STATE.DEFAULT_TRY_COUNT;
|
|
112
113
|
/**
|
|
113
114
|
* @instance
|
|
114
115
|
* @type {Object}
|
|
115
116
|
* @private
|
|
116
117
|
* @memberof ReconnectionManager
|
|
117
|
-
|
|
118
|
+
*/
|
|
118
119
|
// TODO : change this logic to not save the meeting instance
|
|
119
120
|
// It gets complicated when meeting ends on remote side , We have a old meeting instance which is not up to date
|
|
120
121
|
// @ts-ignore
|
|
@@ -135,7 +136,6 @@ export default class ReconnectionManager {
|
|
|
135
136
|
// @ts-ignore
|
|
136
137
|
this.autoRejoinEnabled = meeting.config.reconnection.autoRejoin;
|
|
137
138
|
|
|
138
|
-
|
|
139
139
|
// Make sure reconnection state is in default
|
|
140
140
|
this.reset();
|
|
141
141
|
}
|
|
@@ -185,7 +185,9 @@ export default class ReconnectionManager {
|
|
|
185
185
|
*/
|
|
186
186
|
public waitForIceReconnect() {
|
|
187
187
|
if (!this.iceState.disconnected) {
|
|
188
|
-
LoggerProxy.logger.log(
|
|
188
|
+
LoggerProxy.logger.log(
|
|
189
|
+
'ReconnectionManager:index#waitForIceReconnect --> waiting for ice reconnect'
|
|
190
|
+
);
|
|
189
191
|
|
|
190
192
|
this.iceState.disconnected = true;
|
|
191
193
|
|
|
@@ -193,10 +195,11 @@ export default class ReconnectionManager {
|
|
|
193
195
|
this.iceState.timer = setTimeout(() => {
|
|
194
196
|
if (this.iceState.disconnected === false) {
|
|
195
197
|
resolve();
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
+
} else {
|
|
198
199
|
this.iceState.disconnected = false;
|
|
199
|
-
reject(
|
|
200
|
+
reject(
|
|
201
|
+
new Error(`ice reconnection did not occur in ${this.iceState.timeoutDuration}ms`)
|
|
202
|
+
);
|
|
200
203
|
}
|
|
201
204
|
}, this.iceState.timeoutDuration);
|
|
202
205
|
|
|
@@ -229,6 +232,33 @@ export default class ReconnectionManager {
|
|
|
229
232
|
this.meeting = null;
|
|
230
233
|
}
|
|
231
234
|
|
|
235
|
+
/**
|
|
236
|
+
* Stop the local share track.
|
|
237
|
+
*
|
|
238
|
+
* @param {string} reason a {@link SHARE_STOPPED_REASON}
|
|
239
|
+
* @returns {undefined}
|
|
240
|
+
* @private
|
|
241
|
+
* @memberof ReconnectionManager
|
|
242
|
+
*/
|
|
243
|
+
private stopLocalShareTrack(reason: string) {
|
|
244
|
+
this.meeting.setLocalShareTrack(null);
|
|
245
|
+
this.meeting.isSharing = false;
|
|
246
|
+
if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
|
|
247
|
+
this.meeting.shareStatus = SHARE_STATUS.NO_SHARE;
|
|
248
|
+
}
|
|
249
|
+
this.meeting.mediaProperties.mediaDirection.sendShare = false;
|
|
250
|
+
Trigger.trigger(
|
|
251
|
+
this.meeting,
|
|
252
|
+
{
|
|
253
|
+
file: 'reconnection-manager/index',
|
|
254
|
+
function: 'stopLocalShareTrack',
|
|
255
|
+
},
|
|
256
|
+
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
257
|
+
{
|
|
258
|
+
reason,
|
|
259
|
+
}
|
|
260
|
+
);
|
|
261
|
+
}
|
|
232
262
|
|
|
233
263
|
/**
|
|
234
264
|
* @public
|
|
@@ -236,7 +266,7 @@ export default class ReconnectionManager {
|
|
|
236
266
|
* @returns {Boolean} true if reconnection operation is in progress
|
|
237
267
|
*/
|
|
238
268
|
isReconnectInProgress() {
|
|
239
|
-
return
|
|
269
|
+
return this.status === RECONNECTION.STATE.IN_PROGRESS;
|
|
240
270
|
}
|
|
241
271
|
|
|
242
272
|
/**
|
|
@@ -254,7 +284,9 @@ export default class ReconnectionManager {
|
|
|
254
284
|
return true;
|
|
255
285
|
}
|
|
256
286
|
|
|
257
|
-
LoggerProxy.logger.info(
|
|
287
|
+
LoggerProxy.logger.info(
|
|
288
|
+
'ReconnectionManager:index#validate --> Reconnection already in progress.'
|
|
289
|
+
);
|
|
258
290
|
|
|
259
291
|
throw new ReconnectInProgress('Reconnection already in progress.');
|
|
260
292
|
}
|
|
@@ -280,38 +312,48 @@ export default class ReconnectionManager {
|
|
|
280
312
|
networkDisconnect?: boolean;
|
|
281
313
|
networkRetry?: boolean;
|
|
282
314
|
} = {}) {
|
|
283
|
-
LoggerProxy.logger.info(
|
|
315
|
+
LoggerProxy.logger.info(
|
|
316
|
+
`ReconnectionManager:index#reconnect --> Reconnection start for meeting ${this.meeting.id}.`
|
|
317
|
+
);
|
|
284
318
|
// First, validate that we can reconnect, if not, it will throw an error
|
|
285
319
|
try {
|
|
286
320
|
this.validate();
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
|
|
321
|
+
} catch (error) {
|
|
322
|
+
LoggerProxy.logger.info(
|
|
323
|
+
'ReconnectionManager:index#reconnect --> Reconnection unable to begin.',
|
|
324
|
+
error
|
|
325
|
+
);
|
|
290
326
|
throw error;
|
|
291
327
|
}
|
|
292
328
|
|
|
293
329
|
if (!networkRetry) {
|
|
294
330
|
// Only log START metrics on the initial reconnect
|
|
295
|
-
LoggerProxy.logger.info(
|
|
331
|
+
LoggerProxy.logger.info(
|
|
332
|
+
'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'
|
|
333
|
+
);
|
|
296
334
|
Metrics.postEvent({
|
|
297
335
|
event: eventType.MEDIA_RECONNECTING,
|
|
298
|
-
meeting: this.meeting
|
|
336
|
+
meeting: this.meeting,
|
|
299
337
|
});
|
|
300
338
|
}
|
|
301
339
|
|
|
302
340
|
return this.executeReconnection({networkDisconnect})
|
|
303
341
|
.then(() => {
|
|
304
342
|
LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');
|
|
305
|
-
LoggerProxy.logger.info(
|
|
343
|
+
LoggerProxy.logger.info(
|
|
344
|
+
'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'
|
|
345
|
+
);
|
|
306
346
|
Metrics.postEvent({
|
|
307
347
|
event: eventType.MEDIA_RECOVERED,
|
|
308
348
|
meeting: this.meeting,
|
|
309
|
-
data: {recoveredBy: reconnection.RECOVERED_BY_NEW}
|
|
349
|
+
data: {recoveredBy: reconnection.RECOVERED_BY_NEW},
|
|
310
350
|
});
|
|
311
351
|
})
|
|
312
352
|
.catch((reconnectError) => {
|
|
313
353
|
if (reconnectError instanceof NeedsRetryError) {
|
|
314
|
-
LoggerProxy.logger.info(
|
|
354
|
+
LoggerProxy.logger.info(
|
|
355
|
+
'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'
|
|
356
|
+
);
|
|
315
357
|
// Reset our reconnect status since we are looping back to the beginning
|
|
316
358
|
this.status = RECONNECTION.STATE.DEFAULT_STATUS;
|
|
317
359
|
|
|
@@ -320,8 +362,13 @@ export default class ReconnectionManager {
|
|
|
320
362
|
}
|
|
321
363
|
|
|
322
364
|
// Reconnect has failed
|
|
323
|
-
LoggerProxy.logger.error(
|
|
324
|
-
|
|
365
|
+
LoggerProxy.logger.error(
|
|
366
|
+
'ReconnectionManager:index#reconnect --> Reconnection failed.',
|
|
367
|
+
reconnectError.message
|
|
368
|
+
);
|
|
369
|
+
LoggerProxy.logger.info(
|
|
370
|
+
'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
|
|
371
|
+
);
|
|
325
372
|
|
|
326
373
|
const reconnectMetric = {
|
|
327
374
|
event: eventType.CALL_ABORTED,
|
|
@@ -333,10 +380,10 @@ export default class ReconnectionManager {
|
|
|
333
380
|
errorCode: 2008,
|
|
334
381
|
fatal: true,
|
|
335
382
|
name: errorObjects.name.mediaEngine,
|
|
336
|
-
shownToUser: false
|
|
337
|
-
}
|
|
338
|
-
]
|
|
339
|
-
}
|
|
383
|
+
shownToUser: false,
|
|
384
|
+
},
|
|
385
|
+
],
|
|
386
|
+
},
|
|
340
387
|
};
|
|
341
388
|
|
|
342
389
|
Metrics.postEvent(reconnectMetric);
|
|
@@ -348,7 +395,6 @@ export default class ReconnectionManager {
|
|
|
348
395
|
}
|
|
349
396
|
}
|
|
350
397
|
|
|
351
|
-
|
|
352
398
|
throw reconnectError;
|
|
353
399
|
});
|
|
354
400
|
}
|
|
@@ -361,43 +407,61 @@ export default class ReconnectionManager {
|
|
|
361
407
|
* @private
|
|
362
408
|
* @memberof ReconnectionManager
|
|
363
409
|
*/
|
|
364
|
-
private async executeReconnection({
|
|
410
|
+
private async executeReconnection({networkDisconnect = false}: {networkDisconnect?: boolean}) {
|
|
365
411
|
this.status = RECONNECTION.STATE.IN_PROGRESS;
|
|
366
412
|
|
|
367
|
-
LoggerProxy.logger.info(
|
|
413
|
+
LoggerProxy.logger.info(
|
|
414
|
+
'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
|
|
415
|
+
);
|
|
416
|
+
|
|
417
|
+
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
418
|
+
|
|
419
|
+
if (wasSharing) {
|
|
420
|
+
this.stopLocalShareTrack(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
|
|
421
|
+
}
|
|
368
422
|
|
|
369
423
|
if (networkDisconnect) {
|
|
370
424
|
try {
|
|
371
425
|
await this.reconnectMercuryWebSocket();
|
|
372
|
-
LoggerProxy.logger.error(
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
426
|
+
LoggerProxy.logger.error(
|
|
427
|
+
'ReconnectionManager:index#executeReconnection --> Websocket reconnected.',
|
|
428
|
+
this.webex.internal.device.url
|
|
429
|
+
);
|
|
430
|
+
} catch (error) {
|
|
431
|
+
LoggerProxy.logger.error(
|
|
432
|
+
'ReconnectionManager:index#executeReconnection --> Unable to reconnect to websocket, giving up.'
|
|
433
|
+
);
|
|
376
434
|
this.status = RECONNECTION.STATE.FAILURE;
|
|
377
|
-
throw
|
|
435
|
+
throw error;
|
|
378
436
|
}
|
|
379
437
|
}
|
|
380
438
|
|
|
381
|
-
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
382
|
-
|
|
383
439
|
try {
|
|
384
|
-
LoggerProxy.logger.info(
|
|
440
|
+
LoggerProxy.logger.info(
|
|
441
|
+
'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
|
|
442
|
+
);
|
|
385
443
|
await this.webex.meetings.syncMeetings();
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
444
|
+
} catch (syncError) {
|
|
445
|
+
LoggerProxy.logger.info(
|
|
446
|
+
'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',
|
|
447
|
+
syncError
|
|
448
|
+
);
|
|
449
|
+
throw new NeedsRetryError(syncError);
|
|
390
450
|
}
|
|
391
451
|
|
|
392
452
|
// TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object
|
|
393
453
|
// So that on rejoin it known what parametrs it was using
|
|
394
454
|
if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
|
|
395
|
-
LoggerProxy.logger.info(
|
|
455
|
+
LoggerProxy.logger.info(
|
|
456
|
+
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.'
|
|
457
|
+
);
|
|
396
458
|
|
|
397
|
-
throw new Error('Unable to rejoin a meeting already ended or inactive
|
|
459
|
+
throw new Error('Unable to rejoin a meeting already ended or inactive.');
|
|
398
460
|
}
|
|
399
461
|
|
|
400
|
-
LoggerProxy.logger.info(
|
|
462
|
+
LoggerProxy.logger.info(
|
|
463
|
+
`ReconnectionManager:index#executeReconnection --> Current state of meeting is ${this.meeting.state}`
|
|
464
|
+
);
|
|
401
465
|
|
|
402
466
|
// If the meeting state was left, no longer reconnect media
|
|
403
467
|
if (this.meeting.state === _LEFT_) {
|
|
@@ -405,22 +469,25 @@ export default class ReconnectionManager {
|
|
|
405
469
|
throw new Error('Unable to rejoin a call in LEFT state.');
|
|
406
470
|
}
|
|
407
471
|
|
|
408
|
-
throw
|
|
472
|
+
throw new NeedsRejoinError({wasSharing});
|
|
409
473
|
}
|
|
410
474
|
|
|
411
475
|
try {
|
|
412
476
|
const media = await this.reconnectMedia();
|
|
413
477
|
|
|
414
|
-
LoggerProxy.logger.log(
|
|
478
|
+
LoggerProxy.logger.log(
|
|
479
|
+
'ReconnectionManager:index#executeReconnection --> Media reestablished'
|
|
480
|
+
);
|
|
415
481
|
this.status = RECONNECTION.STATE.COMPLETE;
|
|
416
482
|
|
|
417
483
|
return media;
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
|
|
484
|
+
} catch (error) {
|
|
485
|
+
LoggerProxy.logger.error(
|
|
486
|
+
'ReconnectionManager:index#executeReconnection --> Media reestablishment failed'
|
|
487
|
+
);
|
|
421
488
|
this.status = RECONNECTION.STATE.FAILURE;
|
|
422
489
|
|
|
423
|
-
throw
|
|
490
|
+
throw error;
|
|
424
491
|
}
|
|
425
492
|
}
|
|
426
493
|
|
|
@@ -431,50 +498,36 @@ export default class ReconnectionManager {
|
|
|
431
498
|
* @param {boolean} wasSharing
|
|
432
499
|
* @returns {Promise}
|
|
433
500
|
*/
|
|
434
|
-
async rejoinMeeting(wasSharing
|
|
501
|
+
async rejoinMeeting(wasSharing = false) {
|
|
435
502
|
try {
|
|
436
|
-
LoggerProxy.logger.info(
|
|
503
|
+
LoggerProxy.logger.info(
|
|
504
|
+
'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'
|
|
505
|
+
);
|
|
437
506
|
|
|
438
507
|
await this.meeting.join({rejoin: true});
|
|
439
508
|
LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
|
|
440
509
|
|
|
441
510
|
if (wasSharing) {
|
|
442
|
-
|
|
443
|
-
Media.stopTracks(this.meeting.mediaProperties.shareTrack);
|
|
444
|
-
this.meeting.isSharing = false;
|
|
445
|
-
if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
|
|
446
|
-
this.meeting.shareStatus = SHARE_STATUS.NO_SHARE;
|
|
447
|
-
}
|
|
448
|
-
this.meeting.mediaProperties.mediaDirection.sendShare = false;
|
|
449
|
-
Trigger.trigger(
|
|
450
|
-
this.meeting,
|
|
451
|
-
{
|
|
452
|
-
file: 'reconnection-manager/index',
|
|
453
|
-
function: 'rejoinMeeting'
|
|
454
|
-
},
|
|
455
|
-
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
456
|
-
{
|
|
457
|
-
reason: SHARE_STOPPED_REASON.MEETING_REJOIN
|
|
458
|
-
}
|
|
459
|
-
);
|
|
511
|
+
this.stopLocalShareTrack(SHARE_STOPPED_REASON.MEETING_REJOIN);
|
|
460
512
|
}
|
|
461
|
-
}
|
|
462
|
-
catch (joinError) {
|
|
513
|
+
} catch (joinError) {
|
|
463
514
|
this.rejoinAttempts += 1;
|
|
464
515
|
if (this.rejoinAttempts <= this.maxRejoinAttempts) {
|
|
465
|
-
LoggerProxy.logger.info(
|
|
516
|
+
LoggerProxy.logger.info(
|
|
517
|
+
`ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting, attempt #${this.rejoinAttempts}, retrying.`,
|
|
518
|
+
joinError
|
|
519
|
+
);
|
|
466
520
|
this.rejoinMeeting();
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE,
|
|
472
|
-
{
|
|
473
|
-
locus_id: this.meeting.locusUrl.split('/').pop(),
|
|
474
|
-
reason: joinError.message,
|
|
475
|
-
stack: joinError.stack
|
|
476
|
-
}
|
|
521
|
+
} else {
|
|
522
|
+
LoggerProxy.logger.error(
|
|
523
|
+
'ReconnectionManager:index#rejoinMeeting --> Unable to rejoin meeting after max attempts.',
|
|
524
|
+
joinError
|
|
477
525
|
);
|
|
526
|
+
Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.MEETING_MAX_REJOIN_FAILURE, {
|
|
527
|
+
locus_id: this.meeting.locusUrl.split('/').pop(),
|
|
528
|
+
reason: joinError.message,
|
|
529
|
+
stack: joinError.stack,
|
|
530
|
+
});
|
|
478
531
|
this.status = RECONNECTION.STATE.FAILURE;
|
|
479
532
|
throw joinError;
|
|
480
533
|
}
|
|
@@ -482,9 +535,11 @@ export default class ReconnectionManager {
|
|
|
482
535
|
|
|
483
536
|
try {
|
|
484
537
|
await this.reconnectMedia();
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
|
|
538
|
+
} catch (mediaError) {
|
|
539
|
+
LoggerProxy.logger.error(
|
|
540
|
+
'ReconnectionManager:index#rejoinMeeting --> Unable to reestablish media after rejoining.',
|
|
541
|
+
mediaError
|
|
542
|
+
);
|
|
488
543
|
throw mediaError;
|
|
489
544
|
}
|
|
490
545
|
}
|
|
@@ -495,21 +550,34 @@ export default class ReconnectionManager {
|
|
|
495
550
|
* @memberof ReconnectionManager
|
|
496
551
|
*/
|
|
497
552
|
async reconnectMedia() {
|
|
498
|
-
LoggerProxy.logger.log(
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
// but instead manually closing and creating new media connection, because we need to do the TURN discovery again
|
|
502
|
-
|
|
503
|
-
await this.meeting.closePeerConnections();
|
|
504
|
-
this.meeting.mediaProperties.unsetPeerConnection();
|
|
553
|
+
LoggerProxy.logger.log(
|
|
554
|
+
'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'
|
|
555
|
+
);
|
|
505
556
|
|
|
557
|
+
// do the TURN server discovery again since the TURN server might change
|
|
506
558
|
const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true);
|
|
507
559
|
|
|
508
|
-
const
|
|
560
|
+
const iceServers = [];
|
|
561
|
+
|
|
562
|
+
if (turnServerResult.turnServerInfo) {
|
|
563
|
+
iceServers.push({
|
|
564
|
+
urls: turnServerResult.turnServerInfo.url,
|
|
565
|
+
username: turnServerResult.turnServerInfo.username || '',
|
|
566
|
+
credential: turnServerResult.turnServerInfo.password || '',
|
|
567
|
+
});
|
|
568
|
+
}
|
|
509
569
|
|
|
510
|
-
this.meeting.
|
|
570
|
+
await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
|
|
511
571
|
|
|
512
|
-
|
|
572
|
+
// resend media requests
|
|
573
|
+
if (this.meeting.isMultistream) {
|
|
574
|
+
Object.values(this.meeting.mediaRequestManagers).forEach(
|
|
575
|
+
(mediaRequestManager: MediaRequestManager) => {
|
|
576
|
+
mediaRequestManager.clearPreviousRequests();
|
|
577
|
+
mediaRequestManager.commit();
|
|
578
|
+
}
|
|
579
|
+
);
|
|
580
|
+
}
|
|
513
581
|
}
|
|
514
582
|
|
|
515
583
|
/**
|
|
@@ -519,30 +587,44 @@ export default class ReconnectionManager {
|
|
|
519
587
|
* @memberof ReconnectionManager
|
|
520
588
|
*/
|
|
521
589
|
private async reconnectMercuryWebSocket() {
|
|
522
|
-
LoggerProxy.logger.info(
|
|
590
|
+
LoggerProxy.logger.info(
|
|
591
|
+
'ReconnectionManager:index#reconnectMercuryWebSocket --> Reconnecting websocket.'
|
|
592
|
+
);
|
|
523
593
|
// First, attempt to disconnect if we think we are already connected.
|
|
524
594
|
if (this.webex.internal.mercury.connected) {
|
|
525
|
-
LoggerProxy.logger.info(
|
|
595
|
+
LoggerProxy.logger.info(
|
|
596
|
+
'ReconnectionManager:index#reconnectMercuryWebSocket --> Disconnecting existing websocket.'
|
|
597
|
+
);
|
|
526
598
|
try {
|
|
527
599
|
await this.webex.internal.mercury.disconnect();
|
|
528
|
-
LoggerProxy.logger.info(
|
|
529
|
-
|
|
530
|
-
|
|
600
|
+
LoggerProxy.logger.info(
|
|
601
|
+
'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket disconnected successfully.'
|
|
602
|
+
);
|
|
603
|
+
} catch (disconnectError) {
|
|
531
604
|
// If we can't disconnect, the sdk is in such a bad state that reconnecting is not going to happen.
|
|
532
|
-
LoggerProxy.logger.error(
|
|
605
|
+
LoggerProxy.logger.error(
|
|
606
|
+
'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to disconnect from websocket, giving up.',
|
|
607
|
+
disconnectError
|
|
608
|
+
);
|
|
533
609
|
throw disconnectError;
|
|
534
610
|
}
|
|
535
611
|
}
|
|
536
612
|
|
|
537
613
|
try {
|
|
538
|
-
LoggerProxy.logger.info(
|
|
614
|
+
LoggerProxy.logger.info(
|
|
615
|
+
'ReconnectionManager:index#reconnectMercuryWebSocket --> Connecting websocket.'
|
|
616
|
+
);
|
|
539
617
|
await this.webex.internal.mercury.connect();
|
|
540
|
-
LoggerProxy.logger.info(
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
618
|
+
LoggerProxy.logger.info(
|
|
619
|
+
'ReconnectionManager:index#reconnectMercuryWebSocket --> Websocket connected successfully.'
|
|
620
|
+
);
|
|
621
|
+
} catch (connectError) {
|
|
622
|
+
LoggerProxy.logger.error(
|
|
623
|
+
'ReconnectionManager:index#reconnectMercuryWebSocket --> Unable to connect to websocket, giving up.',
|
|
624
|
+
connectError
|
|
625
|
+
);
|
|
626
|
+
|
|
627
|
+
throw connectError;
|
|
546
628
|
}
|
|
547
629
|
}
|
|
548
630
|
}
|