@webex/plugin-meetings 3.0.0-beta.10 → 3.0.0-beta.104
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/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +176 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +919 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +5 -26
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +5 -26
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +6 -27
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +5 -26
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +5 -26
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +4 -25
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +5 -26
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +5 -26
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +6 -41
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +1 -24
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +35 -61
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +6 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +173 -52
- 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 +25 -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 +250 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +56 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +327 -211
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +0 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +88 -123
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +99 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +62 -147
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +71 -117
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +59 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2396 -2388
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +252 -113
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +318 -283
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +58 -217
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +3 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +10 -33
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +263 -282
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -16
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +155 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +24 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +675 -593
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +23 -42
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +177 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +80 -88
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +90 -69
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +12 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +162 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +58 -53
- 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 +107 -44
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +5 -14
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +3 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +61 -161
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +167 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +74 -93
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +55 -74
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +6 -40
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +466 -442
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +32 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +10 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +2 -33
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/index.js +190 -199
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +14 -23
- package/dist/reachability/request.js.map +1 -1
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +326 -465
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +38 -67
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +143 -134
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +149 -101
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +369 -461
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +144 -94
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +13 -45
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +34 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +2 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +69 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +78 -0
- package/dist/types/constants.d.ts +968 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +13 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +37 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +315 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +212 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +129 -0
- package/dist/types/meeting/index.d.ts +1748 -0
- package/dist/types/meeting/muteState.d.ts +185 -0
- package/dist/types/meeting/request.d.ts +275 -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 +2 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +112 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +31 -0
- package/dist/types/meetings/index.d.ts +345 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +156 -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 +69 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +172 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +152 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +88 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +28 -21
- package/src/annotation/annotation.types.ts +41 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +219 -0
- package/src/breakouts/breakout.ts +141 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +823 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/browser-detection.ts +9 -6
- package/src/common/collection.ts +3 -1
- package/src/common/errors/captcha-error.ts +6 -6
- package/src/common/errors/intent-to-join.ts +6 -6
- package/src/common/errors/join-meeting.ts +12 -8
- package/src/common/errors/media.ts +6 -6
- package/src/common/errors/parameter.ts +9 -6
- package/src/common/errors/password-error.ts +6 -6
- package/src/common/errors/permission.ts +5 -5
- package/src/common/errors/reconnection.ts +6 -6
- package/src/common/errors/stats.ts +6 -6
- package/src/common/errors/webex-errors.ts +7 -5
- package/src/common/errors/webex-meetings-error.ts +1 -1
- package/src/common/events/events-scope.ts +5 -1
- package/src/common/events/events.ts +5 -1
- package/src/common/events/trigger-proxy.ts +8 -3
- package/src/common/events/util.ts +1 -2
- package/src/common/logs/logger-proxy.ts +21 -10
- package/src/common/logs/request.ts +11 -8
- package/src/config.ts +16 -12
- package/src/constants.ts +119 -6
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +16 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +49 -0
- package/src/controls-options-manager/util.ts +229 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +91 -24
- package/src/locus-info/fullState.ts +15 -11
- package/src/locus-info/hostUtils.ts +4 -3
- package/src/locus-info/index.ts +270 -54
- package/src/locus-info/infoUtils.ts +12 -4
- package/src/locus-info/mediaSharesUtils.ts +4 -4
- package/src/locus-info/parser.ts +46 -68
- package/src/locus-info/selfUtils.ts +187 -56
- package/src/media/index.ts +142 -172
- package/src/media/properties.ts +43 -36
- package/src/media/util.ts +1 -1
- package/src/mediaQualityMetrics/config.ts +380 -378
- package/src/meeting/in-meeting-actions.ts +123 -3
- package/src/meeting/index.ts +2617 -1545
- package/src/meeting/muteState.ts +271 -68
- package/src/meeting/request.ts +251 -132
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/state.ts +45 -30
- package/src/meeting/util.ts +119 -110
- package/src/meeting-info/collection.ts +2 -1
- package/src/meeting-info/index.ts +32 -30
- package/src/meeting-info/meeting-info-v2.ts +181 -109
- package/src/meeting-info/request.ts +9 -3
- package/src/meeting-info/util.ts +54 -46
- package/src/meeting-info/utilv2.ts +70 -55
- package/src/meetings/collection.ts +21 -1
- package/src/meetings/index.ts +749 -437
- package/src/meetings/request.ts +29 -25
- package/src/meetings/util.ts +122 -33
- package/src/member/index.ts +86 -49
- package/src/member/types.ts +24 -0
- package/src/member/util.ts +92 -13
- package/src/members/collection.ts +8 -1
- package/src/members/index.ts +281 -129
- package/src/members/request.ts +87 -14
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +140 -49
- package/src/metrics/config.ts +256 -90
- package/src/metrics/constants.ts +1 -6
- package/src/metrics/index.ts +96 -96
- package/src/multistream/mediaRequestManager.ts +203 -45
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +62 -38
- package/src/multistream/remoteMedia.ts +30 -4
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +230 -66
- package/src/networkQualityMonitor/index.ts +24 -27
- package/src/personal-meeting-room/index.ts +12 -16
- package/src/personal-meeting-room/request.ts +10 -3
- package/src/personal-meeting-room/util.ts +3 -3
- package/src/reachability/index.ts +131 -79
- package/src/reachability/request.ts +43 -34
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/index.ts +193 -111
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/index.ts +63 -51
- package/src/roap/request.ts +86 -53
- package/src/roap/turnDiscovery.ts +105 -46
- package/src/statsAnalyzer/global.ts +8 -104
- package/src/statsAnalyzer/index.ts +624 -376
- package/src/statsAnalyzer/mqaUtil.ts +203 -90
- package/src/transcription/index.ts +34 -32
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +666 -464
- package/test/integration/spec/space-meeting.js +320 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +435 -0
- package/test/unit/spec/breakouts/breakout.ts +184 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +77 -0
- package/test/unit/spec/breakouts/index.ts +1504 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +403 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +177 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +493 -3
- package/test/unit/spec/locus-info/infoUtils.js +26 -33
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +236 -12
- package/test/unit/spec/media/index.ts +104 -8
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
- package/test/unit/spec/meeting/index.js +2649 -837
- package/test/unit/spec/meeting/muteState.js +368 -70
- package/test/unit/spec/meeting/request.js +217 -43
- package/test/unit/spec/meeting/utils.js +146 -165
- package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +15 -1
- package/test/unit/spec/meetings/index.js +1052 -329
- package/test/unit/spec/meetings/utils.js +163 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +359 -32
- package/test/unit/spec/members/index.js +402 -54
- package/test/unit/spec/members/request.js +76 -20
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +46 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
- package/test/unit/spec/multistream/receiveSlot.ts +76 -17
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +32 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +62 -31
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +21 -16
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +93 -49
- package/test/unit/spec/stats-analyzer/index.js +116 -60
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -334
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/index.js +0 -15
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting/effectsState.ts +0 -211
- package/src/multistream/multistreamMedia.ts +0 -92
- package/test/unit/spec/meeting/effectsState.js +0 -291
package/src/meetings/request.ts
CHANGED
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
3
3
|
|
|
4
4
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
5
|
-
import {
|
|
6
|
-
HTTP_VERBS,
|
|
7
|
-
API,
|
|
8
|
-
RESOURCE
|
|
9
|
-
} from '../constants';
|
|
5
|
+
import {HTTP_VERBS, API, RESOURCE} from '../constants';
|
|
10
6
|
|
|
11
7
|
/**
|
|
12
8
|
* @class MeetingRequest
|
|
@@ -15,16 +11,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
15
11
|
/**
|
|
16
12
|
* get all the active meetings for the user
|
|
17
13
|
* @returns {Array} return locus array
|
|
18
|
-
|
|
14
|
+
*/
|
|
19
15
|
getActiveMeetings() {
|
|
20
16
|
// @ts-ignore
|
|
21
17
|
return this.request({
|
|
22
18
|
api: API.LOCUS,
|
|
23
|
-
resource: RESOURCE.LOCI
|
|
19
|
+
resource: RESOURCE.LOCI,
|
|
24
20
|
})
|
|
25
21
|
.then((res) => this.determineRedirections(res.body))
|
|
26
22
|
.catch((error) => {
|
|
27
|
-
LoggerProxy.logger.error(
|
|
23
|
+
LoggerProxy.logger.error(
|
|
24
|
+
`Meetings:request#getActiveMeetings --> failed to get locus details, ${error}`
|
|
25
|
+
);
|
|
26
|
+
throw new Error(error);
|
|
28
27
|
});
|
|
29
28
|
}
|
|
30
29
|
|
|
@@ -40,13 +39,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
40
39
|
/**
|
|
41
40
|
* get user meeting preference information
|
|
42
41
|
* @returns {Promise<object>} getMeetingPreferences
|
|
43
|
-
|
|
42
|
+
*/
|
|
44
43
|
getMeetingPreferences() {
|
|
45
44
|
// @ts-ignore
|
|
46
45
|
return this.webex.internal.services.getMeetingPreferences();
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
|
|
50
48
|
// locus federation, determines and populate locus if the responseBody has remote URLs to fetch locus details
|
|
51
49
|
|
|
52
50
|
/**
|
|
@@ -56,22 +54,28 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
56
54
|
*/
|
|
57
55
|
determineRedirections(responseBody: any) {
|
|
58
56
|
if (responseBody.remoteLocusClusterUrls && responseBody.remoteLocusClusterUrls.length) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
57
|
+
return Promise.all(
|
|
58
|
+
responseBody.remoteLocusClusterUrls.map((url) =>
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
this.request({
|
|
61
|
+
method: HTTP_VERBS.GET,
|
|
62
|
+
url,
|
|
63
|
+
runWhitelistedDomains: true, // allows auth token for whitelisted domain
|
|
64
|
+
})
|
|
65
|
+
.then((res) => {
|
|
66
|
+
responseBody.loci = responseBody.loci.concat(res.body.loci);
|
|
67
|
+
responseBody.locusUrls = responseBody.locusUrls.concat(res.body.locusUrls);
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
return Promise.resolve(responseBody);
|
|
70
|
+
})
|
|
71
|
+
.catch((error) => {
|
|
72
|
+
LoggerProxy.logger.error(
|
|
73
|
+
`Meetings:request#determineRedirections --> failed to get locus details from url: ${url}, reason: ${error}`
|
|
74
|
+
);
|
|
75
|
+
throw new Error(error);
|
|
76
|
+
})
|
|
77
|
+
)
|
|
78
|
+
).then(() => Promise.resolve(responseBody));
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
return Promise.resolve(responseBody);
|
package/src/meetings/util.ts
CHANGED
|
@@ -1,34 +1,39 @@
|
|
|
1
1
|
/* globals window */
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
_LOCUS_ID_,
|
|
5
|
-
_INCOMING_,
|
|
6
4
|
_CREATED_,
|
|
7
|
-
|
|
5
|
+
_INCOMING_,
|
|
6
|
+
_JOINED_,
|
|
7
|
+
_LEFT_,
|
|
8
|
+
_LOCUS_ID_,
|
|
9
|
+
_MOVED_,
|
|
10
|
+
BREAKOUTS,
|
|
8
11
|
CORRELATION_ID,
|
|
9
12
|
EVENT_TRIGGERS,
|
|
10
|
-
|
|
13
|
+
LOCUS,
|
|
14
|
+
LOCUSEVENT,
|
|
15
|
+
ROAP,
|
|
11
16
|
} from '../constants';
|
|
12
17
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
13
18
|
import Trigger from '../common/events/trigger-proxy';
|
|
14
19
|
|
|
15
20
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
* Meetings Media Codec Missing Event
|
|
22
|
+
* Emitted when H.264 codec is not
|
|
23
|
+
* found in the browser.
|
|
24
|
+
* @event media:codec:missing
|
|
25
|
+
* @instance
|
|
26
|
+
* @memberof MeetingsUtil
|
|
27
|
+
*/
|
|
23
28
|
|
|
24
29
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
* Meetings Media Codec Loaded Event
|
|
31
|
+
* Emitted when H.264 codec has been
|
|
32
|
+
* loaded in the browser.
|
|
33
|
+
* @event media:codec:loaded
|
|
34
|
+
* @instance
|
|
35
|
+
* @memberof MeetingsUtil
|
|
36
|
+
*/
|
|
32
37
|
|
|
33
38
|
const MeetingsUtil: any = {};
|
|
34
39
|
|
|
@@ -42,31 +47,52 @@ MeetingsUtil.handleRoapMercury = (envelope, meetingCollection) => {
|
|
|
42
47
|
const meeting = meetingCollection.getByKey(CORRELATION_ID, data.correlationId);
|
|
43
48
|
|
|
44
49
|
if (meeting) {
|
|
45
|
-
const {
|
|
46
|
-
seq, messageType, tieBreaker, errorType, errorCause
|
|
47
|
-
} = data.message;
|
|
50
|
+
const {seq, messageType, tieBreaker, errorType, errorCause} = data.message;
|
|
48
51
|
|
|
49
52
|
if (messageType === ROAP.ROAP_TYPES.TURN_DISCOVERY_RESPONSE) {
|
|
50
53
|
// turn discovery is not part of normal roap protocol and so we are not handling it
|
|
51
54
|
// through the usual roap state machine
|
|
52
55
|
meeting.roap.turnDiscovery.handleTurnDiscoveryResponse(data.message);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
56
|
+
} else {
|
|
55
57
|
const roapMessage = {
|
|
56
58
|
seq,
|
|
57
59
|
messageType,
|
|
58
60
|
sdp: data.message.sdps?.length > 0 ? data.message.sdps[0] : undefined,
|
|
59
61
|
tieBreaker,
|
|
60
62
|
errorType,
|
|
61
|
-
errorCause
|
|
63
|
+
errorCause,
|
|
62
64
|
};
|
|
63
65
|
|
|
66
|
+
const mediaServer = MeetingsUtil.getMediaServer(roapMessage.sdp);
|
|
67
|
+
|
|
64
68
|
meeting.mediaProperties.webrtcMediaConnection.roapMessageReceived(roapMessage);
|
|
69
|
+
|
|
70
|
+
if (mediaServer) {
|
|
71
|
+
meeting.mediaProperties.webrtcMediaConnection.mediaServer = mediaServer;
|
|
72
|
+
}
|
|
65
73
|
}
|
|
66
74
|
}
|
|
67
75
|
}
|
|
68
76
|
};
|
|
69
77
|
|
|
78
|
+
MeetingsUtil.getMediaServer = (sdp) => {
|
|
79
|
+
let mediaServer;
|
|
80
|
+
|
|
81
|
+
// Attempt to collect the media server from the roap message.
|
|
82
|
+
try {
|
|
83
|
+
mediaServer = sdp
|
|
84
|
+
.split('\r\n')
|
|
85
|
+
.find((line) => line.startsWith('o='))
|
|
86
|
+
.split(' ')
|
|
87
|
+
.shift()
|
|
88
|
+
.replace('o=', '');
|
|
89
|
+
} catch {
|
|
90
|
+
mediaServer = undefined;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return mediaServer;
|
|
94
|
+
};
|
|
95
|
+
|
|
70
96
|
MeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {
|
|
71
97
|
let devices = [];
|
|
72
98
|
|
|
@@ -88,11 +114,13 @@ MeetingsUtil.checkForCorrelationId = (deviceUrl, locus) => {
|
|
|
88
114
|
MeetingsUtil.parseDefaultSiteFromMeetingPreferences = (userPreferences) => {
|
|
89
115
|
let result = '';
|
|
90
116
|
|
|
91
|
-
if (userPreferences
|
|
117
|
+
if (userPreferences?.sites?.length) {
|
|
92
118
|
const defaultSite = userPreferences.sites.find((site) => site.default);
|
|
93
119
|
|
|
94
120
|
if (defaultSite) {
|
|
95
121
|
result = defaultSite.siteUrl;
|
|
122
|
+
} else {
|
|
123
|
+
result = userPreferences.sites[0].siteUrl;
|
|
96
124
|
}
|
|
97
125
|
}
|
|
98
126
|
|
|
@@ -116,9 +144,10 @@ MeetingsUtil.hasH264Codec = async () => {
|
|
|
116
144
|
hasCodec = true;
|
|
117
145
|
}
|
|
118
146
|
pc.close();
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
147
|
+
} catch (error) {
|
|
148
|
+
LoggerProxy.logger.warn(
|
|
149
|
+
'Meetings:util#hasH264Codec --> Error creating peerConnection for H.264 test.'
|
|
150
|
+
);
|
|
122
151
|
}
|
|
123
152
|
|
|
124
153
|
return hasCodec;
|
|
@@ -143,8 +172,8 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
|
143
172
|
const {firstChecked, disableNotifications} = options || {};
|
|
144
173
|
const delay = 5e3; // ms
|
|
145
174
|
const maxDuration = 3e5; // ms
|
|
146
|
-
const shouldTrigger =
|
|
147
|
-
const shouldStopChecking = firstChecked &&
|
|
175
|
+
const shouldTrigger = firstChecked === undefined;
|
|
176
|
+
const shouldStopChecking = firstChecked && Date.now() - firstChecked >= maxDuration;
|
|
148
177
|
|
|
149
178
|
// Disable notifications and start H.264 download only
|
|
150
179
|
if (disableNotifications) {
|
|
@@ -159,7 +188,7 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
|
159
188
|
this,
|
|
160
189
|
{
|
|
161
190
|
file: 'meetings/util',
|
|
162
|
-
function: 'checkH264Support'
|
|
191
|
+
function: 'checkH264Support',
|
|
163
192
|
},
|
|
164
193
|
EVENT_TRIGGERS.MEDIA_CODEC_LOADED
|
|
165
194
|
);
|
|
@@ -170,7 +199,9 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
|
170
199
|
|
|
171
200
|
// Stop checking if past the timelimit
|
|
172
201
|
if (shouldStopChecking) {
|
|
173
|
-
LoggerProxy.logger.error(
|
|
202
|
+
LoggerProxy.logger.error(
|
|
203
|
+
'Meetings:util#checkH264Support --> Timed out waiting for H264 codec to load.'
|
|
204
|
+
);
|
|
174
205
|
|
|
175
206
|
return;
|
|
176
207
|
}
|
|
@@ -181,7 +212,7 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
|
181
212
|
this,
|
|
182
213
|
{
|
|
183
214
|
file: 'meetings/util',
|
|
184
|
-
function: 'checkH264Support'
|
|
215
|
+
function: 'checkH264Support',
|
|
185
216
|
},
|
|
186
217
|
EVENT_TRIGGERS.MEDIA_CODEC_MISSING
|
|
187
218
|
);
|
|
@@ -196,4 +227,62 @@ MeetingsUtil.checkH264Support = async function checkH264Support(options: {
|
|
|
196
227
|
}, delay);
|
|
197
228
|
};
|
|
198
229
|
|
|
230
|
+
/**
|
|
231
|
+
* get device from locus data
|
|
232
|
+
* @param {Object} newLocus new locus data
|
|
233
|
+
* @param {String} deviceUrl current device url
|
|
234
|
+
* @returns {Object}
|
|
235
|
+
*/
|
|
236
|
+
MeetingsUtil.getThisDevice = (newLocus: any, deviceUrl: string) => {
|
|
237
|
+
if (newLocus?.self?.devices?.length > 0) {
|
|
238
|
+
return newLocus.self.devices.find((device) => device.url === deviceUrl);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return null;
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* get self device joined status from locus data
|
|
246
|
+
* @param {Object} meeting current meeting data
|
|
247
|
+
* @param {Object} newLocus new locus data
|
|
248
|
+
* @param {String} deviceUrl current device url
|
|
249
|
+
* @returns {Object}
|
|
250
|
+
*/
|
|
251
|
+
MeetingsUtil.joinedOnThisDevice = (meeting: any, newLocus: any, deviceUrl: string) => {
|
|
252
|
+
const thisDevice = MeetingsUtil.getThisDevice(newLocus, deviceUrl);
|
|
253
|
+
if (thisDevice) {
|
|
254
|
+
if (!thisDevice.correlationId || meeting?.correlationId === thisDevice.correlationId) {
|
|
255
|
+
return (
|
|
256
|
+
thisDevice.state === _JOINED_ ||
|
|
257
|
+
(thisDevice.state === _LEFT_ && thisDevice.reason === _MOVED_)
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return false;
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* check the new locus is breakout session's one or not
|
|
267
|
+
* @param {Object} newLocus new locus data
|
|
268
|
+
* @returns {boolean}
|
|
269
|
+
* @private
|
|
270
|
+
*/
|
|
271
|
+
MeetingsUtil.isBreakoutLocusDTO = (newLocus: any) => {
|
|
272
|
+
return newLocus?.controls?.breakout?.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT;
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* check the locus is valid breakout locus or not
|
|
277
|
+
* @param {Object} locus
|
|
278
|
+
* @returns {boolean}
|
|
279
|
+
* @private
|
|
280
|
+
*/
|
|
281
|
+
MeetingsUtil.isValidBreakoutLocus = (locus: any) => {
|
|
282
|
+
const inActiveStatus = locus?.fullState?.state === LOCUS.STATE.INACTIVE;
|
|
283
|
+
const isLocusAsBreakout = MeetingsUtil.isBreakoutLocusDTO(locus);
|
|
284
|
+
const selfJoined = locus.self?.state === _JOINED_;
|
|
285
|
+
|
|
286
|
+
return isLocusAsBreakout && !inActiveStatus && selfJoined;
|
|
287
|
+
};
|
|
199
288
|
export default MeetingsUtil;
|
package/src/member/index.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
_IN_LOBBY_,
|
|
7
|
-
_NOT_IN_MEETING_,
|
|
8
|
-
_IN_MEETING_
|
|
9
|
-
} from '../constants';
|
|
4
|
+
import {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_} from '../constants';
|
|
5
|
+
import {IExternalRoles, ParticipantWithRoles} from './types';
|
|
10
6
|
|
|
11
7
|
import MemberUtil from './util';
|
|
12
8
|
|
|
@@ -33,9 +29,11 @@ export default class Member {
|
|
|
33
29
|
isSelf: any;
|
|
34
30
|
isUser: any;
|
|
35
31
|
isVideoMuted: any;
|
|
32
|
+
roles: IExternalRoles;
|
|
36
33
|
name: any;
|
|
37
34
|
participant: any;
|
|
38
35
|
status: any;
|
|
36
|
+
supportsBreakouts: boolean;
|
|
39
37
|
type: any;
|
|
40
38
|
namespace = MEETINGS;
|
|
41
39
|
|
|
@@ -51,20 +49,22 @@ export default class Member {
|
|
|
51
49
|
*/
|
|
52
50
|
constructor(
|
|
53
51
|
participant: object,
|
|
54
|
-
options:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
options:
|
|
53
|
+
| {
|
|
54
|
+
selfId: string;
|
|
55
|
+
hostId: string;
|
|
56
|
+
contentSharingId: string;
|
|
57
|
+
type: string;
|
|
58
|
+
}
|
|
59
|
+
| any = {}
|
|
60
60
|
) {
|
|
61
|
-
|
|
61
|
+
/**
|
|
62
62
|
* The server participant object
|
|
63
63
|
* @instance
|
|
64
64
|
* @type {Object}
|
|
65
65
|
* @private
|
|
66
66
|
* @memberof Member
|
|
67
|
-
|
|
67
|
+
*/
|
|
68
68
|
this.participant = null;
|
|
69
69
|
/**
|
|
70
70
|
* The member id
|
|
@@ -72,7 +72,7 @@ export default class Member {
|
|
|
72
72
|
* @type {String}
|
|
73
73
|
* @public
|
|
74
74
|
* @memberof Member
|
|
75
|
-
|
|
75
|
+
*/
|
|
76
76
|
this.id = null;
|
|
77
77
|
/**
|
|
78
78
|
* The member name
|
|
@@ -80,34 +80,41 @@ export default class Member {
|
|
|
80
80
|
* @type {String}
|
|
81
81
|
* @public
|
|
82
82
|
* @memberof Member
|
|
83
|
-
|
|
83
|
+
*/
|
|
84
84
|
this.name = null;
|
|
85
85
|
/**
|
|
86
86
|
* @instance
|
|
87
87
|
* @type {Boolean}
|
|
88
88
|
* @public
|
|
89
89
|
* @memberof Member
|
|
90
|
-
|
|
90
|
+
*/
|
|
91
91
|
this.isAudioMuted = null;
|
|
92
92
|
/**
|
|
93
93
|
* @instance
|
|
94
94
|
* @type {Boolean}
|
|
95
95
|
* @public
|
|
96
96
|
* @memberof Member
|
|
97
|
-
|
|
97
|
+
*/
|
|
98
98
|
this.isVideoMuted = null;
|
|
99
99
|
/**
|
|
100
100
|
* @instance
|
|
101
101
|
* @type {Boolean}
|
|
102
102
|
* @public
|
|
103
103
|
* @memberof Member
|
|
104
|
-
|
|
104
|
+
*/
|
|
105
105
|
this.isHandRaised = null;
|
|
106
106
|
/**
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
* @instance
|
|
108
|
+
* @type {Boolean}
|
|
109
|
+
* @public
|
|
110
|
+
* @memberof Member
|
|
111
|
+
*/
|
|
112
|
+
this.supportsBreakouts = null;
|
|
113
|
+
/**
|
|
114
|
+
* @instance
|
|
115
|
+
* @type {Boolean}
|
|
116
|
+
* @public
|
|
117
|
+
* @memberof Member
|
|
111
118
|
*/
|
|
112
119
|
this.isSelf = null;
|
|
113
120
|
/**
|
|
@@ -115,114 +122,122 @@ export default class Member {
|
|
|
115
122
|
* @type {Boolean}
|
|
116
123
|
* @public
|
|
117
124
|
* @memberof Member
|
|
118
|
-
|
|
125
|
+
*/
|
|
119
126
|
this.isHost = null;
|
|
120
127
|
/**
|
|
121
128
|
* @instance
|
|
122
129
|
* @type {Boolean}
|
|
123
130
|
* @public
|
|
124
131
|
* @memberof Member
|
|
125
|
-
|
|
132
|
+
*/
|
|
126
133
|
this.isGuest = null;
|
|
127
134
|
/**
|
|
128
135
|
* @instance
|
|
129
136
|
* @type {Boolean}
|
|
130
137
|
* @public
|
|
131
138
|
* @memberof Member
|
|
132
|
-
|
|
139
|
+
*/
|
|
133
140
|
this.isInLobby = null;
|
|
134
141
|
/**
|
|
135
142
|
* @instance
|
|
136
143
|
* @type {Boolean}
|
|
137
144
|
* @public
|
|
138
145
|
* @memberof Member
|
|
139
|
-
|
|
146
|
+
*/
|
|
140
147
|
this.isInMeeting = null;
|
|
141
148
|
/**
|
|
142
149
|
* @instance
|
|
143
150
|
* @type {Boolean}
|
|
144
151
|
* @public
|
|
145
152
|
* @memberof Member
|
|
146
|
-
|
|
153
|
+
*/
|
|
147
154
|
this.isNotAdmitted = null;
|
|
148
155
|
/**
|
|
149
156
|
* @instance
|
|
150
157
|
* @type {Boolean}
|
|
151
158
|
* @public
|
|
152
159
|
* @memberof Member
|
|
153
|
-
|
|
160
|
+
*/
|
|
154
161
|
this.isContentSharing = null;
|
|
155
162
|
/**
|
|
156
163
|
* @instance
|
|
157
164
|
* @type {Boolean}
|
|
158
165
|
* @public
|
|
159
166
|
* @memberof Member
|
|
160
|
-
|
|
167
|
+
*/
|
|
161
168
|
this.status = null;
|
|
162
169
|
/**
|
|
163
170
|
* @instance
|
|
164
171
|
* @type {Boolean}
|
|
165
172
|
* @public
|
|
166
173
|
* @memberof Member
|
|
167
|
-
|
|
174
|
+
*/
|
|
168
175
|
this.isDevice = null;
|
|
169
176
|
/**
|
|
170
177
|
* @instance
|
|
171
178
|
* @type {Boolean}
|
|
172
179
|
* @public
|
|
173
180
|
* @memberof Member
|
|
174
|
-
|
|
181
|
+
*/
|
|
175
182
|
this.isUser = null;
|
|
176
183
|
/**
|
|
177
|
-
|
|
184
|
+
* Is this member associated to another user by way of pairing (typical of devices)
|
|
178
185
|
* @instance
|
|
179
186
|
* @type {String}
|
|
180
187
|
* @public
|
|
181
188
|
* @memberof Member
|
|
182
|
-
|
|
189
|
+
*/
|
|
183
190
|
this.associatedUser = null;
|
|
184
191
|
/**
|
|
185
192
|
* @instance
|
|
186
193
|
* @type {Boolean}
|
|
187
194
|
* @public
|
|
188
195
|
* @memberof Member
|
|
189
|
-
|
|
196
|
+
*/
|
|
190
197
|
this.isRecording = null;
|
|
191
198
|
/**
|
|
192
199
|
* @instance
|
|
193
200
|
* @type {Boolean}
|
|
194
201
|
* @public
|
|
195
202
|
* @memberof Member
|
|
196
|
-
|
|
203
|
+
*/
|
|
197
204
|
this.isMutable = null;
|
|
198
205
|
/**
|
|
199
206
|
* @instance
|
|
200
207
|
* @type {Boolean}
|
|
201
208
|
* @public
|
|
202
209
|
* @memberof Member
|
|
203
|
-
|
|
210
|
+
*/
|
|
204
211
|
this.isRemovable = null;
|
|
205
212
|
/**
|
|
206
213
|
* @instance
|
|
207
214
|
* @type {String}
|
|
208
215
|
* @private
|
|
209
216
|
* @memberof Member
|
|
210
|
-
|
|
217
|
+
*/
|
|
211
218
|
this.type = null;
|
|
212
219
|
/**
|
|
213
220
|
* @instance
|
|
214
221
|
* @type {Boolean}
|
|
215
222
|
* @public
|
|
216
223
|
* @memberof Member
|
|
217
|
-
|
|
224
|
+
*/
|
|
218
225
|
this.isModerator = null;
|
|
219
226
|
/**
|
|
220
227
|
* @instance
|
|
221
228
|
* @type {Boolean}
|
|
222
229
|
* @public
|
|
223
230
|
* @memberof Member
|
|
224
|
-
|
|
231
|
+
*/
|
|
225
232
|
this.isModeratorAssignmentProhibited = null;
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* @instance
|
|
236
|
+
* @type {IExternalRoles}
|
|
237
|
+
* @public
|
|
238
|
+
* @memberof Member
|
|
239
|
+
*/
|
|
240
|
+
this.roles = null;
|
|
226
241
|
// TODO: more participant types
|
|
227
242
|
// such as native client, web client, is a device, what type of phone, etc
|
|
228
243
|
this.processParticipant(participant);
|
|
@@ -245,12 +260,15 @@ export default class Member {
|
|
|
245
260
|
this.isAudioMuted = MemberUtil.isAudioMuted(participant);
|
|
246
261
|
this.isVideoMuted = MemberUtil.isVideoMuted(participant);
|
|
247
262
|
this.isHandRaised = MemberUtil.isHandRaised(participant);
|
|
263
|
+
this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);
|
|
248
264
|
this.isGuest = MemberUtil.isGuest(participant);
|
|
249
265
|
this.isUser = MemberUtil.isUser(participant);
|
|
250
266
|
this.isDevice = MemberUtil.isDevice(participant);
|
|
251
267
|
this.isModerator = MemberUtil.isModerator(participant);
|
|
252
|
-
this.isModeratorAssignmentProhibited =
|
|
268
|
+
this.isModeratorAssignmentProhibited =
|
|
269
|
+
MemberUtil.isModeratorAssignmentProhibited(participant);
|
|
253
270
|
this.processStatus(participant);
|
|
271
|
+
this.processRoles(participant as ParticipantWithRoles);
|
|
254
272
|
// must be done last
|
|
255
273
|
this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);
|
|
256
274
|
}
|
|
@@ -282,9 +300,20 @@ export default class Member {
|
|
|
282
300
|
*/
|
|
283
301
|
private processMember() {
|
|
284
302
|
// must occur after self, guest, meeting, and type properties are calculated
|
|
285
|
-
this.isRemovable = MemberUtil.isRemovable(
|
|
303
|
+
this.isRemovable = MemberUtil.isRemovable(
|
|
304
|
+
this.isSelf,
|
|
305
|
+
this.isGuest,
|
|
306
|
+
this.isInMeeting,
|
|
307
|
+
this.type
|
|
308
|
+
);
|
|
286
309
|
// must occur after self, device, meeting, mute status, and type properties are calculated
|
|
287
|
-
this.isMutable = MemberUtil.isMutable(
|
|
310
|
+
this.isMutable = MemberUtil.isMutable(
|
|
311
|
+
this.isSelf,
|
|
312
|
+
this.isDevice,
|
|
313
|
+
this.isInMeeting,
|
|
314
|
+
this.isAudioMuted,
|
|
315
|
+
this.type
|
|
316
|
+
);
|
|
288
317
|
}
|
|
289
318
|
|
|
290
319
|
/**
|
|
@@ -359,8 +388,7 @@ export default class Member {
|
|
|
359
388
|
public processIsContentSharing(participant: object, sharingId: string) {
|
|
360
389
|
if (MemberUtil.isUser(participant)) {
|
|
361
390
|
this.isContentSharing = MemberUtil.isSame(participant, sharingId);
|
|
362
|
-
}
|
|
363
|
-
else if (MemberUtil.isDevice(participant)) {
|
|
391
|
+
} else if (MemberUtil.isDevice(participant)) {
|
|
364
392
|
this.isContentSharing = MemberUtil.isAssociatedSame(participant, sharingId);
|
|
365
393
|
}
|
|
366
394
|
}
|
|
@@ -388,8 +416,7 @@ export default class Member {
|
|
|
388
416
|
private processIsSelf(participant: object, selfId: string) {
|
|
389
417
|
if (MemberUtil.isUser(participant)) {
|
|
390
418
|
this.isSelf = MemberUtil.isSame(participant, selfId);
|
|
391
|
-
}
|
|
392
|
-
else if (MemberUtil.isDevice(participant)) {
|
|
419
|
+
} else if (MemberUtil.isDevice(participant)) {
|
|
393
420
|
this.isSelf = MemberUtil.isAssociatedSame(participant, selfId);
|
|
394
421
|
this.associatedUser = selfId;
|
|
395
422
|
}
|
|
@@ -406,12 +433,22 @@ export default class Member {
|
|
|
406
433
|
private processIsHost(participant: object, hostId: string) {
|
|
407
434
|
if (MemberUtil.isUser(participant)) {
|
|
408
435
|
this.isHost = MemberUtil.isSame(participant, hostId);
|
|
409
|
-
}
|
|
410
|
-
else if (MemberUtil.isDevice(participant)) {
|
|
436
|
+
} else if (MemberUtil.isDevice(participant)) {
|
|
411
437
|
this.isHost = MemberUtil.isAssociatedSame(participant, hostId);
|
|
412
438
|
}
|
|
413
439
|
}
|
|
414
440
|
|
|
441
|
+
/**
|
|
442
|
+
* process the roles that have been applied to this member
|
|
443
|
+
* @param {Object} participant
|
|
444
|
+
* @returns {undefined}
|
|
445
|
+
* @private
|
|
446
|
+
* @memberof Member
|
|
447
|
+
*/
|
|
448
|
+
private processRoles(participant: ParticipantWithRoles) {
|
|
449
|
+
this.roles = MemberUtil.extractControlRoles(participant);
|
|
450
|
+
}
|
|
451
|
+
|
|
415
452
|
/**
|
|
416
453
|
* set the type for the member, could be MEETING or CALL
|
|
417
454
|
* @param {String} type
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface IExternalRoles {
|
|
2
|
+
cohost: boolean;
|
|
3
|
+
moderator: boolean;
|
|
4
|
+
presenter: boolean;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export enum ServerRoles {
|
|
8
|
+
Cohost = 'COHOST',
|
|
9
|
+
Moderator = 'MODERATOR',
|
|
10
|
+
Presenter = 'PRESENTER',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type ServerRoleShape = {
|
|
14
|
+
type: ServerRoles;
|
|
15
|
+
hasRole: boolean;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export type ParticipantWithRoles = {
|
|
19
|
+
controls: {
|
|
20
|
+
role: {
|
|
21
|
+
roles: Array<ServerRoleShape>;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
};
|