@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.20
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/breakouts/breakout.js +116 -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/index.js +226 -0
- package/dist/breakouts/index.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 +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- 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 +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- 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 +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- 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 +5 -25
- 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 +37 -60
- 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 +88 -46
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +12 -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 +184 -190
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- 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 +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +34 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +67 -111
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +80 -114
- 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 +10 -12
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/effectsState.js +125 -190
- package/dist/meeting/effectsState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +5 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1692 -1925
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +36 -77
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +224 -230
- 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 +43 -215
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +193 -268
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- 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 +137 -228
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +5 -20
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +490 -560
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +24 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +99 -155
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +78 -86
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +31 -68
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +3 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +93 -200
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +16 -39
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +9 -38
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +0 -2
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +1 -2
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +55 -135
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +57 -32
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/multistreamMedia.js +15 -21
- package/dist/multistream/multistreamMedia.js.map +1 -1
- package/dist/multistream/receiveSlot.js +10 -50
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +45 -82
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +18 -58
- 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 +362 -416
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +36 -57
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- 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 +138 -182
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +3 -18
- 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 +322 -455
- 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 +39 -64
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +94 -113
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +85 -94
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +0 -2
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +85 -175
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +72 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/internal-README.md +7 -6
- package/package.json +25 -20
- package/src/breakouts/README.md +190 -0
- package/src/breakouts/breakout.ts +110 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/index.ts +225 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +17 -12
- package/src/constants.ts +40 -1
- package/src/index.js +1 -1
- package/src/locus-info/controlsUtils.ts +114 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +148 -64
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
- package/src/media/{index.js → index.ts} +181 -131
- package/src/media/{properties.js → properties.ts} +47 -28
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
- package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
- package/src/meeting/in-meeting-actions.ts +15 -3
- package/src/meeting/{index.js → index.ts} +2263 -1427
- package/src/meeting/{muteState.js → muteState.ts} +78 -42
- package/src/meeting/{request.js → request.ts} +292 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +112 -115
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +273 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
- package/src/meetings/{collection.js → collection.ts} +6 -3
- package/src/meetings/index.ts +1159 -0
- package/src/meetings/{request.js → request.ts} +32 -25
- package/src/meetings/{util.js → util.ts} +34 -32
- package/src/member/{index.js → index.ts} +102 -56
- package/src/member/{util.js → util.ts} +52 -25
- package/src/members/{collection.js → collection.ts} +2 -2
- package/src/members/{index.js → index.ts} +219 -142
- package/src/members/{request.js → request.ts} +60 -16
- package/src/members/{util.js → util.ts} +50 -48
- package/src/metrics/{config.js → config.ts} +254 -83
- package/src/metrics/{constants.js → constants.ts} +0 -2
- package/src/metrics/{index.js → index.ts} +106 -74
- package/src/multistream/mediaRequestManager.ts +81 -15
- package/src/multistream/multistreamMedia.ts +5 -0
- package/src/multistream/receiveSlot.ts +18 -12
- package/src/multistream/receiveSlotManager.ts +23 -21
- package/src/multistream/remoteMedia.ts +15 -5
- package/src/multistream/remoteMediaGroup.ts +4 -3
- package/src/multistream/remoteMediaManager.ts +153 -37
- package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/{index.js → index.ts} +99 -83
- package/src/reachability/request.ts +39 -33
- 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.js → index.ts} +195 -102
- 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.js → index.ts} +73 -56
- package/src/roap/request.ts +157 -0
- package/src/roap/turnDiscovery.ts +77 -37
- package/src/statsAnalyzer/{global.js → global.ts} +30 -33
- package/src/statsAnalyzer/{index.js → index.ts} +468 -192
- package/src/statsAnalyzer/mqaUtil.ts +290 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/journey.js +664 -463
- package/test/integration/spec/space-meeting.js +320 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/breakouts/breakout.ts +119 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/index.ts +293 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +25 -5
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +104 -2
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- 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 +97 -103
- package/test/unit/spec/locus-info/selfUtils.js +105 -12
- package/test/unit/spec/media/index.ts +31 -47
- package/test/unit/spec/media/properties.ts +9 -9
- package/test/unit/spec/meeting/effectsState.js +39 -45
- package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
- package/test/unit/spec/meeting/index.js +2017 -742
- package/test/unit/spec/meeting/muteState.js +42 -33
- package/test/unit/spec/meeting/request.js +115 -44
- package/test/unit/spec/meeting/utils.js +104 -171
- package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
- 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 +110 -74
- package/test/unit/spec/meetings/collection.js +1 -1
- package/test/unit/spec/meetings/index.js +439 -257
- package/test/unit/spec/meetings/utils.js +14 -12
- package/test/unit/spec/member/index.js +0 -1
- package/test/unit/spec/member/util.js +31 -7
- package/test/unit/spec/members/index.js +104 -54
- package/test/unit/spec/members/request.js +29 -20
- package/test/unit/spec/members/utils.js +8 -5
- package/test/unit/spec/metrics/index.js +16 -21
- package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
- package/test/unit/spec/multistream/receiveSlot.ts +6 -6
- package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
- package/test/unit/spec/multistream/remoteMedia.ts +10 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
- package/test/unit/spec/networkQualityMonitor/index.js +21 -15
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/index.ts +58 -26
- package/test/unit/spec/reconnection-manager/index.js +102 -9
- 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 +2 -1
- package/test/unit/spec/roap/request.ts +114 -0
- package/test/unit/spec/roap/turnDiscovery.ts +64 -45
- package/test/unit/spec/stats-analyzer/index.js +27 -22
- package/test/utils/cmr.js +44 -42
- package/test/utils/testUtils.js +83 -74
- package/test/utils/webex-config.js +18 -18
- package/test/utils/webex-test-users.js +54 -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/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -1015
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
3
|
*/
|
|
4
4
|
import {isEmpty} from 'lodash';
|
|
5
|
+
// @ts-ignore
|
|
5
6
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
6
7
|
|
|
7
8
|
import {MEETINGS, EVENT_TRIGGERS, FLOOR_ACTION, CONTENT, WHITEBOARD} from '../constants';
|
|
@@ -13,53 +14,71 @@ import ParameterError from '../common/errors/parameter';
|
|
|
13
14
|
import MembersCollection from './collection';
|
|
14
15
|
import MembersRequest from './request';
|
|
15
16
|
import MembersUtil from './util';
|
|
17
|
+
import {ReceiveSlotManager} from '../multistream/receiveSlotManager';
|
|
18
|
+
import {MediaRequestManager} from '../multistream/mediaRequestManager';
|
|
16
19
|
|
|
17
20
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
* Members Update Event
|
|
22
|
+
* Emitted when something in the roster list needs to be updated
|
|
23
|
+
* @event members:update
|
|
24
|
+
* @instance
|
|
25
|
+
* @property {Object} delta the changes to the members list
|
|
26
|
+
* @property {Array} delta.updated array only the updates, includes removals, as they will have updated status and member properties
|
|
27
|
+
* @property {Array} delta.added array added members to the meeting
|
|
28
|
+
* @property {Array} full array the full members collection
|
|
29
|
+
* @memberof Members
|
|
30
|
+
*/
|
|
28
31
|
|
|
29
32
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
* Members Content Update Event
|
|
34
|
+
* Emitted when who is sharing changes
|
|
35
|
+
* @event members:content:update
|
|
36
|
+
* @instance
|
|
37
|
+
* @property {String} activeContentSharingId
|
|
38
|
+
* @property {String} endedContentSharingId
|
|
39
|
+
* @memberof Members
|
|
40
|
+
*/
|
|
38
41
|
|
|
39
42
|
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
* Members Host Update Event
|
|
44
|
+
* Emitted when who is the host changes
|
|
45
|
+
* @event members:host:update
|
|
46
|
+
* @instance
|
|
47
|
+
* @property {String} activeHostId
|
|
48
|
+
* @property {String} endedHostId
|
|
49
|
+
* @memberof Members
|
|
50
|
+
*/
|
|
48
51
|
|
|
49
52
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
* Members Self Update Event
|
|
54
|
+
* Emitted when who is the self changes
|
|
55
|
+
* @event members:self:update
|
|
56
|
+
* @instance
|
|
57
|
+
* @property {String} activeSelfId
|
|
58
|
+
* @property {String} endedSelfId
|
|
59
|
+
* @memberof Members
|
|
60
|
+
*/
|
|
58
61
|
|
|
59
62
|
/**
|
|
60
63
|
* @class Members
|
|
61
64
|
*/
|
|
62
65
|
export default class Members extends StatelessWebexPlugin {
|
|
66
|
+
hostId: any;
|
|
67
|
+
locusUrl: any;
|
|
68
|
+
mediaShareContentId: any;
|
|
69
|
+
mediaShareWhiteboardId: any;
|
|
70
|
+
membersCollection: any;
|
|
71
|
+
membersRequest: any;
|
|
72
|
+
receiveSlotManager: ReceiveSlotManager;
|
|
73
|
+
mediaRequestManagers: {
|
|
74
|
+
audio: MediaRequestManager;
|
|
75
|
+
video: MediaRequestManager;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
recordingId: any;
|
|
79
|
+
selfId: any;
|
|
80
|
+
type: any;
|
|
81
|
+
|
|
63
82
|
namespace = MEETINGS;
|
|
64
83
|
|
|
65
84
|
/**
|
|
@@ -68,7 +87,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
68
87
|
* @param {Object} options
|
|
69
88
|
* @memberof Members
|
|
70
89
|
*/
|
|
71
|
-
constructor(attrs, options) {
|
|
90
|
+
constructor(attrs: any, options: object) {
|
|
72
91
|
super({}, options);
|
|
73
92
|
/**
|
|
74
93
|
* The Members Request object to interact with server
|
|
@@ -76,7 +95,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
76
95
|
* @type {MembersRequest}
|
|
77
96
|
* @private
|
|
78
97
|
* @memberof Members
|
|
79
|
-
|
|
98
|
+
*/
|
|
99
|
+
// @ts-ignore
|
|
80
100
|
this.membersRequest = new MembersRequest({}, options);
|
|
81
101
|
/**
|
|
82
102
|
* The Members Collection cache
|
|
@@ -84,7 +104,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
84
104
|
* @type {MembersCollection}
|
|
85
105
|
* @private
|
|
86
106
|
* @memberof Members
|
|
87
|
-
|
|
107
|
+
*/
|
|
88
108
|
this.membersCollection = new MembersCollection();
|
|
89
109
|
/**
|
|
90
110
|
* The current locus url for the active meeting
|
|
@@ -92,7 +112,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
92
112
|
* @type {String}
|
|
93
113
|
* @private
|
|
94
114
|
* @memberof Members
|
|
95
|
-
|
|
115
|
+
*/
|
|
96
116
|
this.locusUrl = attrs.locusUrl || null;
|
|
97
117
|
/**
|
|
98
118
|
* The current hostId for the meeting
|
|
@@ -100,7 +120,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
100
120
|
* @type {String}
|
|
101
121
|
* @private
|
|
102
122
|
* @memberof Members
|
|
103
|
-
|
|
123
|
+
*/
|
|
104
124
|
this.hostId = null;
|
|
105
125
|
/**
|
|
106
126
|
* The current type for the meeting, could be MEETING or CALL
|
|
@@ -108,7 +128,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
108
128
|
* @type {String}
|
|
109
129
|
* @private
|
|
110
130
|
* @memberof Members
|
|
111
|
-
|
|
131
|
+
*/
|
|
112
132
|
this.type = null;
|
|
113
133
|
/**
|
|
114
134
|
* Locus has a self object, sent individually to the client
|
|
@@ -122,7 +142,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
122
142
|
* @type {String}
|
|
123
143
|
* @private
|
|
124
144
|
* @memberof Members
|
|
125
|
-
|
|
145
|
+
*/
|
|
126
146
|
this.selfId = null;
|
|
127
147
|
/**
|
|
128
148
|
* The current mediaShareContentId for the meeting
|
|
@@ -130,7 +150,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
130
150
|
* @type {String}
|
|
131
151
|
* @private
|
|
132
152
|
* @memberof Members
|
|
133
|
-
|
|
153
|
+
*/
|
|
134
154
|
this.mediaShareContentId = null;
|
|
135
155
|
/**
|
|
136
156
|
* The current mediaShareWhiteboardId for the meeting
|
|
@@ -138,7 +158,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
138
158
|
* @type {String}
|
|
139
159
|
* @private
|
|
140
160
|
* @memberof Members
|
|
141
|
-
|
|
161
|
+
*/
|
|
142
162
|
this.mediaShareWhiteboardId = null;
|
|
143
163
|
/**
|
|
144
164
|
* The current recordingId for the meeting, if it exists
|
|
@@ -146,7 +166,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
146
166
|
* @type {String}
|
|
147
167
|
* @private
|
|
148
168
|
* @memberof Members
|
|
149
|
-
|
|
169
|
+
*/
|
|
150
170
|
this.recordingId = null;
|
|
151
171
|
|
|
152
172
|
/**
|
|
@@ -171,7 +191,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
171
191
|
* @private
|
|
172
192
|
* @memberof Members
|
|
173
193
|
*/
|
|
174
|
-
locusSelfUpdate(payload) {
|
|
194
|
+
locusSelfUpdate(payload: {newSelf: any; oldSelf: any}) {
|
|
175
195
|
let newSelfId = null;
|
|
176
196
|
let oldSelfId = null;
|
|
177
197
|
|
|
@@ -202,12 +222,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
202
222
|
this,
|
|
203
223
|
{
|
|
204
224
|
file: 'members',
|
|
205
|
-
function: 'locusSelfUpdate'
|
|
225
|
+
function: 'locusSelfUpdate',
|
|
206
226
|
},
|
|
207
227
|
EVENT_TRIGGERS.MEMBERS_SELF_UPDATE,
|
|
208
228
|
{
|
|
209
229
|
activeSelfId: newSelfId,
|
|
210
|
-
endedSelfId: oldSelfId
|
|
230
|
+
endedSelfId: oldSelfId,
|
|
211
231
|
}
|
|
212
232
|
);
|
|
213
233
|
}
|
|
@@ -221,7 +241,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
221
241
|
* @private
|
|
222
242
|
* @memberof Members
|
|
223
243
|
*/
|
|
224
|
-
locusHostUpdate(payload) {
|
|
244
|
+
locusHostUpdate(payload: {newHost: any; oldHost: any}) {
|
|
225
245
|
let newHostId = null;
|
|
226
246
|
let oldHostId = null;
|
|
227
247
|
|
|
@@ -252,12 +272,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
252
272
|
this,
|
|
253
273
|
{
|
|
254
274
|
file: 'members',
|
|
255
|
-
function: 'locusHostUpdate'
|
|
275
|
+
function: 'locusHostUpdate',
|
|
256
276
|
},
|
|
257
277
|
EVENT_TRIGGERS.MEMBERS_HOST_UPDATE,
|
|
258
278
|
{
|
|
259
279
|
activeHostId: newHostId,
|
|
260
|
-
endedHostId: oldHostId
|
|
280
|
+
endedHostId: oldHostId,
|
|
261
281
|
}
|
|
262
282
|
);
|
|
263
283
|
}
|
|
@@ -271,7 +291,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
271
291
|
* @private
|
|
272
292
|
* @memberof Members
|
|
273
293
|
*/
|
|
274
|
-
locusParticipantsUpdate(payload) {
|
|
294
|
+
locusParticipantsUpdate(payload: {participants: object}) {
|
|
275
295
|
if (payload) {
|
|
276
296
|
const delta = this.handleLocusInfoUpdatedParticipants(payload);
|
|
277
297
|
const full = this.handleMembersUpdate(delta); // SDK should propagate the full list for both delta and non delta updates
|
|
@@ -280,12 +300,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
280
300
|
this,
|
|
281
301
|
{
|
|
282
302
|
file: 'members',
|
|
283
|
-
function: 'locusParticipantsUpdate'
|
|
303
|
+
function: 'locusParticipantsUpdate',
|
|
284
304
|
},
|
|
285
305
|
EVENT_TRIGGERS.MEMBERS_UPDATE,
|
|
286
306
|
{
|
|
287
307
|
delta,
|
|
288
|
-
full
|
|
308
|
+
full,
|
|
289
309
|
}
|
|
290
310
|
);
|
|
291
311
|
}
|
|
@@ -300,7 +320,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
300
320
|
* @private
|
|
301
321
|
* @memberof Members
|
|
302
322
|
*/
|
|
303
|
-
locusMediaSharesUpdate(payload) {
|
|
323
|
+
locusMediaSharesUpdate(payload: {current: any; previous: any}) {
|
|
304
324
|
const currentContent = payload.current?.content;
|
|
305
325
|
const previousContent = payload.previous?.content;
|
|
306
326
|
const currentWhiteboard = payload.current?.whiteboard;
|
|
@@ -319,8 +339,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
319
339
|
if (currentContent.disposition === FLOOR_ACTION.RELEASED) {
|
|
320
340
|
whoStopped = currentContent.beneficiaryId;
|
|
321
341
|
this.mediaShareContentId = null;
|
|
322
|
-
}
|
|
323
|
-
|
|
342
|
+
} else if (
|
|
343
|
+
currentContent.disposition === FLOOR_ACTION.GRANTED &&
|
|
344
|
+
currentContent.beneficiaryId !== previousContent.beneficiaryId
|
|
345
|
+
) {
|
|
324
346
|
whoStopped = previousContent.beneficiaryId;
|
|
325
347
|
}
|
|
326
348
|
}
|
|
@@ -337,8 +359,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
337
359
|
if (currentWhiteboard.disposition === FLOOR_ACTION.RELEASED) {
|
|
338
360
|
whoStopped = currentWhiteboard.beneficiaryId;
|
|
339
361
|
this.mediaShareWhiteboardId = null;
|
|
340
|
-
}
|
|
341
|
-
|
|
362
|
+
} else if (
|
|
363
|
+
currentWhiteboard.disposition === FLOOR_ACTION.GRANTED &&
|
|
364
|
+
currentWhiteboard.beneficiaryId !== previousWhiteboard.beneficiaryId
|
|
365
|
+
) {
|
|
342
366
|
whoStopped = previousWhiteboard.beneficiaryId;
|
|
343
367
|
}
|
|
344
368
|
}
|
|
@@ -363,17 +387,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
363
387
|
this,
|
|
364
388
|
{
|
|
365
389
|
file: 'members',
|
|
366
|
-
function: 'locusMediaSharesUpdate'
|
|
390
|
+
function: 'locusMediaSharesUpdate',
|
|
367
391
|
},
|
|
368
392
|
EVENT_TRIGGERS.MEMBERS_CONTENT_UPDATE,
|
|
369
393
|
{
|
|
370
394
|
activeSharingId: whoSharing,
|
|
371
|
-
endedSharingId: whoStopped
|
|
395
|
+
endedSharingId: whoStopped,
|
|
372
396
|
}
|
|
373
397
|
);
|
|
374
398
|
}
|
|
375
399
|
|
|
376
|
-
|
|
377
400
|
/**
|
|
378
401
|
* Internal update the locus url value
|
|
379
402
|
* @param {Object} payload
|
|
@@ -382,7 +405,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
382
405
|
* @private
|
|
383
406
|
* @memberof Members
|
|
384
407
|
*/
|
|
385
|
-
locusUrlUpdate(payload) {
|
|
408
|
+
locusUrlUpdate(payload: any) {
|
|
386
409
|
if (payload) {
|
|
387
410
|
this.setLocusUrl(null, payload);
|
|
388
411
|
}
|
|
@@ -396,7 +419,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
396
419
|
* @private
|
|
397
420
|
* @memberof Members
|
|
398
421
|
*/
|
|
399
|
-
locusFullStateTypeUpdate(payload) {
|
|
422
|
+
locusFullStateTypeUpdate(payload: {type: string}) {
|
|
400
423
|
// TODO: at some point there could be a timing issue here, for updating each member
|
|
401
424
|
// ie., if the type changes AND there is no locus update, then each member will not know the type of call
|
|
402
425
|
// which means they cannot determine isMutable && isRemovable
|
|
@@ -415,7 +438,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
415
438
|
* @private
|
|
416
439
|
* @memberof Members
|
|
417
440
|
*/
|
|
418
|
-
handleMembersUpdate(membersUpdate) {
|
|
441
|
+
private handleMembersUpdate(membersUpdate: any) {
|
|
419
442
|
if (membersUpdate) {
|
|
420
443
|
if (membersUpdate.updated) {
|
|
421
444
|
this.constructMembers(membersUpdate.updated);
|
|
@@ -435,7 +458,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
435
458
|
* @private
|
|
436
459
|
* @memberof Members
|
|
437
460
|
*/
|
|
438
|
-
constructMembers(list) {
|
|
461
|
+
private constructMembers(list: Array<any>) {
|
|
439
462
|
list.forEach((member) => {
|
|
440
463
|
this.membersCollection.set(member.id, member);
|
|
441
464
|
});
|
|
@@ -448,12 +471,14 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
448
471
|
* @private
|
|
449
472
|
* @memberof Members
|
|
450
473
|
*/
|
|
451
|
-
handleLocusInfoUpdatedParticipants(payload) {
|
|
474
|
+
private handleLocusInfoUpdatedParticipants(payload: any) {
|
|
452
475
|
this.hostId = payload.hostId || this.hostId;
|
|
453
476
|
this.selfId = payload.selfId || this.selfId;
|
|
454
477
|
this.recordingId = payload.recordingId;
|
|
455
478
|
if (!payload.participants) {
|
|
456
|
-
LoggerProxy.logger.warn(
|
|
479
|
+
LoggerProxy.logger.warn(
|
|
480
|
+
'Members:index#handleLocusInfoUpdatedParticipants --> participants payload is missing.'
|
|
481
|
+
);
|
|
457
482
|
}
|
|
458
483
|
const memberUpdate = this.update(payload.participants);
|
|
459
484
|
|
|
@@ -469,15 +494,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
469
494
|
* @public
|
|
470
495
|
* @memberof Members
|
|
471
496
|
*/
|
|
472
|
-
setLocusUrl(locus, locusUrl = null) {
|
|
497
|
+
public setLocusUrl(locus: any, locusUrl: string = null) {
|
|
473
498
|
if (locusUrl) {
|
|
474
499
|
this.locusUrl = locusUrl;
|
|
475
|
-
}
|
|
476
|
-
else if (locus && (locus.locusUrl || locus.url)) {
|
|
500
|
+
} else if (locus && (locus.locusUrl || locus.url)) {
|
|
477
501
|
this.locusUrl = locus.locusUrl || locus.url;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
|
|
502
|
+
} else {
|
|
503
|
+
throw new ParameterError(
|
|
504
|
+
'Setting locusUrl for the Members module should be done with a locus object or locusUrl'
|
|
505
|
+
);
|
|
481
506
|
}
|
|
482
507
|
}
|
|
483
508
|
|
|
@@ -490,15 +515,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
490
515
|
* @public
|
|
491
516
|
* @memberof Members
|
|
492
517
|
*/
|
|
493
|
-
setHostId(locus, hostId = null) {
|
|
518
|
+
public setHostId(locus: any, hostId: string = null) {
|
|
494
519
|
if (hostId) {
|
|
495
520
|
this.hostId = hostId;
|
|
496
|
-
}
|
|
497
|
-
else if (locus) {
|
|
521
|
+
} else if (locus) {
|
|
498
522
|
this.hostId = locus && locus.owner && locus.owner.info ? locus.owner.info : null;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
|
|
523
|
+
} else {
|
|
524
|
+
throw new ParameterError(
|
|
525
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
526
|
+
);
|
|
502
527
|
}
|
|
503
528
|
}
|
|
504
529
|
|
|
@@ -511,15 +536,15 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
511
536
|
* @public
|
|
512
537
|
* @memberof Members
|
|
513
538
|
*/
|
|
514
|
-
setType(fullState, type = null) {
|
|
539
|
+
public setType(fullState: any, type: string = null) {
|
|
515
540
|
if (type) {
|
|
516
541
|
this.type = type;
|
|
517
|
-
}
|
|
518
|
-
else if (fullState) {
|
|
542
|
+
} else if (fullState) {
|
|
519
543
|
this.type = (fullState && fullState.type) || null;
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
|
|
544
|
+
} else {
|
|
545
|
+
throw new ParameterError(
|
|
546
|
+
'Setting type for the Members module should be done with a fullstate object or type string'
|
|
547
|
+
);
|
|
523
548
|
}
|
|
524
549
|
}
|
|
525
550
|
|
|
@@ -531,15 +556,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
531
556
|
* @returns {undefined}
|
|
532
557
|
* @memberof Members
|
|
533
558
|
*/
|
|
534
|
-
setSelfId(locus, selfId = null) {
|
|
559
|
+
setSelfId(locus: any, selfId: string = null) {
|
|
535
560
|
if (selfId) {
|
|
536
561
|
this.selfId = selfId;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
562
|
+
} else if (locus) {
|
|
563
|
+
this.selfId =
|
|
564
|
+
locus && locus.self && locus.self.person && locus.self.person.id
|
|
565
|
+
? locus.self.person.id
|
|
566
|
+
: null;
|
|
567
|
+
} else {
|
|
568
|
+
throw new ParameterError(
|
|
569
|
+
'Setting selfid for the Members module should be done with a locus object or selfId'
|
|
570
|
+
);
|
|
543
571
|
}
|
|
544
572
|
}
|
|
545
573
|
|
|
@@ -551,11 +579,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
551
579
|
* @returns {undefined}
|
|
552
580
|
* @memberof Members
|
|
553
581
|
*/
|
|
554
|
-
setMediaShareContentId(locus, contentId) {
|
|
582
|
+
setMediaShareContentId(locus: any, contentId?: string) {
|
|
555
583
|
if (contentId) {
|
|
556
584
|
this.mediaShareContentId = contentId;
|
|
557
|
-
}
|
|
558
|
-
else if (locus) {
|
|
585
|
+
} else if (locus) {
|
|
559
586
|
const contentMediaShare =
|
|
560
587
|
locus.mediaShares &&
|
|
561
588
|
locus.mediaShares.length &&
|
|
@@ -567,9 +594,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
567
594
|
contentMediaShare.floor.beneficiary &&
|
|
568
595
|
contentMediaShare.floor.beneficiary.id) ||
|
|
569
596
|
null;
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
|
|
597
|
+
} else {
|
|
598
|
+
throw new ParameterError(
|
|
599
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
600
|
+
);
|
|
573
601
|
}
|
|
574
602
|
}
|
|
575
603
|
|
|
@@ -581,11 +609,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
581
609
|
* @returns {undefined}
|
|
582
610
|
* @memberof Members
|
|
583
611
|
*/
|
|
584
|
-
setMediaShareWhiteboardId(locus, whiteboardId) {
|
|
612
|
+
setMediaShareWhiteboardId(locus: any, whiteboardId?: string) {
|
|
585
613
|
if (whiteboardId) {
|
|
586
614
|
this.mediaShareWhiteboardId = whiteboardId;
|
|
587
|
-
}
|
|
588
|
-
else if (locus) {
|
|
615
|
+
} else if (locus) {
|
|
589
616
|
const whiteboardMediaShare =
|
|
590
617
|
locus.mediaShares &&
|
|
591
618
|
locus.mediaShares.length &&
|
|
@@ -597,9 +624,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
597
624
|
whiteboardMediaShare.floor.beneficiary &&
|
|
598
625
|
whiteboardMediaShare.floor.beneficiary.id) ||
|
|
599
626
|
null;
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
|
|
627
|
+
} else {
|
|
628
|
+
throw new ParameterError(
|
|
629
|
+
'Setting hostid for the Members module should be done with a locus object or hostId'
|
|
630
|
+
);
|
|
603
631
|
}
|
|
604
632
|
}
|
|
605
633
|
|
|
@@ -612,7 +640,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
612
640
|
* @private
|
|
613
641
|
* @memberof Members
|
|
614
642
|
*/
|
|
615
|
-
update(participants) {
|
|
643
|
+
private update(participants: Array<any>) {
|
|
616
644
|
const membersUpdate = {added: [], updated: []};
|
|
617
645
|
|
|
618
646
|
if (participants) {
|
|
@@ -632,11 +660,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
632
660
|
hostId: this.hostId,
|
|
633
661
|
contentSharingId: this.mediaShareContentId,
|
|
634
662
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
635
|
-
type: this.type
|
|
663
|
+
type: this.type,
|
|
636
664
|
})
|
|
637
665
|
);
|
|
638
|
-
}
|
|
639
|
-
else {
|
|
666
|
+
} else {
|
|
640
667
|
membersUpdate.added.push(
|
|
641
668
|
new Member(participant, {
|
|
642
669
|
recordingId: this.recordingId,
|
|
@@ -644,7 +671,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
644
671
|
hostId: this.hostId,
|
|
645
672
|
contentSharingId: this.mediaShareContentId,
|
|
646
673
|
whiteboardSharingId: this.mediaShareWhiteboardId,
|
|
647
|
-
type: this.type
|
|
674
|
+
type: this.type,
|
|
648
675
|
})
|
|
649
676
|
);
|
|
650
677
|
}
|
|
@@ -661,13 +688,17 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
661
688
|
* @returns {Promise}
|
|
662
689
|
* @memberof Members
|
|
663
690
|
*/
|
|
664
|
-
addMember(invitee, alertIfActive) {
|
|
691
|
+
addMember(invitee: any, alertIfActive?: boolean) {
|
|
665
692
|
if (!this.locusUrl) {
|
|
666
|
-
return Promise.reject(
|
|
693
|
+
return Promise.reject(
|
|
694
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
695
|
+
);
|
|
667
696
|
}
|
|
668
697
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
669
698
|
return Promise.reject(
|
|
670
|
-
new ParameterError(
|
|
699
|
+
new ParameterError(
|
|
700
|
+
'The invitee must be defined with either a valid email, emailAddress or phoneNumber property.'
|
|
701
|
+
)
|
|
671
702
|
);
|
|
672
703
|
}
|
|
673
704
|
const options = MembersUtil.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
|
|
@@ -681,9 +712,11 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
681
712
|
* @returns {Promise}
|
|
682
713
|
* @memberof Members
|
|
683
714
|
*/
|
|
684
|
-
cancelPhoneInvite(invitee) {
|
|
715
|
+
cancelPhoneInvite(invitee: any) {
|
|
685
716
|
if (!this.locusUrl) {
|
|
686
|
-
return Promise.reject(
|
|
717
|
+
return Promise.reject(
|
|
718
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
719
|
+
);
|
|
687
720
|
}
|
|
688
721
|
if (MembersUtil.isInvalidInvitee(invitee)) {
|
|
689
722
|
return Promise.reject(
|
|
@@ -692,7 +725,6 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
692
725
|
}
|
|
693
726
|
const options = MembersUtil.cancelPhoneInviteOptions(invitee, this.locusUrl);
|
|
694
727
|
|
|
695
|
-
|
|
696
728
|
return this.membersRequest.cancelPhoneInvite(options);
|
|
697
729
|
}
|
|
698
730
|
|
|
@@ -703,7 +735,7 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
703
735
|
* @public
|
|
704
736
|
* @memberof Members
|
|
705
737
|
*/
|
|
706
|
-
admitMembers(memberIds) {
|
|
738
|
+
public admitMembers(memberIds: Array<any>) {
|
|
707
739
|
if (isEmpty(memberIds)) {
|
|
708
740
|
return Promise.reject(new ParameterError('No member ids provided to admit.'));
|
|
709
741
|
}
|
|
@@ -719,12 +751,16 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
719
751
|
* @public
|
|
720
752
|
* @memberof Members
|
|
721
753
|
*/
|
|
722
|
-
removeMember(memberId) {
|
|
754
|
+
public removeMember(memberId: string) {
|
|
723
755
|
if (!this.locusUrl) {
|
|
724
|
-
return Promise.reject(
|
|
756
|
+
return Promise.reject(
|
|
757
|
+
new ParameterError('The associated locus url for this meeting object must be defined.')
|
|
758
|
+
);
|
|
725
759
|
}
|
|
726
760
|
if (!memberId) {
|
|
727
|
-
return Promise.reject(
|
|
761
|
+
return Promise.reject(
|
|
762
|
+
new ParameterError('The member id must be defined to remove the member.')
|
|
763
|
+
);
|
|
728
764
|
}
|
|
729
765
|
const options = MembersUtil.generateRemoveMemberOptions(memberId, this.locusUrl);
|
|
730
766
|
|
|
@@ -739,12 +775,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
739
775
|
* @public
|
|
740
776
|
* @memberof Members
|
|
741
777
|
*/
|
|
742
|
-
muteMember(memberId, mute = true) {
|
|
778
|
+
public muteMember(memberId: string, mute = true) {
|
|
743
779
|
if (!this.locusUrl) {
|
|
744
|
-
return Promise.reject(
|
|
780
|
+
return Promise.reject(
|
|
781
|
+
new ParameterError(
|
|
782
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
783
|
+
)
|
|
784
|
+
);
|
|
745
785
|
}
|
|
746
786
|
if (!memberId) {
|
|
747
|
-
return Promise.reject(
|
|
787
|
+
return Promise.reject(
|
|
788
|
+
new ParameterError('The member id must be defined to mute the member.')
|
|
789
|
+
);
|
|
748
790
|
}
|
|
749
791
|
const options = MembersUtil.generateMuteMemberOptions(memberId, mute, this.locusUrl);
|
|
750
792
|
|
|
@@ -759,12 +801,18 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
759
801
|
* @public
|
|
760
802
|
* @memberof Members
|
|
761
803
|
*/
|
|
762
|
-
raiseOrLowerHand(memberId, raise = true) {
|
|
804
|
+
public raiseOrLowerHand(memberId: string, raise = true) {
|
|
763
805
|
if (!this.locusUrl) {
|
|
764
|
-
return Promise.reject(
|
|
806
|
+
return Promise.reject(
|
|
807
|
+
new ParameterError(
|
|
808
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
809
|
+
)
|
|
810
|
+
);
|
|
765
811
|
}
|
|
766
812
|
if (!memberId) {
|
|
767
|
-
return Promise.reject(
|
|
813
|
+
return Promise.reject(
|
|
814
|
+
new ParameterError('The member id must be defined to raise/lower the hand of the member.')
|
|
815
|
+
);
|
|
768
816
|
}
|
|
769
817
|
const options = MembersUtil.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
|
|
770
818
|
|
|
@@ -778,19 +826,29 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
778
826
|
* @public
|
|
779
827
|
* @memberof Members
|
|
780
828
|
*/
|
|
781
|
-
lowerAllHands(requestingMemberId) {
|
|
829
|
+
public lowerAllHands(requestingMemberId: string) {
|
|
782
830
|
if (!this.locusUrl) {
|
|
783
|
-
return Promise.reject(
|
|
831
|
+
return Promise.reject(
|
|
832
|
+
new ParameterError(
|
|
833
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
834
|
+
)
|
|
835
|
+
);
|
|
784
836
|
}
|
|
785
837
|
if (!requestingMemberId) {
|
|
786
|
-
return Promise.reject(
|
|
838
|
+
return Promise.reject(
|
|
839
|
+
new ParameterError(
|
|
840
|
+
'The requestingMemberId must be defined to lower all hands in a meeting.'
|
|
841
|
+
)
|
|
842
|
+
);
|
|
787
843
|
}
|
|
788
|
-
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
844
|
+
const options = MembersUtil.generateLowerAllHandsMemberOptions(
|
|
845
|
+
requestingMemberId,
|
|
846
|
+
this.locusUrl
|
|
847
|
+
);
|
|
789
848
|
|
|
790
849
|
return this.membersRequest.lowerAllHandsMember(options);
|
|
791
850
|
}
|
|
792
851
|
|
|
793
|
-
|
|
794
852
|
/**
|
|
795
853
|
* Transfers the host to another member
|
|
796
854
|
* @param {String} memberId
|
|
@@ -799,19 +857,28 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
799
857
|
* @public
|
|
800
858
|
* @memberof Members
|
|
801
859
|
*/
|
|
802
|
-
transferHostToMember(memberId, moderator = true) {
|
|
860
|
+
public transferHostToMember(memberId: string, moderator = true) {
|
|
803
861
|
if (!this.locusUrl) {
|
|
804
|
-
return Promise.reject(
|
|
862
|
+
return Promise.reject(
|
|
863
|
+
new ParameterError(
|
|
864
|
+
'The associated locus url for this meetings members object must be defined.'
|
|
865
|
+
)
|
|
866
|
+
);
|
|
805
867
|
}
|
|
806
868
|
if (!memberId) {
|
|
807
|
-
return Promise.reject(
|
|
869
|
+
return Promise.reject(
|
|
870
|
+
new ParameterError('The member id must be defined to transfer host to the member.')
|
|
871
|
+
);
|
|
808
872
|
}
|
|
809
|
-
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
873
|
+
const options = MembersUtil.generateTransferHostMemberOptions(
|
|
874
|
+
memberId,
|
|
875
|
+
moderator,
|
|
876
|
+
this.locusUrl
|
|
877
|
+
);
|
|
810
878
|
|
|
811
879
|
return this.membersRequest.transferHostToMember(options);
|
|
812
880
|
}
|
|
813
881
|
|
|
814
|
-
|
|
815
882
|
/**
|
|
816
883
|
* Sends DTMF tones for the PSTN member of a meeting
|
|
817
884
|
* @param {String} tones a string of one or more DTMF tones to send
|
|
@@ -820,7 +887,8 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
820
887
|
* @public
|
|
821
888
|
* @memberof Members
|
|
822
889
|
*/
|
|
823
|
-
sendDialPadKey(tones = '', memberId = '') {
|
|
890
|
+
public sendDialPadKey(tones = '', memberId = '') {
|
|
891
|
+
// @ts-ignore
|
|
824
892
|
if (!tones && tones !== 0) {
|
|
825
893
|
return Promise.reject(new ParameterError('DMTF tones must be passed in'));
|
|
826
894
|
}
|
|
@@ -843,7 +911,11 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
843
911
|
return this.membersRequest.sendDialPadKey(options);
|
|
844
912
|
}
|
|
845
913
|
|
|
846
|
-
return Promise.reject(
|
|
914
|
+
return Promise.reject(
|
|
915
|
+
new Error(
|
|
916
|
+
'Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'
|
|
917
|
+
)
|
|
918
|
+
);
|
|
847
919
|
}
|
|
848
920
|
|
|
849
921
|
/** Finds a member that has any device with a csi matching provided value
|
|
@@ -852,10 +924,12 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
852
924
|
* @returns {Member}
|
|
853
925
|
*/
|
|
854
926
|
findMemberByCsi(csi) {
|
|
855
|
-
return Object.values(this.membersCollection.getAll())
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
927
|
+
return Object.values(this.membersCollection.getAll()).find((member) =>
|
|
928
|
+
// @ts-ignore
|
|
929
|
+
member.participant?.devices?.find((device) =>
|
|
930
|
+
device.csis?.find((memberCsi) => memberCsi === csi)
|
|
931
|
+
)
|
|
932
|
+
);
|
|
859
933
|
}
|
|
860
934
|
|
|
861
935
|
/**
|
|
@@ -872,7 +946,10 @@ export default class Members extends StatelessWebexPlugin {
|
|
|
872
946
|
this.membersCollection.get(memberId)?.participant?.devices?.forEach((device) => {
|
|
873
947
|
if (device.mediaSessions) {
|
|
874
948
|
const deviceCsis = device.mediaSessions
|
|
875
|
-
?.filter(
|
|
949
|
+
?.filter(
|
|
950
|
+
(mediaSession) =>
|
|
951
|
+
mediaSession.mediaType === mediaType && mediaSession.mediaContent === mediaContent
|
|
952
|
+
)
|
|
876
953
|
.map((mediaSession) => mediaSession.csi);
|
|
877
954
|
|
|
878
955
|
csis.push(...deviceCsis);
|