@webex/plugin-meetings 2.59.8-next.2 → 2.60.0-next.1
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 +1 -2
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +1 -2
- 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 +9 -12
- package/dist/config.js.map +1 -1
- package/dist/constants.js +437 -433
- 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 +14 -6
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +126 -37
- 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 +95 -6
- 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 +408 -67
- 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 +251 -78
- 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 +90 -3
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +4579 -2951
- 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 +295 -197
- 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 +602 -432
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +1 -2
- 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 +197 -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 +25 -12
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +23 -2
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +464 -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 +172 -8
- 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 +14 -7
- 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 +258 -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 +272 -220
- 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 +115 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.js +2 -93
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +374 -374
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +100 -66
- 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 +27 -18
- 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 +7 -9
- package/src/constants.ts +263 -89
- package/src/controls-options-manager/enums.ts +11 -1
- 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 +168 -0
- package/src/meeting/index.ts +3801 -2457
- 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 +159 -13
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +22 -9
- package/src/meetings/collection.ts +20 -0
- package/src/meetings/index.ts +466 -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 +12 -4
- 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 +124 -107
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +98 -240
- 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 +100 -0
- package/src/statsAnalyzer/global.ts +1 -92
- package/src/statsAnalyzer/index.ts +429 -447
- package/src/statsAnalyzer/mqaUtil.ts +105 -103
- 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 +82 -0
- package/test/unit/spec/meeting/index.js +7420 -3125
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +407 -212
- 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 +500 -6
- 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 +1012 -209
- 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 +528 -27
- 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 +130 -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 -77
- 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 +73 -0
- package/test/unit/spec/stats-analyzer/index.js +205 -50
- 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/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- 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.js +0 -110
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/roap/collection.js +0 -63
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.js +0 -279
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/state.js +0 -127
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/util.js +0 -76
- package/dist/roap/util.js.map +0 -1
- 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
|
+
};
|
|
@@ -18,12 +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 PeerConnectionManager from '../peer-connection-manager';
|
|
22
|
-
import {eventType, reconnection, errorObjects} from '../metrics/config';
|
|
23
|
-
import Media from '../media';
|
|
24
21
|
import Metrics from '../metrics';
|
|
25
|
-
import RoapCollection from '../roap/collection';
|
|
26
22
|
import Meeting from '../meeting';
|
|
23
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
27
24
|
|
|
28
25
|
/**
|
|
29
26
|
* Used to indicate that the reconnect logic needs to be retried.
|
|
@@ -141,6 +138,21 @@ export default class ReconnectionManager {
|
|
|
141
138
|
this.reset();
|
|
142
139
|
}
|
|
143
140
|
|
|
141
|
+
/**
|
|
142
|
+
* @public
|
|
143
|
+
* @memberof ReconnectionManager
|
|
144
|
+
* @returns {void}
|
|
145
|
+
*/
|
|
146
|
+
resetReconnectionTimer() {
|
|
147
|
+
this.iceState.resolve();
|
|
148
|
+
this.iceState.resolve = () => {};
|
|
149
|
+
|
|
150
|
+
if (this.iceState.timer) {
|
|
151
|
+
clearTimeout(this.iceState.timer);
|
|
152
|
+
delete this.iceState.timer;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
144
156
|
/**
|
|
145
157
|
* Sets the iceState to connected and clears any disconnect timeouts and
|
|
146
158
|
* related timeout data within the iceState.
|
|
@@ -153,13 +165,7 @@ export default class ReconnectionManager {
|
|
|
153
165
|
if (this.iceState.disconnected) {
|
|
154
166
|
LoggerProxy.logger.log('ReconnectionManager:index#iceReconnected --> ice has reconnected');
|
|
155
167
|
|
|
156
|
-
this.
|
|
157
|
-
this.iceState.resolve = () => {};
|
|
158
|
-
|
|
159
|
-
if (this.iceState.timer) {
|
|
160
|
-
clearTimeout(this.iceState.timer);
|
|
161
|
-
delete this.iceState.timer;
|
|
162
|
-
}
|
|
168
|
+
this.resetReconnectionTimer();
|
|
163
169
|
|
|
164
170
|
this.iceState.disconnected = false;
|
|
165
171
|
}
|
|
@@ -224,6 +230,41 @@ export default class ReconnectionManager {
|
|
|
224
230
|
this.meeting = null;
|
|
225
231
|
}
|
|
226
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Stop the local share stream.
|
|
235
|
+
*
|
|
236
|
+
* @param {string} reason a {@link SHARE_STOPPED_REASON}
|
|
237
|
+
* @returns {undefined}
|
|
238
|
+
* @private
|
|
239
|
+
* @memberof ReconnectionManager
|
|
240
|
+
*/
|
|
241
|
+
private async stopLocalShareStream(reason: string) {
|
|
242
|
+
await this.meeting.unpublishStreams([
|
|
243
|
+
this.meeting.mediaProperties.shareVideoStream,
|
|
244
|
+
this.meeting.mediaProperties.shareAudioStream,
|
|
245
|
+
]);
|
|
246
|
+
Trigger.trigger(
|
|
247
|
+
this.meeting,
|
|
248
|
+
{
|
|
249
|
+
file: 'reconnection-manager/index',
|
|
250
|
+
function: 'stopLocalShareStream',
|
|
251
|
+
},
|
|
252
|
+
EVENT_TRIGGERS.MEETING_STOPPED_SHARING_LOCAL,
|
|
253
|
+
{
|
|
254
|
+
reason,
|
|
255
|
+
}
|
|
256
|
+
);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* @public
|
|
261
|
+
* @memberof ReconnectionManager
|
|
262
|
+
* @returns {Boolean} true if reconnection operation is in progress
|
|
263
|
+
*/
|
|
264
|
+
isReconnectInProgress() {
|
|
265
|
+
return this.status === RECONNECTION.STATE.IN_PROGRESS;
|
|
266
|
+
}
|
|
267
|
+
|
|
227
268
|
/**
|
|
228
269
|
* @returns {Boolean}
|
|
229
270
|
* @throws {ReconnectionError}
|
|
@@ -286,9 +327,13 @@ export default class ReconnectionManager {
|
|
|
286
327
|
LoggerProxy.logger.info(
|
|
287
328
|
'ReconnectionManager:index#reconnect --> Sending reconnect start metric.'
|
|
288
329
|
);
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
330
|
+
|
|
331
|
+
// @ts-ignore
|
|
332
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
333
|
+
name: 'client.media.reconnecting',
|
|
334
|
+
options: {
|
|
335
|
+
meetingId: this.meeting.id,
|
|
336
|
+
},
|
|
292
337
|
});
|
|
293
338
|
}
|
|
294
339
|
|
|
@@ -298,10 +343,16 @@ export default class ReconnectionManager {
|
|
|
298
343
|
LoggerProxy.logger.info(
|
|
299
344
|
'ReconnectionManager:index#reconnect --> Sending reconnect success metric.'
|
|
300
345
|
);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
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
|
+
},
|
|
305
356
|
});
|
|
306
357
|
})
|
|
307
358
|
.catch((reconnectError) => {
|
|
@@ -325,23 +376,24 @@ export default class ReconnectionManager {
|
|
|
325
376
|
'ReconnectionManager:index#reconnect --> Sending reconnect abort metric.'
|
|
326
377
|
);
|
|
327
378
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
379
|
+
// @ts-ignore
|
|
380
|
+
this.webex.internal.newMetrics.submitClientEvent({
|
|
381
|
+
name: 'client.call.aborted',
|
|
382
|
+
payload: {
|
|
332
383
|
errors: [
|
|
333
384
|
{
|
|
334
|
-
category:
|
|
385
|
+
category: 'expected',
|
|
335
386
|
errorCode: 2008,
|
|
336
387
|
fatal: true,
|
|
337
|
-
name:
|
|
388
|
+
name: 'media-engine',
|
|
338
389
|
shownToUser: false,
|
|
339
390
|
},
|
|
340
391
|
],
|
|
341
392
|
},
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
393
|
+
options: {
|
|
394
|
+
meetingId: this.meeting.id,
|
|
395
|
+
},
|
|
396
|
+
});
|
|
345
397
|
if (reconnectError instanceof NeedsRejoinError) {
|
|
346
398
|
// send call aborded event with catogery as expected as we are trying to rejoin
|
|
347
399
|
|
|
@@ -369,6 +421,12 @@ export default class ReconnectionManager {
|
|
|
369
421
|
'ReconnectionManager:index#executeReconnection --> Attempting to reconnect to meeting.'
|
|
370
422
|
);
|
|
371
423
|
|
|
424
|
+
const wasSharing = this.meeting.shareStatus === SHARE_STATUS.LOCAL_SHARE_ACTIVE;
|
|
425
|
+
|
|
426
|
+
if (wasSharing) {
|
|
427
|
+
await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEDIA_RECONNECTION);
|
|
428
|
+
}
|
|
429
|
+
|
|
372
430
|
if (networkDisconnect) {
|
|
373
431
|
try {
|
|
374
432
|
await this.reconnectMercuryWebSocket();
|
|
@@ -385,29 +443,29 @@ export default class ReconnectionManager {
|
|
|
385
443
|
}
|
|
386
444
|
}
|
|
387
445
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
446
|
+
if (!this.webex.credentials.isUnverifiedGuest) {
|
|
447
|
+
try {
|
|
448
|
+
LoggerProxy.logger.info(
|
|
449
|
+
'ReconnectionManager:index#executeReconnection --> Updating meeting data from server.'
|
|
450
|
+
);
|
|
451
|
+
await this.webex.meetings.syncMeetings();
|
|
452
|
+
} catch (syncError) {
|
|
453
|
+
LoggerProxy.logger.info(
|
|
454
|
+
'ReconnectionManager:index#executeReconnection --> Unable to sync meetings, reconnecting.',
|
|
455
|
+
syncError
|
|
456
|
+
);
|
|
457
|
+
throw new NeedsRetryError(syncError);
|
|
458
|
+
}
|
|
401
459
|
}
|
|
402
460
|
|
|
403
461
|
// TODO: try to improve this logic as the reconnection manager saves the instance of deleted meeting object
|
|
404
462
|
// So that on rejoin it known what parametrs it was using
|
|
405
463
|
if (!this.meeting || !this.webex.meetings.getMeetingByType(_ID_, this.meeting.id)) {
|
|
406
464
|
LoggerProxy.logger.info(
|
|
407
|
-
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely
|
|
465
|
+
'ReconnectionManager:index#executeReconnection --> Meeting got deleted due to inactivity or ended remotely.'
|
|
408
466
|
);
|
|
409
467
|
|
|
410
|
-
throw new Error('Unable to rejoin a meeting already ended or inactive
|
|
468
|
+
throw new Error('Unable to rejoin a meeting already ended or inactive.');
|
|
411
469
|
}
|
|
412
470
|
|
|
413
471
|
LoggerProxy.logger.info(
|
|
@@ -454,32 +512,12 @@ export default class ReconnectionManager {
|
|
|
454
512
|
LoggerProxy.logger.info(
|
|
455
513
|
'ReconnectionManager:index#rejoinMeeting --> attemping meeting rejoin'
|
|
456
514
|
);
|
|
457
|
-
const previousCorrelationId = this.meeting.correlationId;
|
|
458
515
|
|
|
459
516
|
await this.meeting.join({rejoin: true});
|
|
460
517
|
LoggerProxy.logger.info('ReconnectionManager:index#rejoinMeeting --> meeting rejoined');
|
|
461
518
|
|
|
462
|
-
RoapCollection.deleteSession(previousCorrelationId);
|
|
463
|
-
|
|
464
519
|
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
|
-
);
|
|
520
|
+
await this.stopLocalShareStream(SHARE_STOPPED_REASON.MEETING_REJOIN);
|
|
483
521
|
}
|
|
484
522
|
} catch (joinError) {
|
|
485
523
|
this.rejoinAttempts += 1;
|
|
@@ -520,33 +558,35 @@ export default class ReconnectionManager {
|
|
|
520
558
|
* @private
|
|
521
559
|
* @memberof ReconnectionManager
|
|
522
560
|
*/
|
|
523
|
-
reconnectMedia() {
|
|
561
|
+
async reconnectMedia() {
|
|
524
562
|
LoggerProxy.logger.log(
|
|
525
563
|
'ReconnectionManager:index#reconnectMedia --> Begin reestablishment of media'
|
|
526
564
|
);
|
|
527
565
|
|
|
528
|
-
|
|
529
|
-
|
|
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
|
-
);
|
|
566
|
+
// do the TURN server discovery again and ignore reachability results since the TURN server might change
|
|
567
|
+
const turnServerResult = await this.meeting.roap.doTurnDiscovery(this.meeting, true, true);
|
|
542
568
|
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
569
|
+
const iceServers = [];
|
|
570
|
+
|
|
571
|
+
if (turnServerResult.turnServerInfo) {
|
|
572
|
+
iceServers.push({
|
|
573
|
+
urls: turnServerResult.turnServerInfo.url,
|
|
574
|
+
username: turnServerResult.turnServerInfo.username || '',
|
|
575
|
+
credential: turnServerResult.turnServerInfo.password || '',
|
|
549
576
|
});
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
await this.meeting.mediaProperties.webrtcMediaConnection.reconnect(iceServers);
|
|
580
|
+
|
|
581
|
+
// resend media requests
|
|
582
|
+
if (this.meeting.isMultistream) {
|
|
583
|
+
Object.values(this.meeting.mediaRequestManagers).forEach(
|
|
584
|
+
(mediaRequestManager: MediaRequestManager) => {
|
|
585
|
+
mediaRequestManager.clearPreviousRequests();
|
|
586
|
+
mediaRequestManager.commit();
|
|
587
|
+
}
|
|
588
|
+
);
|
|
589
|
+
}
|
|
550
590
|
}
|
|
551
591
|
|
|
552
592
|
/**
|
|
@@ -596,27 +636,4 @@ export default class ReconnectionManager {
|
|
|
596
636
|
throw connectError;
|
|
597
637
|
}
|
|
598
638
|
}
|
|
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
639
|
}
|
|
@@ -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();
|