@webex/plugin-meetings 2.59.8 → 2.60.0-next.2
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 +46 -8
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +41 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +215 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +22 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +51 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +44 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +1047 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +77 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +64 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +2 -3
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +3 -4
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +1 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +1 -2
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +1 -2
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +1 -2
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +1 -2
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +50 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/parameter.js +3 -4
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +1 -2
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +1 -2
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.js +154 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +1 -2
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +1 -2
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +1 -2
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +48 -28
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -2
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +1 -2
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +1 -2
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +1 -2
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +1 -2
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +1 -2
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +2 -3
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +8 -5
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +22 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +8 -11
- package/dist/config.js.map +1 -1
- package/dist/constants.js +437 -435
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +3 -6
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +15 -6
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +127 -38
- package/dist/controls-options-manager/index.js.map +1 -1
- 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 +309 -19
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +116 -4
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +22 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +365 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +24 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +100 -11
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -4
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +1 -2
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +1 -2
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +425 -84
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +13 -5
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +58 -3
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +253 -80
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +97 -13
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +106 -319
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +96 -153
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -22
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +498 -493
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +92 -3
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +4628 -2971
- 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 +224 -133
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +297 -199
- 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 +1 -2
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +605 -435
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -4
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +74 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +200 -63
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -2
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +2 -3
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +39 -41
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +42 -4
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +477 -123
- 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 +4 -3
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +107 -6
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +54 -2
- package/dist/member/index.js.map +1 -1
- package/dist/member/member.types.js +3 -4
- package/dist/member/member.types.js.map +1 -1
- package/dist/member/types.js +23 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +131 -29
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +11 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +174 -10
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +108 -41
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +14 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +327 -234
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +15 -9
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +4 -452
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +344 -0
- package/dist/multistream/mediaRequestManager.js.map +1 -0
- package/dist/multistream/receiveSlot.js +200 -0
- package/dist/multistream/receiveSlot.js.map +1 -0
- package/dist/multistream/receiveSlotManager.js +174 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -0
- package/dist/multistream/remoteMedia.js +268 -0
- package/dist/multistream/remoteMedia.js.map +1 -0
- package/dist/multistream/remoteMediaGroup.js +267 -0
- package/dist/multistream/remoteMediaGroup.js.map +1 -0
- package/dist/multistream/remoteMediaManager.js +1211 -0
- package/dist/multistream/remoteMediaManager.js.map +1 -0
- package/dist/multistream/sendSlotManager.js +236 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/networkQualityMonitor/index.js +5 -4
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +2 -3
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -3
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +1 -2
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +265 -72
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +18 -10
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +12 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +4 -6
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js +21 -23
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +281 -229
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +4 -5
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +57 -46
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +10 -10
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +101 -235
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +126 -180
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +115 -105
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +11 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +140 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.js +2 -85
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +402 -424
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +117 -83
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +1 -2
- package/dist/transcription/index.js.map +1 -1
- package/dist/webinar/collection.js +43 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +68 -0
- package/dist/webinar/index.js.map +1 -0
- package/package.json +34 -25
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -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/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +36 -12
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +5 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +5 -7
- package/src/constants.ts +271 -93
- package/src/controls-options-manager/enums.ts +12 -0
- package/src/controls-options-manager/index.ts +116 -21
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +294 -14
- package/src/index.ts +40 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +110 -0
- package/src/locus-info/index.ts +449 -61
- package/src/locus-info/infoUtils.ts +14 -2
- package/src/locus-info/mediaSharesUtils.ts +64 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +85 -2
- package/src/media/index.ts +153 -370
- package/src/media/properties.ts +106 -136
- package/src/media/util.ts +0 -21
- package/src/mediaQualityMetrics/config.ts +379 -377
- package/src/meeting/in-meeting-actions.ts +172 -0
- package/src/meeting/index.ts +3861 -2504
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +224 -138
- package/src/meeting/request.ts +207 -127
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/util.ts +590 -423
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +163 -13
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +28 -28
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +477 -124
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +116 -5
- package/src/member/index.ts +52 -1
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +139 -28
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +196 -7
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +333 -240
- package/src/metrics/constants.ts +13 -6
- package/src/metrics/index.ts +1 -471
- package/src/multistream/mediaRequestManager.ts +440 -0
- package/src/multistream/receiveSlot.ts +184 -0
- package/src/multistream/receiveSlotManager.ts +166 -0
- package/src/multistream/remoteMedia.ts +254 -0
- package/src/multistream/remoteMediaGroup.ts +284 -0
- package/src/multistream/remoteMediaManager.ts +1145 -0
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/reachability/index.ts +238 -45
- package/src/reachability/request.ts +17 -8
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +4 -4
- package/src/reactions/reactions.type.ts +30 -4
- package/src/reconnection-manager/index.ts +167 -154
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +98 -241
- package/src/roap/request.ts +74 -148
- package/src/roap/turnDiscovery.ts +62 -56
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +124 -0
- package/src/statsAnalyzer/global.ts +1 -84
- package/src/statsAnalyzer/index.ts +470 -522
- package/src/statsAnalyzer/mqaUtil.ts +117 -112
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +320 -264
- package/test/integration/spec/space-meeting.js +77 -4
- package/test/unit/spec/annotation/index.ts +418 -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/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +163 -0
- package/test/unit/spec/controls-options-manager/util.js +576 -60
- 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 +589 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +323 -30
- package/test/unit/spec/locus-info/index.js +1390 -16
- package/test/unit/spec/locus-info/infoUtils.js +54 -16
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
- package/test/unit/spec/locus-info/parser.js +116 -35
- package/test/unit/spec/locus-info/selfUtils.js +275 -0
- package/test/unit/spec/media/index.ts +274 -0
- package/test/unit/spec/media/properties.ts +75 -84
- package/test/unit/spec/meeting/in-meeting-actions.ts +84 -0
- package/test/unit/spec/meeting/index.js +8269 -3145
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +409 -213
- package/test/unit/spec/meeting/request.js +512 -42
- package/test/unit/spec/meeting/utils.js +741 -24
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +26 -0
- package/test/unit/spec/meetings/index.js +1201 -210
- package/test/unit/spec/meetings/utils.js +202 -2
- package/test/unit/spec/member/index.js +38 -8
- package/test/unit/spec/member/util.js +499 -29
- package/test/unit/spec/members/index.js +597 -3
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +210 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
- package/test/unit/spec/multistream/receiveSlot.ts +163 -0
- package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
- package/test/unit/spec/multistream/remoteMedia.ts +255 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/reachability/index.ts +598 -24
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reconnection-manager/index.js +145 -22
- package/test/unit/spec/recording-controller/index.js +293 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +200 -76
- package/test/unit/spec/roap/request.ts +232 -0
- package/test/unit/spec/roap/turnDiscovery.ts +86 -48
- package/test/unit/spec/rtcMetrics/index.ts +93 -0
- package/test/unit/spec/stats-analyzer/index.js +188 -174
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- 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/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/parameter.d.ts +0 -15
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -81
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -34
- package/dist/common/queue.d.ts +0 -32
- package/dist/config.d.ts +0 -73
- package/dist/constants.d.ts +0 -926
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -5
- package/dist/controls-options-manager/index.d.ts +0 -120
- package/dist/controls-options-manager/util.d.ts +0 -7
- package/dist/index.d.ts +0 -4
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -269
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -212
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -32
- package/dist/media/properties.d.ts +0 -108
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -233
- package/dist/meeting/effectsState.d.ts +0 -42
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/meeting/in-meeting-actions.d.ts +0 -79
- package/dist/meeting/index.d.ts +0 -1622
- package/dist/meeting/muteState.d.ts +0 -116
- package/dist/meeting/request.d.ts +0 -255
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -2
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -57
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -23
- package/dist/meetings/index.d.ts +0 -296
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -147
- package/dist/member/member.types.d.ts +0 -11
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -24
- package/dist/members/index.d.ts +0 -298
- package/dist/members/request.d.ts +0 -50
- package/dist/members/util.d.ts +0 -2
- package/dist/metrics/config.d.ts +0 -169
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/constants.d.ts +0 -59
- package/dist/metrics/index.d.ts +0 -152
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/peer-connection-manager/index.d.ts +0 -6
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.d.ts +0 -6
- package/dist/peer-connection-manager/util.js +0 -110
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/index.d.ts +0 -139
- package/dist/reachability/request.d.ts +0 -35
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -32
- package/dist/reconnection-manager/index.d.ts +0 -112
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -193
- package/dist/recording-controller/util.d.ts +0 -13
- package/dist/roap/collection.d.ts +0 -10
- package/dist/roap/collection.js +0 -63
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.d.ts +0 -47
- package/dist/roap/handler.js +0 -279
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/index.d.ts +0 -116
- package/dist/roap/request.d.ts +0 -35
- package/dist/roap/state.d.ts +0 -9
- package/dist/roap/state.js +0 -127
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/turnDiscovery.d.ts +0 -81
- package/dist/roap/util.d.ts +0 -2
- package/dist/roap/util.js +0 -76
- package/dist/roap/util.js.map +0 -1
- package/dist/statsAnalyzer/global.d.ts +0 -118
- package/dist/statsAnalyzer/index.d.ts +0 -193
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
- package/dist/transcription/index.d.ts +0 -64
- package/src/index.js +0 -15
- package/src/meeting/effectsState.ts +0 -209
- package/src/metrics/config.ts +0 -485
- package/src/peer-connection-manager/index.ts +0 -847
- package/src/peer-connection-manager/util.ts +0 -119
- package/src/roap/collection.ts +0 -62
- package/src/roap/handler.ts +0 -294
- package/src/roap/state.ts +0 -156
- package/src/roap/util.ts +0 -100
- package/test/unit/spec/meeting/effectsState.js +0 -281
- package/test/unit/spec/peerconnection-manager/index.js +0 -218
- package/test/unit/spec/peerconnection-manager/utils.js +0 -49
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
- package/test/unit/spec/roap/util.js +0 -30
|
@@ -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;
|
|
8
|
-
|
|
10
|
+
|
|
9
11
|
export type Reaction = EmoticonData & {
|
|
10
12
|
tone?: SkinTone;
|
|
11
13
|
};
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
// eslint-disable-next-line no-shadow
|
|
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',
|
|
@@ -26,6 +29,7 @@ export enum ReactionType {
|
|
|
26
29
|
slow_down = 'slow_down',
|
|
27
30
|
}
|
|
28
31
|
|
|
32
|
+
// eslint-disable-next-line no-shadow
|
|
29
33
|
export enum SkinToneType {
|
|
30
34
|
normal = 'normal',
|
|
31
35
|
light = 'light',
|
|
@@ -34,3 +38,25 @@ export enum SkinToneType {
|
|
|
34
38
|
medium_dark = 'medium_dark',
|
|
35
39
|
dark = 'dark',
|
|
36
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
|
+
};
|
|
@@ -14,16 +14,14 @@ import {
|
|
|
14
14
|
_CALL_,
|
|
15
15
|
_LEFT_,
|
|
16
16
|
_ID_,
|
|
17
|
+
RECONNECTION_STATE,
|
|
17
18
|
} from '../constants';
|
|
18
19
|
import BEHAVIORAL_METRICS from '../metrics/constants';
|
|
19
20
|
import ReconnectionError from '../common/errors/reconnection';
|
|
20
21
|
import ReconnectInProgress from '../common/errors/reconnection-in-progress';
|
|
21
|
-
import PeerConnectionManager from '../peer-connection-manager';
|
|
22
|
-
import {eventType, reconnection, errorObjects} from '../metrics/config';
|
|
23
|
-
import Media from '../media';
|
|
24
22
|
import Metrics from '../metrics';
|
|
25
|
-
import RoapCollection from '../roap/collection';
|
|
26
23
|
import Meeting from '../meeting';
|
|
24
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
27
25
|
|
|
28
26
|
/**
|
|
29
27
|
* Used to indicate that the reconnect logic needs to be retried.
|
|
@@ -99,7 +97,7 @@ export default class ReconnectionManager {
|
|
|
99
97
|
|
|
100
98
|
/**
|
|
101
99
|
* @instance
|
|
102
|
-
* @type {
|
|
100
|
+
* @type {RECONNECTION_STATE}
|
|
103
101
|
* @private
|
|
104
102
|
* @memberof ReconnectionManager
|
|
105
103
|
*/
|
|
@@ -141,6 +139,21 @@ export default class ReconnectionManager {
|
|
|
141
139
|
this.reset();
|
|
142
140
|
}
|
|
143
141
|
|
|
142
|
+
/**
|
|
143
|
+
* @public
|
|
144
|
+
* @memberof ReconnectionManager
|
|
145
|
+
* @returns {void}
|
|
146
|
+
*/
|
|
147
|
+
resetReconnectionTimer() {
|
|
148
|
+
this.iceState.resolve();
|
|
149
|
+
this.iceState.resolve = () => {};
|
|
150
|
+
|
|
151
|
+
if (this.iceState.timer) {
|
|
152
|
+
clearTimeout(this.iceState.timer);
|
|
153
|
+
delete this.iceState.timer;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
144
157
|
/**
|
|
145
158
|
* Sets the iceState to connected and clears any disconnect timeouts and
|
|
146
159
|
* related timeout data within the iceState.
|
|
@@ -153,13 +166,7 @@ export default class ReconnectionManager {
|
|
|
153
166
|
if (this.iceState.disconnected) {
|
|
154
167
|
LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');
|
|
155
168
|
|
|
156
|
-
this.
|
|
157
|
-
this.iceState.resolve = () => {};
|
|
158
|
-
|
|
159
|
-
if (this.iceState.timer) {
|
|
160
|
-
clearTimeout(this.iceState.timer);
|
|
161
|
-
delete this.iceState.timer;
|
|
162
|
-
}
|
|
169
|
+
this.resetReconnectionTimer();
|
|
163
170
|
|
|
164
171
|
this.iceState.disconnected = false;
|
|
165
172
|
}
|
|
@@ -224,6 +231,53 @@ export default class ReconnectionManager {
|
|
|
224
231
|
this.meeting = null;
|
|
225
232
|
}
|
|
226
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Stop the local share stream.
|
|
236
|
+
*
|
|
237
|
+
* @param {string} reason a {@link SHARE_STOPPED_REASON}
|
|
238
|
+
* @returns {undefined}
|
|
239
|
+
* @private
|
|
240
|
+
* @memberof ReconnectionManager
|
|
241
|
+
*/
|
|
242
|
+
private async stopLocalShareStream(reason: string) {
|
|
243
|
+
await this.meeting.unpublishStreams([
|
|
244
|
+
this.meeting.mediaProperties.shareVideoStream,
|
|
245
|
+
this.meeting.mediaProperties.shareAudioStream,
|
|
246
|
+
]);
|
|
247
|
+
Trigger.trigger(
|
|
248
|
+
this.meeting,
|
|
249
|
+
{
|
|
250
|
+
file: 'reconnection-manager/index',
|
|
251
|
+
function: 'stopLocalShareStream',
|
|
252
|
+
},
|
|
253
|
+
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
254
|
+
{
|
|
255
|
+
reason,
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* @public
|
|
262
|
+
* @memberof ReconnectionManager
|
|
263
|
+
* @returns {Boolean} true if reconnection operation is in progress
|
|
264
|
+
*/
|
|
265
|
+
isReconnectInProgress() {
|
|
266
|
+
return this.status === RECONNECTION.STATE.IN_PROGRESS;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Sets the reconnection status
|
|
271
|
+
*
|
|
272
|
+
* @public
|
|
273
|
+
* @param {RECONNECTION_STATE} status
|
|
274
|
+
* @memberof ReconnectionManager
|
|
275
|
+
* @returns {undefined}
|
|
276
|
+
*/
|
|
277
|
+
public setStatus(status: RECONNECTION_STATE) {
|
|
278
|
+
this.status = status;
|
|
279
|
+
}
|
|
280
|
+
|
|
227
281
|
/**
|
|
228
282
|
* @returns {Boolean}
|
|
229
283
|
* @throws {ReconnectionError}
|
|
@@ -286,72 +340,65 @@ export default class ReconnectionManager {
|
|
|
286
340
|
LoggerProxy.logger.info(
|
|
287
341
|
'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'
|
|
288
342
|
);
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
343
|
+
|
|
344
|
+
// @ts-ignore
|
|
345
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
346
|
+
name: 'client.media.reconnecting',
|
|
347
|
+
options: {
|
|
348
|
+
meetingId: this.meeting.id,
|
|
349
|
+
},
|
|
292
350
|
});
|
|
293
351
|
}
|
|
294
352
|
|
|
295
|
-
return this.executeReconnection({networkDisconnect})
|
|
296
|
-
|
|
297
|
-
LoggerProxy.logger.info('ReconnectionManager:index#reconnect --> Reconnection successful.');
|
|
353
|
+
return this.executeReconnection({networkDisconnect}).catch((reconnectError) => {
|
|
354
|
+
if (reconnectError instanceof NeedsRetryError) {
|
|
298
355
|
LoggerProxy.logger.info(
|
|
299
|
-
'ReconnectionManager:index#reconnect -->
|
|
356
|
+
'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'
|
|
300
357
|
);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
meeting: this.meeting,
|
|
304
|
-
data: {recoveredBy: reconnection.RECOVERED_BY_NEW},
|
|
305
|
-
});
|
|
306
|
-
})
|
|
307
|
-
.catch((reconnectError) => {
|
|
308
|
-
if (reconnectError instanceof NeedsRetryError) {
|
|
309
|
-
LoggerProxy.logger.info(
|
|
310
|
-
'ReconnectionManager:index#reconnect --> Reconnection not successful, retrying.'
|
|
311
|
-
);
|
|
312
|
-
// Reset our reconnect status since we are looping back to the beginning
|
|
313
|
-
this.status = RECONNECTION.STATE.DEFAULT_STATUS;
|
|
314
|
-
|
|
315
|
-
// This is a network retry, so we should not log START metrics again
|
|
316
|
-
return this.reconnect({networkDisconnect: true, networkRetry: true});
|
|
317
|
-
}
|
|
358
|
+
// Reset our reconnect status since we are looping back to the beginning
|
|
359
|
+
this.status = RECONNECTION.STATE.DEFAULT_STATUS;
|
|
318
360
|
|
|
319
|
-
//
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
reconnectError.message
|
|
323
|
-
);
|
|
324
|
-
LoggerProxy.logger.info(
|
|
325
|
-
'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
|
|
326
|
-
);
|
|
361
|
+
// This is a network retry, so we should not log START metrics again
|
|
362
|
+
return this.reconnect({networkDisconnect: true, networkRetry: true});
|
|
363
|
+
}
|
|
327
364
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
fatal: true,
|
|
337
|
-
name: errorObjects.name.mediaEngine,
|
|
338
|
-
shownToUser: false,
|
|
339
|
-
},
|
|
340
|
-
],
|
|
341
|
-
},
|
|
342
|
-
};
|
|
343
|
-
|
|
344
|
-
Metrics.postEvent(reconnectMetric);
|
|
345
|
-
if (reconnectError instanceof NeedsRejoinError) {
|
|
346
|
-
// send call aborded event with catogery as expected as we are trying to rejoin
|
|
347
|
-
|
|
348
|
-
if (this.autoRejoinEnabled) {
|
|
349
|
-
return this.rejoinMeeting(reconnectError.wasSharing);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
365
|
+
// Reconnect has failed
|
|
366
|
+
LoggerProxy.logger.error(
|
|
367
|
+
'ReconnectionManager:index#reconnect --> Reconnection failed.',
|
|
368
|
+
reconnectError.message
|
|
369
|
+
);
|
|
370
|
+
LoggerProxy.logger.info(
|
|
371
|
+
'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
|
|
372
|
+
);
|
|
352
373
|
|
|
353
|
-
|
|
374
|
+
// @ts-ignore
|
|
375
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
376
|
+
name: 'client.call.aborted',
|
|
377
|
+
payload: {
|
|
378
|
+
errors: [
|
|
379
|
+
{
|
|
380
|
+
category: 'expected',
|
|
381
|
+
errorCode: 2008,
|
|
382
|
+
fatal: true,
|
|
383
|
+
name: 'media-engine',
|
|
384
|
+
shownToUser: false,
|
|
385
|
+
},
|
|
386
|
+
],
|
|
387
|
+
},
|
|
388
|
+
options: {
|
|
389
|
+
meetingId: this.meeting.id,
|
|
390
|
+
},
|
|
354
391
|
});
|
|
392
|
+
if (reconnectError instanceof NeedsRejoinError) {
|
|
393
|
+
// send call aborded event with catogery as expected as we are trying to rejoin
|
|
394
|
+
|
|
395
|
+
if (this.autoRejoinEnabled) {
|
|
396
|
+
return this.rejoinMeeting(reconnectError.wasSharing);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
throw reconnectError;
|
|
401
|
+
});
|
|
355
402
|
}
|
|
356
403
|
|
|
357
404
|
/**
|
|
@@ -369,6 +416,12 @@ export default class ReconnectionManager {
|
|
|
369
416
|
'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
|
|
370
417
|
);
|
|
371
418
|
|
|
419
|
+
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
420
|
+
|
|
421
|
+
if (wasSharing) {
|
|
422
|
+
await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
|
|
423
|
+
}
|
|
424
|
+
|
|
372
425
|
if (networkDisconnect) {
|
|
373
426
|
try {
|
|
374
427
|
await this.reconnectMercuryWebSocket();
|
|
@@ -385,29 +438,29 @@ export default class ReconnectionManager {
|
|
|
385
438
|
}
|
|
386
439
|
}
|
|
387
440
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
441
|
+
if (!this.webex.credentials.isUnverifiedGuest) {
|
|
442
|
+
try {
|
|
443
|
+
LoggerProxy.logger.info(
|
|
444
|
+
'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
|
|
445
|
+
);
|
|
446
|
+
await this.webex.meetings.syncMeetings();
|
|
447
|
+
} catch (syncError) {
|
|
448
|
+
LoggerProxy.logger.info(
|
|
449
|
+
'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',
|
|
450
|
+
syncError
|
|
451
|
+
);
|
|
452
|
+
throw new NeedsRetryError(syncError);
|
|
453
|
+
}
|
|
401
454
|
}
|
|
402
455
|
|
|
403
456
|
// TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object
|
|
404
457
|
// So that on rejoin it known what parametrs it was using
|
|
405
458
|
if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
|
|
406
459
|
LoggerProxy.logger.info(
|
|
407
|
-
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely
|
|
460
|
+
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.'
|
|
408
461
|
);
|
|
409
462
|
|
|
410
|
-
throw new Error('Unable to rejoin a meeting already ended or inactive
|
|
463
|
+
throw new Error('Unable to rejoin a meeting already ended or inactive.');
|
|
411
464
|
}
|
|
412
465
|
|
|
413
466
|
LoggerProxy.logger.info(
|
|
@@ -427,14 +480,13 @@ export default class ReconnectionManager {
|
|
|
427
480
|
const media = await this.reconnectMedia();
|
|
428
481
|
|
|
429
482
|
LoggerProxy.logger.log(
|
|
430
|
-
'ReconnectionManager:index#executeReconnection -->
|
|
483
|
+
'ReconnectionManager:index#executeReconnection --> webRTC media connection renewed and local sdp offer sent'
|
|
431
484
|
);
|
|
432
|
-
this.status = RECONNECTION.STATE.COMPLETE;
|
|
433
485
|
|
|
434
486
|
return media;
|
|
435
487
|
} catch (error) {
|
|
436
488
|
LoggerProxy.logger.error(
|
|
437
|
-
'ReconnectionManager:index#executeReconnection -->
|
|
489
|
+
'ReconnectionManager:index#executeReconnection --> failed to renew webRTC media connection or initiate offer'
|
|
438
490
|
);
|
|
439
491
|
this.status = RECONNECTION.STATE.FAILURE;
|
|
440
492
|
|
|
@@ -454,32 +506,12 @@ export default class ReconnectionManager {
|
|
|
454
506
|
LoggerProxy.logger.info(
|
|
455
507
|
'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'
|
|
456
508
|
);
|
|
457
|
-
const previousCorrelationId = this.meeting.correlationId;
|
|
458
509
|
|
|
459
510
|
await this.meeting.join({rejoin: true});
|
|
460
511
|
LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
|
|
461
512
|
|
|
462
|
-
RoapCollection.deleteSession(previousCorrelationId);
|
|
463
|
-
|
|
464
513
|
if (wasSharing) {
|
|
465
|
-
|
|
466
|
-
Media.stopTracks(this.meeting.mediaProperties.shareTrack);
|
|
467
|
-
this.meeting.isSharing = false;
|
|
468
|
-
if (this.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE) {
|
|
469
|
-
this.meeting.shareStatus = SHARE_STATUS.NO_SHARE;
|
|
470
|
-
}
|
|
471
|
-
this.meeting.mediaProperties.mediaDirection.sendShare = false;
|
|
472
|
-
Trigger.trigger(
|
|
473
|
-
this.meeting,
|
|
474
|
-
{
|
|
475
|
-
file: 'reconnection-manager/index',
|
|
476
|
-
function: 'rejoinMeeting',
|
|
477
|
-
},
|
|
478
|
-
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
479
|
-
{
|
|
480
|
-
reason: SHARE_STOPPED_REASON.MEETING_REJOIN,
|
|
481
|
-
}
|
|
482
|
-
);
|
|
514
|
+
await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEETING_REJOIN);
|
|
483
515
|
}
|
|
484
516
|
} catch (joinError) {
|
|
485
517
|
this.rejoinAttempts += 1;
|
|
@@ -520,33 +552,37 @@ export default class ReconnectionManager {
|
|
|
520
552
|
* @private
|
|
521
553
|
* @memberof ReconnectionManager
|
|
522
554
|
*/
|
|
523
|
-
reconnectMedia() {
|
|
555
|
+
async reconnectMedia() {
|
|
556
|
+
LoggerProxy.logger.log('ReconnectionManager:index#reconnectMedia --> do turn discovery');
|
|
557
|
+
|
|
558
|
+
// do the TURN server discovery again and ignore reachability results since the TURN server might change
|
|
559
|
+
const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true, true);
|
|
560
|
+
|
|
561
|
+
const iceServers = [];
|
|
562
|
+
|
|
563
|
+
if (turnServerResult.turnServerInfo) {
|
|
564
|
+
iceServers.push({
|
|
565
|
+
urls: turnServerResult.turnServerInfo.url,
|
|
566
|
+
username: turnServerResult.turnServerInfo.username || '',
|
|
567
|
+
credential: turnServerResult.turnServerInfo.password || '',
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
|
|
524
571
|
LoggerProxy.logger.log(
|
|
525
|
-
'ReconnectionManager:index#reconnectMedia -->
|
|
572
|
+
'ReconnectionManager:index#reconnectMedia --> renew webRTC media connection and send local sdp offer'
|
|
526
573
|
);
|
|
527
574
|
|
|
528
|
-
|
|
529
|
-
.then(() =>
|
|
530
|
-
Media.attachMedia(this.meeting.mediaProperties, {
|
|
531
|
-
meetingId: this.meeting.id,
|
|
532
|
-
remoteQualityLevel: this.meeting.mediaProperties.remoteQualityLevel,
|
|
533
|
-
enableRtx: this.meeting.config.enableRtx,
|
|
534
|
-
enableExtmap: this.meeting.config.enableExtmap,
|
|
535
|
-
})
|
|
536
|
-
)
|
|
537
|
-
.then((peerConnection) => this.meeting.setRemoteStream(peerConnection))
|
|
538
|
-
.then(() => {
|
|
539
|
-
LoggerProxy.logger.log(
|
|
540
|
-
'ReconnectionManager:index#reconnectMedia --> Sending ROAP media request'
|
|
541
|
-
);
|
|
575
|
+
await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
|
|
542
576
|
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
577
|
+
// resend media requests
|
|
578
|
+
if (this.meeting.isMultistream) {
|
|
579
|
+
Object.values(this.meeting.mediaRequestManagers).forEach(
|
|
580
|
+
(mediaRequestManager: MediaRequestManager) => {
|
|
581
|
+
mediaRequestManager.clearPreviousRequests();
|
|
582
|
+
mediaRequestManager.commit();
|
|
583
|
+
}
|
|
584
|
+
);
|
|
585
|
+
}
|
|
550
586
|
}
|
|
551
587
|
|
|
552
588
|
/**
|
|
@@ -596,27 +632,4 @@ export default class ReconnectionManager {
|
|
|
596
632
|
throw connectError;
|
|
597
633
|
}
|
|
598
634
|
}
|
|
599
|
-
|
|
600
|
-
/**
|
|
601
|
-
* @param {Meeting} meeting
|
|
602
|
-
* @returns {undefined}
|
|
603
|
-
* @private
|
|
604
|
-
* @memberof ReconnectionManager
|
|
605
|
-
*/
|
|
606
|
-
private static async setupPeerConnection(meeting: Meeting) {
|
|
607
|
-
LoggerProxy.logger.log(
|
|
608
|
-
'ReconnectionManager:index#setupPeerConnection --> Begin resetting peer connection'
|
|
609
|
-
);
|
|
610
|
-
// close pcs, unset to null and create a new one with out closing any streams
|
|
611
|
-
PeerConnectionManager.close(meeting.mediaProperties.peerConnection);
|
|
612
|
-
meeting.mediaProperties.unsetPeerConnection();
|
|
613
|
-
|
|
614
|
-
const turnServerResult = await meeting.roap.doTurnDiscovery(meeting, true);
|
|
615
|
-
|
|
616
|
-
meeting.mediaProperties.reInitiatePeerconnection(turnServerResult.turnServerInfo);
|
|
617
|
-
PeerConnectionManager.setPeerConnectionEvents(meeting);
|
|
618
|
-
|
|
619
|
-
// update the peerconnection in the stats manager when ever we reconnect
|
|
620
|
-
meeting.statsAnalyzer.updatePeerconnection(meeting.mediaProperties.peerConnection);
|
|
621
|
-
}
|
|
622
635
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import PermissionError from '../common/errors/permission';
|
|
2
|
-
import {CONTROLS, HTTP_VERBS} from '../constants';
|
|
2
|
+
import {CONTROLS, HTTP_VERBS, SELF_POLICY} from '../constants';
|
|
3
3
|
import MeetingRequest from '../meeting/request';
|
|
4
4
|
import RecordingAction from './enums';
|
|
5
5
|
import Util from './util';
|
|
@@ -28,6 +28,14 @@ export default class RecordingController {
|
|
|
28
28
|
*/
|
|
29
29
|
private displayHints: Array<string> = [];
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* @instance
|
|
33
|
+
* @type {Object}
|
|
34
|
+
* @private
|
|
35
|
+
* @memberof RecordingInfo
|
|
36
|
+
*/
|
|
37
|
+
private selfUserPolicies: Record<SELF_POLICY, boolean>;
|
|
38
|
+
|
|
31
39
|
/**
|
|
32
40
|
* @instance
|
|
33
41
|
* @type {string}
|
|
@@ -81,7 +89,6 @@ export default class RecordingController {
|
|
|
81
89
|
|
|
82
90
|
/**
|
|
83
91
|
* @param {MeetingRequest} request
|
|
84
|
-
* @param {LocusInfo} info
|
|
85
92
|
* @returns {void}
|
|
86
93
|
* @private
|
|
87
94
|
* @memberof RecordingController
|
|
@@ -126,6 +133,16 @@ export default class RecordingController {
|
|
|
126
133
|
this.displayHints = hints;
|
|
127
134
|
}
|
|
128
135
|
|
|
136
|
+
/**
|
|
137
|
+
* @param {Object} selfUserPolicies
|
|
138
|
+
* @returns {void}
|
|
139
|
+
* @public
|
|
140
|
+
* @memberof RecordingController
|
|
141
|
+
*/
|
|
142
|
+
public setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>) {
|
|
143
|
+
this.selfUserPolicies = selfUserPolicies;
|
|
144
|
+
}
|
|
145
|
+
|
|
129
146
|
/**
|
|
130
147
|
* @param {string} id
|
|
131
148
|
* @returns {void}
|
|
@@ -264,7 +281,7 @@ export default class RecordingController {
|
|
|
264
281
|
);
|
|
265
282
|
|
|
266
283
|
// assumes action is proper cased (i.e., Example)
|
|
267
|
-
if (Util?.[`canUser${action}`](this.displayHints)) {
|
|
284
|
+
if (Util?.[`canUser${action}`](this.displayHints, this.selfUserPolicies)) {
|
|
268
285
|
if (this.serviceUrl) {
|
|
269
286
|
return this.recordingService(action);
|
|
270
287
|
}
|
|
@@ -1,17 +1,34 @@
|
|
|
1
|
-
import {DISPLAY_HINTS} from '../constants';
|
|
1
|
+
import {DISPLAY_HINTS, SELF_POLICY} from '../constants';
|
|
2
2
|
import RecordingAction from './enums';
|
|
3
|
+
import MeetingUtil from '../meeting/util';
|
|
3
4
|
|
|
4
|
-
const canUserStart = (
|
|
5
|
-
displayHints
|
|
5
|
+
const canUserStart = (
|
|
6
|
+
displayHints: Array<string>,
|
|
7
|
+
userPolicies: Record<SELF_POLICY, boolean>
|
|
8
|
+
): boolean =>
|
|
9
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) &&
|
|
10
|
+
MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
|
|
6
11
|
|
|
7
|
-
const canUserPause = (
|
|
8
|
-
displayHints
|
|
12
|
+
const canUserPause = (
|
|
13
|
+
displayHints: Array<string>,
|
|
14
|
+
userPolicies: Record<SELF_POLICY, boolean>
|
|
15
|
+
): boolean =>
|
|
16
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) &&
|
|
17
|
+
MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
|
|
9
18
|
|
|
10
|
-
const canUserResume = (
|
|
11
|
-
displayHints
|
|
19
|
+
const canUserResume = (
|
|
20
|
+
displayHints: Array<string>,
|
|
21
|
+
userPolicies: Record<SELF_POLICY, boolean>
|
|
22
|
+
): boolean =>
|
|
23
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) &&
|
|
24
|
+
MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
|
|
12
25
|
|
|
13
|
-
const canUserStop = (
|
|
14
|
-
displayHints
|
|
26
|
+
const canUserStop = (
|
|
27
|
+
displayHints: Array<string>,
|
|
28
|
+
userPolicies: Record<SELF_POLICY, boolean>
|
|
29
|
+
): boolean =>
|
|
30
|
+
displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) &&
|
|
31
|
+
MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
|
|
15
32
|
|
|
16
33
|
const extractLocusId = (url: string) => {
|
|
17
34
|
return url?.split('/').pop();
|