@webex/plugin-meetings 3.0.0-beta.15 → 3.0.0-beta.151
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/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +359 -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 +1046 -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 -21
- 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 +0 -21
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +0 -21
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +0 -21
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +0 -21
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +0 -28
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +0 -21
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +0 -21
- 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 +0 -21
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +0 -21
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +9 -43
- 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 +7 -13
- package/dist/config.js.map +1 -1
- package/dist/constants.js +208 -64
- 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 +300 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +78 -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 +387 -208
- 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 +90 -126
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +93 -92
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +70 -219
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +74 -198
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -8
- 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 +79 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2685 -3324
- 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 +243 -185
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +296 -342
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +0 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/state.js +16 -26
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +446 -585
- 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 +8 -31
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +261 -242
- 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 +526 -372
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +21 -40
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +172 -141
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +58 -57
- 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 +123 -162
- 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 +75 -147
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +170 -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 +73 -94
- 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 +66 -43
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +502 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +24 -51
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +3 -38
- 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 +18 -24
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +356 -476
- 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 +32 -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 -462
- 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 +9 -44
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +43 -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 +72 -0
- package/dist/types/constants.d.ts +978 -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 +86 -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 +149 -0
- package/dist/types/meeting/index.d.ts +1509 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
- package/dist/types/meeting/muteState.d.ts +184 -0
- package/dist/types/meeting/request.d.ts +270 -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 +75 -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 +364 -0
- package/dist/types/meetings/meetings.types.d.ts +4 -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 +104 -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 +277 -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/package.json +28 -21
- package/src/annotation/annotation.types.ts +52 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +343 -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 +921 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/errors/webex-errors.ts +6 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/config.ts +5 -7
- package/src/constants.ts +155 -20
- 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 +286 -0
- package/src/index.ts +34 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +310 -21
- package/src/locus-info/mediaSharesUtils.ts +48 -0
- package/src/locus-info/parser.ts +2 -1
- package/src/locus-info/selfUtils.ts +71 -1
- package/src/media/index.ts +70 -142
- package/src/media/properties.ts +41 -104
- package/src/mediaQualityMetrics/config.ts +379 -377
- package/src/meeting/in-meeting-actions.ts +156 -0
- package/src/meeting/index.ts +1730 -1768
- package/src/meeting/locusMediaRequest.ts +309 -0
- package/src/meeting/muteState.ts +228 -132
- package/src/meeting/request.ts +100 -91
- package/src/meeting/request.type.ts +2 -0
- package/src/meeting/util.ts +421 -421
- package/src/meeting-info/meeting-info-v2.ts +134 -13
- package/src/meeting-info/utilv2.ts +13 -3
- package/src/meetings/collection.ts +20 -0
- package/src/meetings/index.ts +375 -83
- package/src/meetings/meetings.types.ts +9 -0
- package/src/meetings/request.ts +3 -1
- package/src/meetings/util.ts +103 -4
- package/src/member/index.ts +40 -0
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +81 -1
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +108 -6
- package/src/members/request.ts +98 -17
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +319 -240
- package/src/metrics/config.ts +49 -10
- package/src/metrics/constants.ts +2 -4
- package/src/metrics/index.ts +43 -27
- package/src/multistream/mediaRequestManager.ts +210 -45
- package/src/multistream/receiveSlot.ts +68 -26
- package/src/multistream/receiveSlotManager.ts +61 -38
- package/src/multistream/remoteMedia.ts +29 -3
- package/src/multistream/remoteMediaGroup.ts +61 -2
- package/src/multistream/remoteMediaManager.ts +260 -66
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/reachability/index.ts +75 -25
- package/src/reachability/request.ts +10 -5
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +28 -3
- package/src/reconnection-manager/index.ts +53 -32
- 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 +21 -30
- package/src/roap/request.ts +51 -52
- package/src/roap/turnDiscovery.ts +51 -27
- package/src/statsAnalyzer/global.ts +1 -94
- package/src/statsAnalyzer/index.ts +380 -390
- package/src/statsAnalyzer/mqaUtil.ts +106 -99
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +332 -255
- package/test/integration/spec/space-meeting.js +78 -5
- package/test/integration/spec/transcription.js +1 -1
- package/test/unit/spec/annotation/index.ts +436 -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 +1790 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +518 -0
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/locus-info/controlsUtils.js +303 -30
- package/test/unit/spec/locus-info/index.js +615 -4
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/selfConstant.js +38 -0
- package/test/unit/spec/locus-info/selfUtils.js +200 -0
- package/test/unit/spec/media/index.ts +118 -22
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +76 -0
- package/test/unit/spec/meeting/index.js +2394 -1381
- package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
- package/test/unit/spec/meeting/muteState.js +370 -208
- package/test/unit/spec/meeting/request.js +354 -42
- package/test/unit/spec/meeting/utils.js +268 -156
- package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +14 -0
- package/test/unit/spec/meetings/index.js +842 -128
- package/test/unit/spec/meetings/utils.js +206 -2
- package/test/unit/spec/member/index.js +24 -0
- package/test/unit/spec/member/util.js +384 -32
- package/test/unit/spec/members/index.js +320 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +184 -0
- package/test/unit/spec/metrics/index.js +98 -0
- package/test/unit/spec/multistream/mediaRequestManager.ts +676 -105
- package/test/unit/spec/multistream/receiveSlot.ts +77 -18
- 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 +271 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +672 -65
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/reachability/index.ts +176 -25
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +46 -13
- 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 +21 -51
- package/test/unit/spec/roap/request.ts +187 -0
- package/test/unit/spec/roap/turnDiscovery.ts +73 -34
- package/test/unit/spec/stats-analyzer/index.js +94 -43
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -45
- package/test/utils/webex-config.js +4 -0
- package/test/utils/webex-test-users.js +7 -3
- 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 -117
- 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 -93
- package/test/unit/spec/meeting/effectsState.js +0 -281
|
@@ -14,11 +14,13 @@ import ReachabilityRequest from './request';
|
|
|
14
14
|
const DEFAULT_TIMEOUT = 3000;
|
|
15
15
|
const VIDEO_MESH_TIMEOUT = 1000;
|
|
16
16
|
|
|
17
|
+
export type ICECandidateResult = {clusterId: string; elapsed?: string | null; publicIPs?: string[]};
|
|
17
18
|
/**
|
|
18
19
|
* @class Reachability
|
|
19
20
|
* @export
|
|
20
21
|
*/
|
|
21
22
|
export default class Reachability {
|
|
23
|
+
namespace = REACHABILITY.namespace;
|
|
22
24
|
webex: object;
|
|
23
25
|
reachabilityRequest: any;
|
|
24
26
|
clusterLatencyResults: any;
|
|
@@ -61,24 +63,30 @@ export default class Reachability {
|
|
|
61
63
|
this.setup();
|
|
62
64
|
|
|
63
65
|
// Remove stored reachability results to ensure no stale data
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
'Reachability:index#gatherReachability --> Error in accessing LocalStorage.'
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
return {};
|
|
72
|
-
}
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageResult);
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
await this.webex.boundedStorage.del(this.namespace, REACHABILITY.localStorageJoinCookie);
|
|
73
70
|
|
|
74
71
|
// Fetch clusters and measure latency
|
|
75
72
|
try {
|
|
76
|
-
const clusters = await this.reachabilityRequest.getClusters();
|
|
73
|
+
const {clusters, joinCookie} = await this.reachabilityRequest.getClusters();
|
|
77
74
|
|
|
78
75
|
// Perform Reachability Check
|
|
79
76
|
const results = await this.performReachabilityCheck(clusters);
|
|
80
77
|
|
|
81
|
-
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
await this.webex.boundedStorage.put(
|
|
80
|
+
this.namespace,
|
|
81
|
+
REACHABILITY.localStorageResult,
|
|
82
|
+
JSON.stringify(results)
|
|
83
|
+
);
|
|
84
|
+
// @ts-ignore
|
|
85
|
+
await this.webex.boundedStorage.put(
|
|
86
|
+
this.namespace,
|
|
87
|
+
REACHABILITY.localStorageJoinCookie,
|
|
88
|
+
JSON.stringify(joinCookie)
|
|
89
|
+
);
|
|
82
90
|
|
|
83
91
|
LoggerProxy.logger.log(
|
|
84
92
|
'Reachability:index#gatherReachability --> Reachability checks completed'
|
|
@@ -100,9 +108,12 @@ export default class Reachability {
|
|
|
100
108
|
* @public
|
|
101
109
|
* @memberof Reachability
|
|
102
110
|
*/
|
|
103
|
-
isAnyClusterReachable() {
|
|
111
|
+
async isAnyClusterReachable() {
|
|
104
112
|
let reachable = false;
|
|
105
|
-
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
const reachabilityData = await this.webex.boundedStorage
|
|
115
|
+
.get(this.namespace, REACHABILITY.localStorageResult)
|
|
116
|
+
.catch(() => {});
|
|
106
117
|
|
|
107
118
|
if (reachabilityData) {
|
|
108
119
|
try {
|
|
@@ -261,6 +272,7 @@ export default class Reachability {
|
|
|
261
272
|
|
|
262
273
|
// @ts-ignore
|
|
263
274
|
LoggerProxy.logger.log(
|
|
275
|
+
// @ts-ignore
|
|
264
276
|
`Reachability:index#onIceGatheringStateChange --> Successfully pinged ${peerConnection.key}:`,
|
|
265
277
|
elapsed
|
|
266
278
|
);
|
|
@@ -284,11 +296,13 @@ export default class Reachability {
|
|
|
284
296
|
if (e.candidate && String(e.candidate.type).toLowerCase() === SERVER_REFLEXIVE) {
|
|
285
297
|
const elapsed = this.getElapsedTime(peerConnection);
|
|
286
298
|
|
|
287
|
-
// @ts-ignore
|
|
288
299
|
LoggerProxy.logger.log(
|
|
300
|
+
// @ts-ignore
|
|
289
301
|
`Reachability:index#onIceCandidate --> Successfully pinged ${peerConnection.key}:`,
|
|
290
302
|
elapsed
|
|
291
303
|
);
|
|
304
|
+
// order is important
|
|
305
|
+
this.addPublicIP(peerConnection, e.candidate.address);
|
|
292
306
|
this.setLatencyAndClose(peerConnection, elapsed);
|
|
293
307
|
}
|
|
294
308
|
};
|
|
@@ -306,8 +320,9 @@ export default class Reachability {
|
|
|
306
320
|
private iceGatheringState(peerConnection: RTCPeerConnection, timeout: number) {
|
|
307
321
|
const ELAPSED = 'elapsed';
|
|
308
322
|
|
|
309
|
-
return new Promise((resolve) => {
|
|
323
|
+
return new Promise<ICECandidateResult>((resolve) => {
|
|
310
324
|
const peerConnectionProxy = new window.Proxy(peerConnection, {
|
|
325
|
+
// eslint-disable-next-line require-jsdoc
|
|
311
326
|
get(target, property) {
|
|
312
327
|
const targetMember = target[property];
|
|
313
328
|
|
|
@@ -321,7 +336,7 @@ export default class Reachability {
|
|
|
321
336
|
// only intercept elapsed property
|
|
322
337
|
if (property === ELAPSED) {
|
|
323
338
|
// @ts-ignore
|
|
324
|
-
resolve({clusterId: peerConnection.key, elapsed: value});
|
|
339
|
+
resolve({clusterId: peerConnection.key, publicIPs: target.publicIPs, elapsed: value});
|
|
325
340
|
|
|
326
341
|
return true;
|
|
327
342
|
}
|
|
@@ -342,6 +357,8 @@ export default class Reachability {
|
|
|
342
357
|
|
|
343
358
|
// Close any open peerConnections
|
|
344
359
|
if (peerConnectionProxy.connectionState !== CLOSED) {
|
|
360
|
+
// order is important
|
|
361
|
+
this.addPublicIP(peerConnectionProxy, null);
|
|
345
362
|
this.setLatencyAndClose(peerConnectionProxy, null);
|
|
346
363
|
}
|
|
347
364
|
}, timeout);
|
|
@@ -366,24 +383,30 @@ export default class Reachability {
|
|
|
366
383
|
|
|
367
384
|
/**
|
|
368
385
|
* Calculates time to establish connection
|
|
369
|
-
* @param {
|
|
386
|
+
* @param {Array<ICECandidateResult>} iceResults iceResults
|
|
370
387
|
* @returns {object} reachabilityMap
|
|
371
|
-
* @
|
|
388
|
+
* @protected
|
|
372
389
|
* @memberof Reachability
|
|
373
390
|
*/
|
|
374
|
-
|
|
391
|
+
protected parseIceResultsToReachabilityResults(iceResults: Array<ICECandidateResult>) {
|
|
375
392
|
const reachabilityMap = {};
|
|
376
393
|
|
|
377
|
-
iceResults.forEach(({clusterId, elapsed}) => {
|
|
378
|
-
|
|
394
|
+
iceResults.forEach(({clusterId, elapsed, publicIPs}) => {
|
|
395
|
+
const latencyResult = {};
|
|
379
396
|
|
|
380
|
-
if (elapsed
|
|
381
|
-
latencyResult
|
|
397
|
+
if (!elapsed) {
|
|
398
|
+
Object.assign(latencyResult, {reachable: 'false'});
|
|
382
399
|
} else {
|
|
383
|
-
latencyResult
|
|
400
|
+
Object.assign(latencyResult, {
|
|
384
401
|
reachable: 'true',
|
|
385
402
|
latencyInMilliseconds: elapsed.toString(),
|
|
386
|
-
};
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
if (publicIPs) {
|
|
407
|
+
Object.assign(latencyResult, {
|
|
408
|
+
clientMediaIPs: publicIPs,
|
|
409
|
+
});
|
|
387
410
|
}
|
|
388
411
|
|
|
389
412
|
reachabilityMap[clusterId] = {
|
|
@@ -429,6 +452,33 @@ export default class Reachability {
|
|
|
429
452
|
});
|
|
430
453
|
}
|
|
431
454
|
|
|
455
|
+
/**
|
|
456
|
+
* Adds public IP (client media IPs)
|
|
457
|
+
* @param {RTCPeerConnection} peerConnection
|
|
458
|
+
* @param {string} publicIP
|
|
459
|
+
* @returns {void}
|
|
460
|
+
*/
|
|
461
|
+
protected addPublicIP(peerConnection: RTCPeerConnection, publicIP?: string | null) {
|
|
462
|
+
const modifiedPeerConnection: RTCPeerConnection & {publicIPs?: string[]} = peerConnection;
|
|
463
|
+
const {CLOSED} = CONNECTION_STATE;
|
|
464
|
+
|
|
465
|
+
if (modifiedPeerConnection.connectionState === CLOSED) {
|
|
466
|
+
LoggerProxy.logger.log(
|
|
467
|
+
`Reachability:index#addPublicIP --> Attempting to set publicIP of ${publicIP} on closed peerConnection.`
|
|
468
|
+
);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
if (publicIP) {
|
|
472
|
+
if (modifiedPeerConnection.publicIPs) {
|
|
473
|
+
modifiedPeerConnection.publicIPs.push(publicIP);
|
|
474
|
+
} else {
|
|
475
|
+
modifiedPeerConnection.publicIPs = [publicIP];
|
|
476
|
+
}
|
|
477
|
+
} else {
|
|
478
|
+
modifiedPeerConnection.publicIPs = null;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
432
482
|
/**
|
|
433
483
|
* Records latency and closes the peerConnection
|
|
434
484
|
* @param {RTCPeerConnection} peerConnection
|
|
@@ -28,21 +28,23 @@ class ReachabilityRequest {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* Gets the cluster information
|
|
32
32
|
*
|
|
33
|
-
* @param {boolean} includeVideoMesh whether to include the video mesh clusters in the result or not
|
|
34
33
|
* @returns {Promise}
|
|
35
34
|
*/
|
|
36
|
-
getClusters = (): Promise<ClusterList> =>
|
|
35
|
+
getClusters = (): Promise<{clusters: ClusterList; joinCookie: any}> =>
|
|
37
36
|
this.webex
|
|
38
37
|
.request({
|
|
39
38
|
method: HTTP_VERBS.GET,
|
|
40
39
|
shouldRefreshAccessToken: false,
|
|
41
40
|
api: API.CALLIOPEDISCOVERY,
|
|
42
41
|
resource: RESOURCE.CLUSTERS,
|
|
42
|
+
qs: {
|
|
43
|
+
JCSupport: 1,
|
|
44
|
+
},
|
|
43
45
|
})
|
|
44
46
|
.then((res) => {
|
|
45
|
-
const {clusters} = res.body;
|
|
47
|
+
const {clusters, joinCookie} = res.body;
|
|
46
48
|
|
|
47
49
|
Object.keys(clusters).forEach((key) => {
|
|
48
50
|
clusters[key].isVideoMesh = res.body.clusterClasses?.hybridMedia?.includes(key);
|
|
@@ -52,7 +54,10 @@ class ReachabilityRequest {
|
|
|
52
54
|
`Reachability:request#getClusters --> get clusters successful:${JSON.stringify(clusters)}`
|
|
53
55
|
);
|
|
54
56
|
|
|
55
|
-
return
|
|
57
|
+
return {
|
|
58
|
+
clusters,
|
|
59
|
+
joinCookie,
|
|
60
|
+
};
|
|
56
61
|
});
|
|
57
62
|
|
|
58
63
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {Reaction,
|
|
1
|
+
import {Reaction, ReactionServerType, SkinTone, SkinToneType} from './reactions.type';
|
|
2
2
|
|
|
3
|
-
const Reactions: Record<
|
|
3
|
+
const Reactions: Record<ReactionServerType, Reaction> = {
|
|
4
4
|
smile: {
|
|
5
5
|
type: 'smile',
|
|
6
6
|
codepoints: '1F642',
|
|
@@ -31,12 +31,12 @@ const Reactions: Record<ReactionType, Reaction> = {
|
|
|
31
31
|
codepoints: '1F44F',
|
|
32
32
|
shortcodes: ':clap:',
|
|
33
33
|
},
|
|
34
|
-
|
|
34
|
+
thumb_up: {
|
|
35
35
|
type: 'thumb_up',
|
|
36
36
|
codepoints: '1F44D',
|
|
37
37
|
shortcodes: ':thumbsup:',
|
|
38
38
|
},
|
|
39
|
-
|
|
39
|
+
thumb_down: {
|
|
40
40
|
type: 'thumb_down',
|
|
41
41
|
codepoints: '1F44E',
|
|
42
42
|
shortcodes: ':thumbsdown:',
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import {REACTION_RELAY_TYPES} from './constants';
|
|
2
|
+
|
|
1
3
|
export type EmoticonData = {
|
|
2
4
|
type: string;
|
|
3
5
|
codepoints?: string;
|
|
@@ -5,20 +7,21 @@ export type EmoticonData = {
|
|
|
5
7
|
};
|
|
6
8
|
|
|
7
9
|
export type SkinTone = EmoticonData;
|
|
10
|
+
|
|
8
11
|
export type Reaction = EmoticonData & {
|
|
9
12
|
tone?: SkinTone;
|
|
10
13
|
};
|
|
11
14
|
|
|
12
15
|
// eslint-disable-next-line no-shadow
|
|
13
|
-
export enum
|
|
16
|
+
export enum ReactionServerType {
|
|
14
17
|
smile = 'smile',
|
|
15
18
|
sad = 'sad',
|
|
16
19
|
wow = 'wow',
|
|
17
20
|
haha = 'haha',
|
|
18
21
|
celebrate = 'celebrate',
|
|
19
22
|
clap = 'clap',
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
thumb_up = 'thumb_up',
|
|
24
|
+
thumb_down = 'thumb_down',
|
|
22
25
|
heart = 'heart',
|
|
23
26
|
fire = 'fire',
|
|
24
27
|
prayer = 'prayer',
|
|
@@ -35,3 +38,25 @@ export enum SkinToneType {
|
|
|
35
38
|
medium_dark = 'medium_dark',
|
|
36
39
|
dark = 'dark',
|
|
37
40
|
}
|
|
41
|
+
|
|
42
|
+
export type Sender = {
|
|
43
|
+
participantId: string;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export type ProcessedReaction = {
|
|
47
|
+
reaction: Reaction;
|
|
48
|
+
sender: {
|
|
49
|
+
id: Sender['participantId'];
|
|
50
|
+
name: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
type RelayEventData = {
|
|
55
|
+
relayType: (typeof REACTION_RELAY_TYPES)['REACTION'];
|
|
56
|
+
reaction: Reaction;
|
|
57
|
+
sender: Sender;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export type RelayEvent = {
|
|
61
|
+
data: RelayEventData;
|
|
62
|
+
};
|
|
@@ -19,9 +19,9 @@ import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
|
19
19
|
import ReconnectionError from '../common/errors/reconnection';
|
|
20
20
|
import ReconnectInProgress from '../common/errors/reconnection-in-progress';
|
|
21
21
|
import {eventType, reconnection, errorObjects} from '../metrics/config';
|
|
22
|
-
import Media from '../media';
|
|
23
22
|
import Metrics from '../metrics';
|
|
24
23
|
import Meeting from '../meeting';
|
|
24
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Used to indicate that the reconnect logic needs to be retried.
|
|
@@ -231,6 +231,29 @@ export default class ReconnectionManager {
|
|
|
231
231
|
this.meeting = null;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Stop the local share track.
|
|
236
|
+
*
|
|
237
|
+
* @param {string} reason a {@link SHARE_STOPPED_REASON}
|
|
238
|
+
* @returns {undefined}
|
|
239
|
+
* @private
|
|
240
|
+
* @memberof ReconnectionManager
|
|
241
|
+
*/
|
|
242
|
+
private async stopLocalShareTrack(reason: string) {
|
|
243
|
+
await this.meeting.unpublishTracks([this.meeting.mediaProperties.shareTrack]); // todo screen share audio SPARK-399690
|
|
244
|
+
Trigger.trigger(
|
|
245
|
+
this.meeting,
|
|
246
|
+
{
|
|
247
|
+
file: 'reconnection-manager/index',
|
|
248
|
+
function: 'stopLocalShareTrack',
|
|
249
|
+
},
|
|
250
|
+
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
251
|
+
{
|
|
252
|
+
reason,
|
|
253
|
+
}
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
|
|
234
257
|
/**
|
|
235
258
|
* @public
|
|
236
259
|
* @memberof ReconnectionManager
|
|
@@ -385,6 +408,12 @@ export default class ReconnectionManager {
|
|
|
385
408
|
'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
|
|
386
409
|
);
|
|
387
410
|
|
|
411
|
+
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
412
|
+
|
|
413
|
+
if (wasSharing) {
|
|
414
|
+
await this.stopLocalShareTrack(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
|
|
415
|
+
}
|
|
416
|
+
|
|
388
417
|
if (networkDisconnect) {
|
|
389
418
|
try {
|
|
390
419
|
await this.reconnectMercuryWebSocket();
|
|
@@ -401,8 +430,6 @@ export default class ReconnectionManager {
|
|
|
401
430
|
}
|
|
402
431
|
}
|
|
403
432
|
|
|
404
|
-
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
405
|
-
|
|
406
433
|
try {
|
|
407
434
|
LoggerProxy.logger.info(
|
|
408
435
|
'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
|
|
@@ -420,10 +447,10 @@ export default class ReconnectionManager {
|
|
|
420
447
|
// So that on rejoin it known what parametrs it was using
|
|
421
448
|
if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
|
|
422
449
|
LoggerProxy.logger.info(
|
|
423
|
-
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely
|
|
450
|
+
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.'
|
|
424
451
|
);
|
|
425
452
|
|
|
426
|
-
throw new Error('Unable to rejoin a meeting already ended or inactive
|
|
453
|
+
throw new Error('Unable to rejoin a meeting already ended or inactive.');
|
|
427
454
|
}
|
|
428
455
|
|
|
429
456
|
LoggerProxy.logger.info(
|
|
@@ -475,24 +502,7 @@ export default class ReconnectionManager {
|
|
|
475
502
|
LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
|
|
476
503
|
|
|
477
504
|
if (wasSharing) {
|
|
478
|
-
|
|
479
|
-
Media.stopTracks(this.meeting.mediaProperties.shareTrack);
|
|
480
|
-
this.meeting.isSharing = false;
|
|
481
|
-
if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
|
|
482
|
-
this.meeting.shareStatus = SHARE_STATUS.NO_SHARE;
|
|
483
|
-
}
|
|
484
|
-
this.meeting.mediaProperties.mediaDirection.sendShare = false;
|
|
485
|
-
Trigger.trigger(
|
|
486
|
-
this.meeting,
|
|
487
|
-
{
|
|
488
|
-
file: 'reconnection-manager/index',
|
|
489
|
-
function: 'rejoinMeeting',
|
|
490
|
-
},
|
|
491
|
-
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
492
|
-
{
|
|
493
|
-
reason: SHARE_STOPPED_REASON.MEETING_REJOIN,
|
|
494
|
-
}
|
|
495
|
-
);
|
|
505
|
+
await this.stopLocalShareTrack(SHARE_STOPPED_REASON.MEETING_REJOIN);
|
|
496
506
|
}
|
|
497
507
|
} catch (joinError) {
|
|
498
508
|
this.rejoinAttempts += 1;
|
|
@@ -538,19 +548,30 @@ export default class ReconnectionManager {
|
|
|
538
548
|
'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'
|
|
539
549
|
);
|
|
540
550
|
|
|
541
|
-
//
|
|
542
|
-
// but instead manually closing and creating new media connection, because we need to do the TURN discovery again
|
|
543
|
-
|
|
544
|
-
await this.meeting.closePeerConnections();
|
|
545
|
-
this.meeting.mediaProperties.unsetPeerConnection();
|
|
546
|
-
|
|
551
|
+
// do the TURN server discovery again since the TURN server might change
|
|
547
552
|
const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true);
|
|
548
553
|
|
|
549
|
-
const
|
|
554
|
+
const iceServers = [];
|
|
555
|
+
|
|
556
|
+
if (turnServerResult.turnServerInfo) {
|
|
557
|
+
iceServers.push({
|
|
558
|
+
urls: turnServerResult.turnServerInfo.url,
|
|
559
|
+
username: turnServerResult.turnServerInfo.username || '',
|
|
560
|
+
credential: turnServerResult.turnServerInfo.password || '',
|
|
561
|
+
});
|
|
562
|
+
}
|
|
550
563
|
|
|
551
|
-
this.meeting.
|
|
564
|
+
await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
|
|
552
565
|
|
|
553
|
-
|
|
566
|
+
// resend media requests
|
|
567
|
+
if (this.meeting.isMultistream) {
|
|
568
|
+
Object.values(this.meeting.mediaRequestManagers).forEach(
|
|
569
|
+
(mediaRequestManager: MediaRequestManager) => {
|
|
570
|
+
mediaRequestManager.clearPreviousRequests();
|
|
571
|
+
mediaRequestManager.commit();
|
|
572
|
+
}
|
|
573
|
+
);
|
|
574
|
+
}
|
|
554
575
|
}
|
|
555
576
|
|
|
556
577
|
/**
|