@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.21
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 +4 -18
- 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 +2 -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
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
import {WebexPlugin} from '@webex/webex-core';
|
|
5
|
+
import {debounce, forEach} from 'lodash';
|
|
6
|
+
import LoggerProxy from '../common/logs/logger-proxy';
|
|
7
|
+
|
|
8
|
+
import {BREAKOUTS, MEETINGS} from '../constants';
|
|
9
|
+
|
|
10
|
+
import Breakout from './breakout';
|
|
11
|
+
import BreakoutCollection from './collection';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @class Breakouts
|
|
15
|
+
*/
|
|
16
|
+
const Breakouts = WebexPlugin.extend({
|
|
17
|
+
namespace: MEETINGS,
|
|
18
|
+
|
|
19
|
+
collections: {
|
|
20
|
+
breakouts: BreakoutCollection,
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
props: {
|
|
24
|
+
allowBackToMain: 'boolean', // only present when in a breakout session
|
|
25
|
+
delayCloseTime: 'number', // appears once breakouts start
|
|
26
|
+
enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts
|
|
27
|
+
groupId: 'string', // appears from the moment you enable breakouts
|
|
28
|
+
name: 'string', // only present when in a breakout session
|
|
29
|
+
sessionId: 'string', // appears from the moment you enable breakouts
|
|
30
|
+
sessionType: 'string', // appears from the moment you enable breakouts
|
|
31
|
+
startTime: 'string', // appears once breakouts start
|
|
32
|
+
status: 'string', // only present when in a breakout session
|
|
33
|
+
url: 'string', // appears from the moment you enable breakouts
|
|
34
|
+
locusUrl: 'string', // the current locus url
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
children: {
|
|
38
|
+
currentBreakoutSession: Breakout,
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
derived: {
|
|
42
|
+
isInMainSession: {
|
|
43
|
+
deps: ['sessionType'],
|
|
44
|
+
/**
|
|
45
|
+
* Returns true if the user is in the main session
|
|
46
|
+
* @returns {boolean}
|
|
47
|
+
*/
|
|
48
|
+
fn() {
|
|
49
|
+
return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* initialize for the breakouts
|
|
56
|
+
* @returns {void}
|
|
57
|
+
*/
|
|
58
|
+
initialize() {
|
|
59
|
+
this.listenTo(this, 'change:status', () => {
|
|
60
|
+
if (this.status === BREAKOUTS.STATUS.CLOSING) {
|
|
61
|
+
this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
this.debouncedQueryRosters = debounce(this.queryRosters, 10, {
|
|
65
|
+
leading: true,
|
|
66
|
+
trailing: false,
|
|
67
|
+
});
|
|
68
|
+
this.listenTo(this.breakouts, 'add', () => {
|
|
69
|
+
this.debouncedQueryRosters();
|
|
70
|
+
});
|
|
71
|
+
this.listenToBroadcastMessages();
|
|
72
|
+
this.listenToBreakoutRosters();
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Calls this to clean up listeners
|
|
77
|
+
* @returns {void}
|
|
78
|
+
*/
|
|
79
|
+
cleanUp() {
|
|
80
|
+
this.stopListening();
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Update the current locus url of the meeting
|
|
85
|
+
* @param {string} locusUrl // locus url
|
|
86
|
+
* @returns {void}
|
|
87
|
+
*/
|
|
88
|
+
locusUrlUpdate(locusUrl) {
|
|
89
|
+
this.set('locusUrl', locusUrl);
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The initial roster lists need to be queried because you don't
|
|
94
|
+
* get a breakout.roster event when you join the meeting
|
|
95
|
+
* @returns {void}
|
|
96
|
+
*/
|
|
97
|
+
queryRosters() {
|
|
98
|
+
this.webex
|
|
99
|
+
.request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})
|
|
100
|
+
.then((result) => {
|
|
101
|
+
const {
|
|
102
|
+
body: {rosters},
|
|
103
|
+
} = result;
|
|
104
|
+
|
|
105
|
+
rosters.forEach(({locus}) => {
|
|
106
|
+
this.handleRosterUpdate(locus);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);
|
|
110
|
+
})
|
|
111
|
+
.catch((error) => {
|
|
112
|
+
LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
*
|
|
118
|
+
* @param {Object} locus // locus object
|
|
119
|
+
* @returns {void}
|
|
120
|
+
*/
|
|
121
|
+
handleRosterUpdate(locus) {
|
|
122
|
+
const sessionId = locus.controls?.breakout?.sessionId;
|
|
123
|
+
|
|
124
|
+
const session = this.breakouts.get(sessionId);
|
|
125
|
+
|
|
126
|
+
if (!session) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
session.parseRoster(locus);
|
|
131
|
+
},
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Sets up listener for broadcast messages sent to the breakout session
|
|
135
|
+
* @returns {void}
|
|
136
|
+
*/
|
|
137
|
+
listenToBroadcastMessages() {
|
|
138
|
+
this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {
|
|
139
|
+
const {
|
|
140
|
+
data: {senderUserId, sentTime, message},
|
|
141
|
+
} = event;
|
|
142
|
+
|
|
143
|
+
this.trigger(BREAKOUTS.EVENTS.MESSAGE, {
|
|
144
|
+
senderUserId,
|
|
145
|
+
sentTime,
|
|
146
|
+
message,
|
|
147
|
+
// FIXME: This is only the current sessionId
|
|
148
|
+
// We'd need to check that the dataChannelUrl is still the same
|
|
149
|
+
// to guarantee that this message was sent to this session
|
|
150
|
+
sessionId: this.currentBreakoutSession.sessionId,
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
},
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Sets up a listener for roster messags from mecury
|
|
157
|
+
* @returns {void}
|
|
158
|
+
*/
|
|
159
|
+
listenToBreakoutRosters() {
|
|
160
|
+
this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {
|
|
161
|
+
this.handleRosterUpdate(event.data.locus);
|
|
162
|
+
this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Updates the information about the current breakout
|
|
168
|
+
* @param {Object} params
|
|
169
|
+
* @returns {void}
|
|
170
|
+
*/
|
|
171
|
+
updateBreakout(params) {
|
|
172
|
+
this.set(params);
|
|
173
|
+
|
|
174
|
+
this.set('currentBreakoutSession', {
|
|
175
|
+
sessionId: params.sessionId,
|
|
176
|
+
groupId: params.groupId,
|
|
177
|
+
name: params.name,
|
|
178
|
+
current: true,
|
|
179
|
+
sessionType: params.sessionType,
|
|
180
|
+
url: params.url,
|
|
181
|
+
[BREAKOUTS.SESSION_STATES.ACTIVE]: false,
|
|
182
|
+
[BREAKOUTS.SESSION_STATES.ALLOWED]: false,
|
|
183
|
+
[BREAKOUTS.SESSION_STATES.ALLOWED]: false,
|
|
184
|
+
[BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,
|
|
185
|
+
[BREAKOUTS.SESSION_STATES.REQUESTED]: false,
|
|
186
|
+
});
|
|
187
|
+
},
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Updates the information about available breakouts
|
|
191
|
+
* @param {Object} payload
|
|
192
|
+
* @returns {void}
|
|
193
|
+
*/
|
|
194
|
+
updateBreakoutSessions(payload) {
|
|
195
|
+
const breakouts = {};
|
|
196
|
+
|
|
197
|
+
if (payload.breakoutSessions) {
|
|
198
|
+
forEach(BREAKOUTS.SESSION_STATES, (state) => {
|
|
199
|
+
forEach(payload.breakoutSessions[state], (breakout) => {
|
|
200
|
+
const {sessionId} = breakout;
|
|
201
|
+
|
|
202
|
+
if (!breakouts[sessionId]) {
|
|
203
|
+
breakouts[sessionId] = breakout;
|
|
204
|
+
breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;
|
|
205
|
+
breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;
|
|
206
|
+
breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;
|
|
207
|
+
breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;
|
|
208
|
+
breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
breakouts[sessionId][state] = true;
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
forEach(breakouts, (breakout: typeof Breakout) => {
|
|
217
|
+
// eslint-disable-next-line no-param-reassign
|
|
218
|
+
breakout.url = this.url;
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
this.breakouts.set(Object.values(breakouts));
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
export default Breakouts;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
|
+
|
|
1
3
|
import bowser from 'bowser';
|
|
2
4
|
import {memoize} from 'lodash';
|
|
3
5
|
import window from 'global/window';
|
|
@@ -9,7 +11,7 @@ const mockDetectionObject = {
|
|
|
9
11
|
/* eslint-enable global-require */
|
|
10
12
|
getBrowserName: () => '',
|
|
11
13
|
getBrowserVersion: () => '',
|
|
12
|
-
isBrowser: () => false
|
|
14
|
+
isBrowser: () => false,
|
|
13
15
|
};
|
|
14
16
|
|
|
15
17
|
const createDetectionObject = (results) => {
|
|
@@ -26,11 +28,12 @@ const createDetectionObject = (results) => {
|
|
|
26
28
|
getOSVersion,
|
|
27
29
|
getBrowserName,
|
|
28
30
|
getBrowserVersion,
|
|
29
|
-
isBrowser
|
|
31
|
+
isBrowser,
|
|
30
32
|
};
|
|
31
33
|
};
|
|
32
34
|
|
|
33
|
-
export default memoize((agent) =>
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
export default memoize((agent?: any) =>
|
|
36
|
+
agent || window.navigator?.userAgent
|
|
37
|
+
? createDetectionObject(bowser.getParser(agent || window.navigator.userAgent))
|
|
38
|
+
: mockDetectionObject
|
|
39
|
+
);
|
package/src/common/collection.ts
CHANGED
|
@@ -13,7 +13,7 @@ export default class Collection {
|
|
|
13
13
|
* @param {String} property
|
|
14
14
|
* @memberof Collection
|
|
15
15
|
*/
|
|
16
|
-
constructor(property) {
|
|
16
|
+
constructor(property: string) {
|
|
17
17
|
if (!property || !isString(property)) {
|
|
18
18
|
throw new ParameterError('Collection expects a string to use as a property name.');
|
|
19
19
|
}
|
|
@@ -41,8 +41,10 @@ export default class Collection {
|
|
|
41
41
|
* @public
|
|
42
42
|
* @memberof Collection
|
|
43
43
|
*/
|
|
44
|
-
get(id) {
|
|
45
|
-
return this[this.propertyName] && this[this.propertyName][id]
|
|
44
|
+
public get(id: string) {
|
|
45
|
+
return this[this.propertyName] && this[this.propertyName][id]
|
|
46
|
+
? this[this.propertyName][id]
|
|
47
|
+
: null;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
/**
|
|
@@ -52,7 +54,7 @@ export default class Collection {
|
|
|
52
54
|
* @public
|
|
53
55
|
* @memberof Collection
|
|
54
56
|
*/
|
|
55
|
-
set(id, value) {
|
|
57
|
+
public set(id: string, value: any) {
|
|
56
58
|
this[this.propertyName][id] = value;
|
|
57
59
|
|
|
58
60
|
return this.get(id);
|
|
@@ -65,7 +67,7 @@ export default class Collection {
|
|
|
65
67
|
* @public
|
|
66
68
|
* @memberof Collection
|
|
67
69
|
*/
|
|
68
|
-
delete(id) {
|
|
70
|
+
public delete(id: string) {
|
|
69
71
|
delete this[this.propertyName][id];
|
|
70
72
|
}
|
|
71
73
|
|
|
@@ -74,7 +76,7 @@ export default class Collection {
|
|
|
74
76
|
* @public
|
|
75
77
|
* @memberof Collection
|
|
76
78
|
*/
|
|
77
|
-
getAll() {
|
|
79
|
+
public getAll() {
|
|
78
80
|
return this[this.propertyName];
|
|
79
81
|
}
|
|
80
82
|
|
|
@@ -84,7 +86,7 @@ export default class Collection {
|
|
|
84
86
|
* @public
|
|
85
87
|
* @memberof Collection
|
|
86
88
|
*/
|
|
87
|
-
setAll(set) {
|
|
89
|
+
public setAll(set: object) {
|
|
88
90
|
this[this.propertyName] = set;
|
|
89
91
|
|
|
90
92
|
return this.getAll();
|
|
@@ -4,18 +4,22 @@ import {ERROR_DICTIONARY} from '../../constants';
|
|
|
4
4
|
* Extended Error object to signify captcha related errors
|
|
5
5
|
*/
|
|
6
6
|
export default class CaptchaError extends Error {
|
|
7
|
+
code: any;
|
|
8
|
+
error: any;
|
|
9
|
+
sdkMessage: any;
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
constructor(message = ERROR_DICTIONARY.CAPTCHA.MESSAGE, error = null) {
|
|
12
|
+
*
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {String} [message]
|
|
15
|
+
* @param {Object} [error]
|
|
16
|
+
*/
|
|
17
|
+
constructor(message: string = ERROR_DICTIONARY.CAPTCHA.MESSAGE, error: any = null) {
|
|
14
18
|
super(message);
|
|
15
19
|
this.name = ERROR_DICTIONARY.CAPTCHA.NAME;
|
|
16
20
|
this.sdkMessage = ERROR_DICTIONARY.CAPTCHA.MESSAGE;
|
|
17
21
|
this.error = error;
|
|
18
|
-
this.stack = error ? error.stack :
|
|
22
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
19
23
|
this.code = ERROR_DICTIONARY.CAPTCHA.CODE;
|
|
20
24
|
}
|
|
21
25
|
}
|
|
@@ -4,18 +4,23 @@ import {ERROR_DICTIONARY} from '../../constants';
|
|
|
4
4
|
* Extended Error object to signify the intent to join for unclaimed PMR scenarios
|
|
5
5
|
*/
|
|
6
6
|
export default class IntentToJoinError extends Error {
|
|
7
|
+
code: any;
|
|
8
|
+
error: any;
|
|
9
|
+
joinIntentRequired: any;
|
|
10
|
+
sdkMessage: any;
|
|
11
|
+
|
|
7
12
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
constructor(message = ERROR_DICTIONARY.INTENT_TO_JOIN.MESSAGE, error = null) {
|
|
13
|
+
*
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param {String} [message]
|
|
16
|
+
* @param {Object} [error]
|
|
17
|
+
*/
|
|
18
|
+
constructor(message: string = ERROR_DICTIONARY.INTENT_TO_JOIN.MESSAGE, error: any = null) {
|
|
14
19
|
super(message);
|
|
15
20
|
this.name = ERROR_DICTIONARY.INTENT_TO_JOIN.NAME;
|
|
16
21
|
this.sdkMessage = ERROR_DICTIONARY.INTENT_TO_JOIN.MESSAGE;
|
|
17
22
|
this.error = error;
|
|
18
|
-
this.stack = error ? error.stack :
|
|
23
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
19
24
|
this.joinIntentRequired = true;
|
|
20
25
|
this.code = ERROR_DICTIONARY.INTENT_TO_JOIN.CODE;
|
|
21
26
|
}
|
|
@@ -4,19 +4,28 @@ import {ERROR_DICTIONARY} from '../../constants';
|
|
|
4
4
|
* Extended Error object to signify a join meeting error
|
|
5
5
|
*/
|
|
6
6
|
export default class JoinMeetingError extends Error {
|
|
7
|
+
code: any;
|
|
8
|
+
error: any;
|
|
9
|
+
joinOptions: any;
|
|
10
|
+
sdkMessage: any;
|
|
11
|
+
|
|
7
12
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
constructor(
|
|
13
|
+
*
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param {Object} [options]
|
|
16
|
+
* @param {String} [message]
|
|
17
|
+
* @param {Object} [error]
|
|
18
|
+
*/
|
|
19
|
+
constructor(
|
|
20
|
+
options: object = {},
|
|
21
|
+
message: string = ERROR_DICTIONARY.JOIN_MEETING.MESSAGE,
|
|
22
|
+
error: any = null
|
|
23
|
+
) {
|
|
15
24
|
super(message);
|
|
16
25
|
this.name = ERROR_DICTIONARY.JOIN_MEETING.NAME;
|
|
17
26
|
this.sdkMessage = ERROR_DICTIONARY.JOIN_MEETING.MESSAGE;
|
|
18
27
|
this.error = error;
|
|
19
|
-
this.stack = error ? error.stack :
|
|
28
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
20
29
|
this.joinOptions = options;
|
|
21
30
|
this.code = ERROR_DICTIONARY.JOIN_MEETING.CODE;
|
|
22
31
|
}
|
|
@@ -4,18 +4,22 @@ import {ERROR_DICTIONARY} from '../../constants';
|
|
|
4
4
|
* Extended Error object for media errors
|
|
5
5
|
*/
|
|
6
6
|
export default class MediaError extends Error {
|
|
7
|
+
code: any;
|
|
8
|
+
error: any;
|
|
9
|
+
sdkMessage: any;
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
constructor(message = ERROR_DICTIONARY.MEDIA.MESSAGE, error = null) {
|
|
12
|
+
*
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {String} [message]
|
|
15
|
+
* @param {Object} [error]
|
|
16
|
+
*/
|
|
17
|
+
constructor(message: string = ERROR_DICTIONARY.MEDIA.MESSAGE, error: any = null) {
|
|
14
18
|
super(message);
|
|
15
19
|
this.name = ERROR_DICTIONARY.RECONNECTION.NAME;
|
|
16
20
|
this.sdkMessage = ERROR_DICTIONARY.MEDIA.MESSAGE;
|
|
17
21
|
this.error = error;
|
|
18
|
-
this.stack = error ? error.stack :
|
|
22
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
19
23
|
this.code = ERROR_DICTIONARY.RECONNECTION.CODE;
|
|
20
24
|
}
|
|
21
25
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as MEETINGCONSTANTS
|
|
1
|
+
import * as MEETINGCONSTANTS from '../../constants';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Extended Error object for general parameter errors
|
|
@@ -7,13 +7,17 @@ export default class ParameterError extends Error {
|
|
|
7
7
|
sdkMessage: string;
|
|
8
8
|
error: null;
|
|
9
9
|
code: number;
|
|
10
|
+
|
|
10
11
|
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
constructor(
|
|
12
|
+
*
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {String} [message]
|
|
15
|
+
* @param {Object} [error]
|
|
16
|
+
*/
|
|
17
|
+
constructor(
|
|
18
|
+
message: string = MEETINGCONSTANTS.ERROR_DICTIONARY.PARAMETER.MESSAGE,
|
|
19
|
+
error: any = null
|
|
20
|
+
) {
|
|
17
21
|
super(message);
|
|
18
22
|
|
|
19
23
|
if (Error.captureStackTrace) {
|
|
@@ -4,18 +4,22 @@ import {ERROR_DICTIONARY} from '../../constants';
|
|
|
4
4
|
* Extended Error object to signify password related errors
|
|
5
5
|
*/
|
|
6
6
|
export default class PasswordError extends Error {
|
|
7
|
+
code: any;
|
|
8
|
+
error: any;
|
|
9
|
+
sdkMessage: any;
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
constructor(message = ERROR_DICTIONARY.PASSWORD.MESSAGE, error = null) {
|
|
12
|
+
*
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {String} [message]
|
|
15
|
+
* @param {Object} [error]
|
|
16
|
+
*/
|
|
17
|
+
constructor(message: string = ERROR_DICTIONARY.PASSWORD.MESSAGE, error: any = null) {
|
|
14
18
|
super(message);
|
|
15
19
|
this.name = ERROR_DICTIONARY.PASSWORD.NAME;
|
|
16
20
|
this.sdkMessage = ERROR_DICTIONARY.PASSWORD.MESSAGE;
|
|
17
21
|
this.error = error;
|
|
18
|
-
this.stack = error ? error.stack :
|
|
22
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
19
23
|
this.code = ERROR_DICTIONARY.PASSWORD.CODE;
|
|
20
24
|
}
|
|
21
25
|
}
|
|
@@ -4,17 +4,21 @@ import {ERROR_DICTIONARY} from '../../constants';
|
|
|
4
4
|
* Extended Error object for general parameter errors
|
|
5
5
|
*/
|
|
6
6
|
export default class PermissionError extends Error {
|
|
7
|
+
code: any;
|
|
8
|
+
error: any;
|
|
9
|
+
sdkMessage: any;
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
constructor(message = ERROR_DICTIONARY.PERMISSION.MESSAGE, error = null) {
|
|
12
|
+
* @constructor
|
|
13
|
+
* @param {String} [message]
|
|
14
|
+
* @param {Object} [error]
|
|
15
|
+
*/
|
|
16
|
+
constructor(message: string = ERROR_DICTIONARY.PERMISSION.MESSAGE, error: any = null) {
|
|
13
17
|
super(message);
|
|
14
18
|
this.name = ERROR_DICTIONARY.PERMISSION.NAME;
|
|
15
19
|
this.sdkMessage = ERROR_DICTIONARY.PERMISSION.MESSAGE;
|
|
16
20
|
this.error = error;
|
|
17
|
-
this.stack = error ? error.stack :
|
|
21
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
18
22
|
this.code = ERROR_DICTIONARY.PERMISSION.CODE;
|
|
19
23
|
}
|
|
20
24
|
}
|
|
File without changes
|
|
@@ -4,18 +4,22 @@ import {ERROR_DICTIONARY} from '../../constants';
|
|
|
4
4
|
* Extended Error object to signify the intent to join for unclaimed PMR scenarios
|
|
5
5
|
*/
|
|
6
6
|
export default class ReconnectionError extends Error {
|
|
7
|
+
code: any;
|
|
8
|
+
error: any;
|
|
9
|
+
sdkMessage: any;
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
constructor(message = ERROR_DICTIONARY.RECONNECTION.MESSAGE, error = null) {
|
|
12
|
+
*
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {String} [message]
|
|
15
|
+
* @param {Object} [error]
|
|
16
|
+
*/
|
|
17
|
+
constructor(message: string = ERROR_DICTIONARY.RECONNECTION.MESSAGE, error: any = null) {
|
|
14
18
|
super(message);
|
|
15
19
|
this.name = ERROR_DICTIONARY.RECONNECTION.NAME;
|
|
16
20
|
this.sdkMessage = ERROR_DICTIONARY.RECONNECTION.MESSAGE;
|
|
17
21
|
this.error = error;
|
|
18
|
-
this.stack = error ? error.stack :
|
|
22
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
19
23
|
this.code = ERROR_DICTIONARY.RECONNECTION.CODE;
|
|
20
24
|
}
|
|
21
25
|
}
|
|
@@ -4,18 +4,22 @@ import {ERROR_DICTIONARY} from '../../constants';
|
|
|
4
4
|
* Extended Error object for Stats Errors
|
|
5
5
|
*/
|
|
6
6
|
export default class StatsError extends Error {
|
|
7
|
+
code: any;
|
|
8
|
+
error: any;
|
|
9
|
+
sdkMessage: any;
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
constructor(message = ERROR_DICTIONARY.STATS.MESSAGE, error = null) {
|
|
12
|
+
*
|
|
13
|
+
* @constructor
|
|
14
|
+
* @param {String} [message]
|
|
15
|
+
* @param {Object} [error]
|
|
16
|
+
*/
|
|
17
|
+
constructor(message: string = ERROR_DICTIONARY.STATS.MESSAGE, error: any = null) {
|
|
14
18
|
super(message);
|
|
15
19
|
this.name = ERROR_DICTIONARY.STATS.NAME;
|
|
16
20
|
this.sdkMessage = ERROR_DICTIONARY.STATS.MESSAGE;
|
|
17
21
|
this.error = error;
|
|
18
|
-
this.stack = error ? error.stack :
|
|
22
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
19
23
|
this.code = ERROR_DICTIONARY.STATS.CODE;
|
|
20
24
|
}
|
|
21
25
|
}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
// 3) Any errors we generate from the SDK can be split into various categories
|
|
6
6
|
// Parameter validation, user action, connection, media specific(They can have different range)
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
// TODO: all the errors from the server need to be captured
|
|
10
9
|
|
|
11
10
|
// add a way to log and send metrics if needed
|
|
@@ -20,11 +19,13 @@ const WebExMeetingsErrors = {};
|
|
|
20
19
|
* @param {string} [message] - Error message
|
|
21
20
|
* @returns {WebexMeetingsError}
|
|
22
21
|
*/
|
|
23
|
-
export function createMeetingsError(code, message) {
|
|
22
|
+
export function createMeetingsError(code?: number, message?: string) {
|
|
24
23
|
code = typeof code === 'number' ? code : 0;
|
|
25
24
|
message = typeof message === 'string' && message ? message : 'Unknown error';
|
|
26
25
|
|
|
27
|
-
return WebExMeetingsErrors[code]
|
|
26
|
+
return WebExMeetingsErrors[code]
|
|
27
|
+
? new WebExMeetingsErrors[code]()
|
|
28
|
+
: new WebexMeetingsError(code, message);
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
/**
|
|
@@ -56,14 +57,16 @@ class UserNotJoinedError extends WebexMeetingsError {
|
|
|
56
57
|
static CODE = 30102;
|
|
57
58
|
|
|
58
59
|
constructor() {
|
|
59
|
-
super(
|
|
60
|
+
super(
|
|
61
|
+
UserNotJoinedError.CODE,
|
|
62
|
+
'User currently not in meeting. Please join a meeting before adding media.'
|
|
63
|
+
);
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
export {UserNotJoinedError};
|
|
64
68
|
WebExMeetingsErrors[UserNotJoinedError.CODE] = UserNotJoinedError;
|
|
65
69
|
|
|
66
|
-
|
|
67
70
|
/**
|
|
68
71
|
* @class NoMediaEstablishedYetError
|
|
69
72
|
* @classdesc Raised whenever the user has not established media yet.
|
|
@@ -82,7 +85,6 @@ class NoMediaEstablishedYetError extends WebexMeetingsError {
|
|
|
82
85
|
export {NoMediaEstablishedYetError};
|
|
83
86
|
WebExMeetingsErrors[NoMediaEstablishedYetError.CODE] = NoMediaEstablishedYetError;
|
|
84
87
|
|
|
85
|
-
|
|
86
88
|
/**
|
|
87
89
|
* @class UserInLobbyError
|
|
88
90
|
* @classdesc Raised whenever the user is in lobby and not joined yet.
|
|
@@ -101,7 +103,6 @@ class UserInLobbyError extends WebexMeetingsError {
|
|
|
101
103
|
export {UserInLobbyError};
|
|
102
104
|
WebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;
|
|
103
105
|
|
|
104
|
-
|
|
105
106
|
/**
|
|
106
107
|
* @class IceGatheringFailed
|
|
107
108
|
* @classdesc Raised whenever ice gathering fails.
|