@webex/plugin-meetings 3.0.0-beta.17 → 3.0.0-beta.171
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 -7
- 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 +216 -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 +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +1048 -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/errors/webex-errors.js +3 -2
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/config.js +6 -8
- package/dist/config.js.map +1 -1
- package/dist/constants.js +194 -28
- 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 +107 -0
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +214 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +92 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +350 -41
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +43 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +2 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +97 -14
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +41 -136
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +33 -94
- package/dist/media/properties.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -493
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +76 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2757 -2439
- 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 +229 -124
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +191 -167
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +477 -466
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +48 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +172 -50
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +20 -5
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +22 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +377 -82
- 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 +16 -12
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +88 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +43 -0
- 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 +97 -3
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +10 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +94 -11
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +109 -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 +316 -233
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -5
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -468
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +265 -36
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +52 -19
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +53 -33
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +44 -18
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +322 -103
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +4 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/reachability/index.js +117 -60
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +12 -5
- 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 -2
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +18 -18
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +216 -162
- 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 +363 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +64 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +21 -29
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +135 -94
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +135 -53
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -93
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +329 -314
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +103 -54
- package/dist/statsAnalyzer/mqaUtil.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 +8 -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 +1007 -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/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -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 +93 -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 +1462 -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 +77 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +62 -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 +365 -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 +158 -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/constants.d.ts +55 -0
- package/dist/types/metrics/index.d.ts +45 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +118 -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 +208 -0
- package/dist/types/recording-controller/util.d.ts +14 -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 +29 -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 +188 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +925 -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 +183 -22
- 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 +39 -0
- package/src/interpretation/README.md +51 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +182 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +110 -0
- package/src/locus-info/index.ts +374 -38
- package/src/locus-info/mediaSharesUtils.ts +48 -0
- package/src/locus-info/parser.ts +2 -1
- package/src/locus-info/selfUtils.ts +86 -2
- package/src/media/index.ts +78 -144
- package/src/media/properties.ts +55 -99
- package/src/mediaQualityMetrics/config.ts +379 -377
- package/src/meeting/in-meeting-actions.ts +151 -3
- package/src/meeting/index.ts +2181 -2052
- 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 +450 -439
- package/src/meeting-info/index.ts +54 -8
- package/src/meeting-info/meeting-info-v2.ts +150 -14
- package/src/meeting-info/utilv2.ts +13 -3
- package/src/meetings/collection.ts +20 -0
- package/src/meetings/index.ts +396 -89
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +3 -1
- package/src/meetings/util.ts +103 -4
- package/src/member/index.ts +42 -0
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +95 -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/constants.ts +2 -4
- package/src/metrics/index.ts +1 -490
- package/src/multistream/mediaRequestManager.ts +337 -63
- 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 +83 -49
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +333 -0
- package/src/recording-controller/util.ts +75 -0
- package/src/roap/index.ts +21 -30
- package/src/roap/request.ts +72 -61
- 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 +336 -259
- package/test/integration/spec/space-meeting.js +77 -4
- package/test/unit/spec/annotation/index.ts +436 -0
- package/test/unit/spec/breakouts/breakout.ts +237 -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 +89 -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/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +329 -0
- package/test/unit/spec/interpretation/siLanguage.ts +26 -0
- package/test/unit/spec/locus-info/controlsUtils.js +323 -30
- package/test/unit/spec/locus-info/index.js +792 -4
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/selfConstant.js +48 -0
- package/test/unit/spec/locus-info/selfUtils.js +275 -0
- package/test/unit/spec/media/index.ts +130 -24
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +75 -3
- package/test/unit/spec/meeting/index.js +2834 -1442
- 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 +384 -170
- package/test/unit/spec/meeting-info/index.js +181 -0
- 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 +847 -121
- package/test/unit/spec/meetings/utils.js +206 -2
- package/test/unit/spec/member/index.js +31 -0
- package/test/unit/spec/member/util.js +408 -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 +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +1012 -109
- 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 +95 -13
- package/test/unit/spec/recording-controller/index.js +307 -0
- package/test/unit/spec/recording-controller/util.js +229 -0
- package/test/unit/spec/roap/index.ts +28 -52
- package/test/unit/spec/roap/request.ts +225 -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 -18
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -262
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -299
- package/dist/metrics/config.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -106
- 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/metrics/config.ts +0 -495
- 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
|
+
};
|
|
@@ -18,10 +18,9 @@ import {
|
|
|
18
18
|
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
|
-
import {eventType, reconnection, errorObjects} from '../metrics/config';
|
|
22
|
-
import Media from '../media';
|
|
23
21
|
import Metrics from '../metrics';
|
|
24
22
|
import Meeting from '../meeting';
|
|
23
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
25
24
|
|
|
26
25
|
/**
|
|
27
26
|
* Used to indicate that the reconnect logic needs to be retried.
|
|
@@ -231,6 +230,32 @@ export default class ReconnectionManager {
|
|
|
231
230
|
this.meeting = null;
|
|
232
231
|
}
|
|
233
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Stop the local share track.
|
|
235
|
+
*
|
|
236
|
+
* @param {string} reason a {@link SHARE_STOPPED_REASON}
|
|
237
|
+
* @returns {undefined}
|
|
238
|
+
* @private
|
|
239
|
+
* @memberof ReconnectionManager
|
|
240
|
+
*/
|
|
241
|
+
private async stopLocalShareTrack(reason: string) {
|
|
242
|
+
await this.meeting.unpublishTracks([
|
|
243
|
+
this.meeting.mediaProperties.shareVideoTrack,
|
|
244
|
+
this.meeting.mediaProperties.shareAudioTrack,
|
|
245
|
+
]);
|
|
246
|
+
Trigger.trigger(
|
|
247
|
+
this.meeting,
|
|
248
|
+
{
|
|
249
|
+
file: 'reconnection-manager/index',
|
|
250
|
+
function: 'stopLocalShareTrack',
|
|
251
|
+
},
|
|
252
|
+
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
253
|
+
{
|
|
254
|
+
reason,
|
|
255
|
+
}
|
|
256
|
+
);
|
|
257
|
+
}
|
|
258
|
+
|
|
234
259
|
/**
|
|
235
260
|
* @public
|
|
236
261
|
* @memberof ReconnectionManager
|
|
@@ -302,9 +327,13 @@ export default class ReconnectionManager {
|
|
|
302
327
|
LoggerProxy.logger.info(
|
|
303
328
|
'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'
|
|
304
329
|
);
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
330
|
+
|
|
331
|
+
// @ts-ignore
|
|
332
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
333
|
+
name: 'client.media.reconnecting',
|
|
334
|
+
options: {
|
|
335
|
+
meetingId: this.meeting.id,
|
|
336
|
+
},
|
|
308
337
|
});
|
|
309
338
|
}
|
|
310
339
|
|
|
@@ -314,10 +343,16 @@ export default class ReconnectionManager {
|
|
|
314
343
|
LoggerProxy.logger.info(
|
|
315
344
|
'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'
|
|
316
345
|
);
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
346
|
+
|
|
347
|
+
// @ts-ignore
|
|
348
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
349
|
+
name: 'client.media.recovered',
|
|
350
|
+
payload: {
|
|
351
|
+
recoveredBy: 'new',
|
|
352
|
+
},
|
|
353
|
+
options: {
|
|
354
|
+
meetingId: this.meeting.id,
|
|
355
|
+
},
|
|
321
356
|
});
|
|
322
357
|
})
|
|
323
358
|
.catch((reconnectError) => {
|
|
@@ -341,23 +376,24 @@ export default class ReconnectionManager {
|
|
|
341
376
|
'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
|
|
342
377
|
);
|
|
343
378
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
379
|
+
// @ts-ignore
|
|
380
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
381
|
+
name: 'client.call.aborted',
|
|
382
|
+
payload: {
|
|
348
383
|
errors: [
|
|
349
384
|
{
|
|
350
|
-
category:
|
|
385
|
+
category: 'expected',
|
|
351
386
|
errorCode: 2008,
|
|
352
387
|
fatal: true,
|
|
353
|
-
name:
|
|
388
|
+
name: 'media-engine',
|
|
354
389
|
shownToUser: false,
|
|
355
390
|
},
|
|
356
391
|
],
|
|
357
392
|
},
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
393
|
+
options: {
|
|
394
|
+
meetingId: this.meeting.id,
|
|
395
|
+
},
|
|
396
|
+
});
|
|
361
397
|
if (reconnectError instanceof NeedsRejoinError) {
|
|
362
398
|
// send call aborded event with catogery as expected as we are trying to rejoin
|
|
363
399
|
|
|
@@ -385,6 +421,12 @@ export default class ReconnectionManager {
|
|
|
385
421
|
'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
|
|
386
422
|
);
|
|
387
423
|
|
|
424
|
+
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
425
|
+
|
|
426
|
+
if (wasSharing) {
|
|
427
|
+
await this.stopLocalShareTrack(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
|
|
428
|
+
}
|
|
429
|
+
|
|
388
430
|
if (networkDisconnect) {
|
|
389
431
|
try {
|
|
390
432
|
await this.reconnectMercuryWebSocket();
|
|
@@ -401,8 +443,6 @@ export default class ReconnectionManager {
|
|
|
401
443
|
}
|
|
402
444
|
}
|
|
403
445
|
|
|
404
|
-
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
405
|
-
|
|
406
446
|
try {
|
|
407
447
|
LoggerProxy.logger.info(
|
|
408
448
|
'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
|
|
@@ -420,10 +460,10 @@ export default class ReconnectionManager {
|
|
|
420
460
|
// So that on rejoin it known what parametrs it was using
|
|
421
461
|
if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
|
|
422
462
|
LoggerProxy.logger.info(
|
|
423
|
-
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely
|
|
463
|
+
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.'
|
|
424
464
|
);
|
|
425
465
|
|
|
426
|
-
throw new Error('Unable to rejoin a meeting already ended or inactive
|
|
466
|
+
throw new Error('Unable to rejoin a meeting already ended or inactive.');
|
|
427
467
|
}
|
|
428
468
|
|
|
429
469
|
LoggerProxy.logger.info(
|
|
@@ -475,24 +515,7 @@ export default class ReconnectionManager {
|
|
|
475
515
|
LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
|
|
476
516
|
|
|
477
517
|
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
|
-
);
|
|
518
|
+
await this.stopLocalShareTrack(SHARE_STOPPED_REASON.MEETING_REJOIN);
|
|
496
519
|
}
|
|
497
520
|
} catch (joinError) {
|
|
498
521
|
this.rejoinAttempts += 1;
|
|
@@ -538,19 +561,30 @@ export default class ReconnectionManager {
|
|
|
538
561
|
'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'
|
|
539
562
|
);
|
|
540
563
|
|
|
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
|
-
|
|
564
|
+
// do the TURN server discovery again since the TURN server might change
|
|
547
565
|
const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true);
|
|
548
566
|
|
|
549
|
-
const
|
|
567
|
+
const iceServers = [];
|
|
550
568
|
|
|
551
|
-
|
|
569
|
+
if (turnServerResult.turnServerInfo) {
|
|
570
|
+
iceServers.push({
|
|
571
|
+
urls: turnServerResult.turnServerInfo.url,
|
|
572
|
+
username: turnServerResult.turnServerInfo.username || '',
|
|
573
|
+
credential: turnServerResult.turnServerInfo.password || '',
|
|
574
|
+
});
|
|
575
|
+
}
|
|
552
576
|
|
|
553
|
-
|
|
577
|
+
await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
|
|
578
|
+
|
|
579
|
+
// resend media requests
|
|
580
|
+
if (this.meeting.isMultistream) {
|
|
581
|
+
Object.values(this.meeting.mediaRequestManagers).forEach(
|
|
582
|
+
(mediaRequestManager: MediaRequestManager) => {
|
|
583
|
+
mediaRequestManager.clearPreviousRequests();
|
|
584
|
+
mediaRequestManager.commit();
|
|
585
|
+
}
|
|
586
|
+
);
|
|
587
|
+
}
|
|
554
588
|
}
|
|
555
589
|
|
|
556
590
|
/**
|