@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
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
const HostUtils = {};
|
|
1
|
+
const HostUtils: any = {};
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* parse the relevant host values that we care about: id
|
|
5
5
|
* @param {Object} host
|
|
6
6
|
* @returns {Object} parsed host or null if host was undefined
|
|
7
7
|
*/
|
|
8
|
-
HostUtils.parse = (host) => {
|
|
8
|
+
HostUtils.parse = (host: object) => {
|
|
9
9
|
if (host) {
|
|
10
10
|
return {
|
|
11
|
-
hostId: HostUtils.getId(host)
|
|
11
|
+
hostId: HostUtils.getId(host),
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -22,7 +22,7 @@ HostUtils.parse = (host) => {
|
|
|
22
22
|
* @returns {Object}
|
|
23
23
|
* previous: {Object} old host, current: {Object} new host, updates: {isNewHost: {boolean}} boolean update values
|
|
24
24
|
*/
|
|
25
|
-
HostUtils.getHosts = (oldHost, newHost) => {
|
|
25
|
+
HostUtils.getHosts = (oldHost: object, newHost: object) => {
|
|
26
26
|
const previous = oldHost && HostUtils.parse(oldHost);
|
|
27
27
|
const current = newHost && HostUtils.parse(newHost);
|
|
28
28
|
|
|
@@ -30,8 +30,9 @@ HostUtils.getHosts = (oldHost, newHost) => {
|
|
|
30
30
|
previous,
|
|
31
31
|
current,
|
|
32
32
|
updates: {
|
|
33
|
-
isNewHost:
|
|
34
|
-
|
|
33
|
+
isNewHost:
|
|
34
|
+
previous && current ? HostUtils.isDifferentHosts(previous.hostId, current.hostId) : true,
|
|
35
|
+
},
|
|
35
36
|
};
|
|
36
37
|
};
|
|
37
38
|
|
|
@@ -41,14 +42,14 @@ HostUtils.getHosts = (oldHost, newHost) => {
|
|
|
41
42
|
* @param {String} currentId
|
|
42
43
|
* @returns {Boolean}
|
|
43
44
|
*/
|
|
44
|
-
HostUtils.isDifferentHosts = (previousId, currentId) => previousId !== currentId;
|
|
45
|
+
HostUtils.isDifferentHosts = (previousId: string, currentId: string) => previousId !== currentId;
|
|
45
46
|
|
|
46
47
|
/**
|
|
47
48
|
* Extract the id from the host object
|
|
48
49
|
* @param {Object} host
|
|
49
50
|
* @returns {String}
|
|
50
51
|
*/
|
|
51
|
-
HostUtils.getId = (host) => {
|
|
52
|
+
HostUtils.getId = (host: any) => {
|
|
52
53
|
if (!host) {
|
|
53
54
|
return null;
|
|
54
55
|
}
|
|
@@ -19,14 +19,14 @@ import {
|
|
|
19
19
|
} from '../constants';
|
|
20
20
|
import Metrics from '../metrics';
|
|
21
21
|
import {eventType} from '../metrics/config';
|
|
22
|
-
import InfoUtils from '
|
|
23
|
-
import FullState from '
|
|
24
|
-
import SelfUtils from '
|
|
25
|
-
import HostUtils from '
|
|
26
|
-
import ControlsUtils from '
|
|
27
|
-
import EmbeddedAppsUtils from '
|
|
28
|
-
import MediaSharesUtils from '
|
|
29
|
-
import LocusDeltaParser from '
|
|
22
|
+
import InfoUtils from './infoUtils';
|
|
23
|
+
import FullState from './fullState';
|
|
24
|
+
import SelfUtils from './selfUtils';
|
|
25
|
+
import HostUtils from './hostUtils';
|
|
26
|
+
import ControlsUtils from './controlsUtils';
|
|
27
|
+
import EmbeddedAppsUtils from './embeddedAppsUtils';
|
|
28
|
+
import MediaSharesUtils from './mediaSharesUtils';
|
|
29
|
+
import LocusDeltaParser from './parser';
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
|
|
@@ -35,6 +35,35 @@ import LocusDeltaParser from '../locus-info/parser';
|
|
|
35
35
|
* @class LocusInfo
|
|
36
36
|
*/
|
|
37
37
|
export default class LocusInfo extends EventsScope {
|
|
38
|
+
compareAndUpdateFlags: any;
|
|
39
|
+
emitChange: any;
|
|
40
|
+
locusParser: any;
|
|
41
|
+
meetingId: any;
|
|
42
|
+
parsedLocus: any;
|
|
43
|
+
updateMeeting: any;
|
|
44
|
+
webex: any;
|
|
45
|
+
aclUrl: any;
|
|
46
|
+
baseSequence: any;
|
|
47
|
+
created: any;
|
|
48
|
+
deltaParticipants: any;
|
|
49
|
+
identities: any;
|
|
50
|
+
membership: any;
|
|
51
|
+
participants: any;
|
|
52
|
+
participantsUrl: any;
|
|
53
|
+
replaces: any;
|
|
54
|
+
scheduledMeeting: any;
|
|
55
|
+
sequence: any;
|
|
56
|
+
controls: any;
|
|
57
|
+
conversationUrl: any;
|
|
58
|
+
embeddedApps: any;
|
|
59
|
+
fullState: any;
|
|
60
|
+
host: any;
|
|
61
|
+
info: any;
|
|
62
|
+
mediaShares: any;
|
|
63
|
+
replace: any;
|
|
64
|
+
url: any;
|
|
65
|
+
services: any;
|
|
66
|
+
|
|
38
67
|
constructor(updateMeeting, webex, meetingId) {
|
|
39
68
|
super();
|
|
40
69
|
this.parsedLocus = {
|
|
@@ -55,7 +84,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
55
84
|
* @param {Meeting} meeting
|
|
56
85
|
* @returns {undefined}
|
|
57
86
|
*/
|
|
58
|
-
applyLocusDeltaData(action, locus, meeting) {
|
|
87
|
+
applyLocusDeltaData(action: string, locus: any, meeting: any) {
|
|
59
88
|
const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;
|
|
60
89
|
|
|
61
90
|
switch (action) {
|
|
@@ -94,7 +123,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
94
123
|
* @param {Meeting} meeting
|
|
95
124
|
* @returns {undefined}
|
|
96
125
|
*/
|
|
97
|
-
handleLocusDelta(locus, meeting) {
|
|
126
|
+
handleLocusDelta(locus: any, meeting: any) {
|
|
98
127
|
// register a function to process delta actions
|
|
99
128
|
if (!this.locusParser.onDeltaAction) {
|
|
100
129
|
// delta action, along with associated loci
|
|
@@ -112,7 +141,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
112
141
|
* @returns {undefined}
|
|
113
142
|
* @memberof LocusInfo
|
|
114
143
|
*/
|
|
115
|
-
init(locus = {}) {
|
|
144
|
+
init(locus: any = {}) {
|
|
116
145
|
this.created = locus.created || null;
|
|
117
146
|
this.scheduledMeeting = locus.meeting || null;
|
|
118
147
|
this.participantsUrl = locus.participantsUrl || null;
|
|
@@ -157,6 +186,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
157
186
|
this.updateSelf(locus.self, locus.participants);
|
|
158
187
|
this.updateHostInfo(locus.host);
|
|
159
188
|
this.updateMediaShares(locus.mediaShares);
|
|
189
|
+
this.updateServices(locus.links?.services);
|
|
160
190
|
}
|
|
161
191
|
|
|
162
192
|
/**
|
|
@@ -164,7 +194,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
164
194
|
* @returns {undefined}
|
|
165
195
|
* @memberof LocusInfo
|
|
166
196
|
*/
|
|
167
|
-
initialSetup(locus) {
|
|
197
|
+
initialSetup(locus: object) {
|
|
168
198
|
this.onFullLocus(locus);
|
|
169
199
|
|
|
170
200
|
// Change it to true after it receives it first locus object
|
|
@@ -177,7 +207,8 @@ export default class LocusInfo extends EventsScope {
|
|
|
177
207
|
* @returns {undefined}
|
|
178
208
|
* @memberof LocusInfo
|
|
179
209
|
*/
|
|
180
|
-
parse(meeting, data) {
|
|
210
|
+
parse(meeting: any, data: any) {
|
|
211
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
181
212
|
const {eventType} = data;
|
|
182
213
|
|
|
183
214
|
LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);
|
|
@@ -217,18 +248,19 @@ export default class LocusInfo extends EventsScope {
|
|
|
217
248
|
* @returns {undefined}
|
|
218
249
|
* @memberof LocusInfo
|
|
219
250
|
*/
|
|
220
|
-
emitScoped(scope, eventName, args) {
|
|
251
|
+
emitScoped(scope?: any, eventName?: string, args?: any) {
|
|
221
252
|
return this.emit(scope, eventName, args);
|
|
222
253
|
}
|
|
223
254
|
|
|
224
255
|
/**
|
|
225
256
|
* updates the locus with full locus object
|
|
226
257
|
* @param {object} locus locus object
|
|
227
|
-
* @param {
|
|
258
|
+
* @param {string} eventType particulat locus event
|
|
228
259
|
* @returns {object} null
|
|
229
260
|
* @memberof LocusInfo
|
|
230
261
|
*/
|
|
231
|
-
|
|
262
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
263
|
+
onFullLocus(locus: any, eventType?: string) {
|
|
232
264
|
if (!locus) {
|
|
233
265
|
LoggerProxy.logger.error(
|
|
234
266
|
'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'
|
|
@@ -252,7 +284,8 @@ export default class LocusInfo extends EventsScope {
|
|
|
252
284
|
* @returns {undefined}
|
|
253
285
|
* @memberof LocusInfo
|
|
254
286
|
*/
|
|
255
|
-
|
|
287
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
288
|
+
handleOneOnOneEvent(eventType: string) {
|
|
256
289
|
if (
|
|
257
290
|
this.parsedLocus.fullState.type === _CALL_ ||
|
|
258
291
|
this.parsedLocus.fullState.type === _SIP_BRIDGE_
|
|
@@ -295,7 +328,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
295
328
|
* @returns {undefined}
|
|
296
329
|
* @memberof LocusInfo
|
|
297
330
|
*/
|
|
298
|
-
onDeltaLocus(locus) {
|
|
331
|
+
onDeltaLocus(locus: any) {
|
|
299
332
|
this.updateLocusInfo(locus);
|
|
300
333
|
this.updateParticipants(locus.participants);
|
|
301
334
|
this.isMeetingActive();
|
|
@@ -307,6 +340,13 @@ export default class LocusInfo extends EventsScope {
|
|
|
307
340
|
* @memberof LocusInfo
|
|
308
341
|
*/
|
|
309
342
|
updateLocusInfo(locus) {
|
|
343
|
+
if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {
|
|
344
|
+
// When moved to a breakout session locus sends a message for the previous locus
|
|
345
|
+
// indicating that we have been moved. It isn't helpful to continue parsing this
|
|
346
|
+
// as it gets interpreted as if we have left the call
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
|
|
310
350
|
this.updateControls(locus.controls);
|
|
311
351
|
this.updateConversationUrl(locus.conversationUrl, locus.info);
|
|
312
352
|
this.updateCreated(locus.created);
|
|
@@ -324,6 +364,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
324
364
|
this.updateMemberShip(locus.membership);
|
|
325
365
|
this.updateIdentifiers(locus.identities);
|
|
326
366
|
this.updateEmbeddedApps(locus.embeddedApps);
|
|
367
|
+
this.updateServices(locus.links?.services);
|
|
327
368
|
this.compareAndUpdate();
|
|
328
369
|
// update which required to compare different objects from locus
|
|
329
370
|
}
|
|
@@ -334,7 +375,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
334
375
|
* @returns {Array}
|
|
335
376
|
* @memberof LocusInfo
|
|
336
377
|
*/
|
|
337
|
-
getLocusPartner(participants
|
|
378
|
+
getLocusPartner(participants: Array<any>, self: any) {
|
|
338
379
|
if (!participants || participants.length === 0) {
|
|
339
380
|
return null;
|
|
340
381
|
}
|
|
@@ -345,6 +386,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
345
386
|
self &&
|
|
346
387
|
participant.identity !== self.identity &&
|
|
347
388
|
(participants.length <= 2 || (participant.type === _USER_ && !participant.removed))
|
|
389
|
+
// @ts-ignore
|
|
348
390
|
) || this.partner
|
|
349
391
|
);
|
|
350
392
|
}
|
|
@@ -359,6 +401,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
359
401
|
this.parsedLocus.fullState.type === _CALL_ ||
|
|
360
402
|
this.parsedLocus.fullState.type === _SIP_BRIDGE_
|
|
361
403
|
) {
|
|
404
|
+
// @ts-ignore
|
|
362
405
|
const partner = this.getLocusPartner(this.participants, this.self);
|
|
363
406
|
|
|
364
407
|
this.updateMeeting({partner});
|
|
@@ -390,8 +433,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
390
433
|
shouldLeave: false,
|
|
391
434
|
}
|
|
392
435
|
);
|
|
393
|
-
}
|
|
394
|
-
else if (
|
|
436
|
+
} else if (
|
|
395
437
|
partner.state === MEETING_STATE.STATES.LEFT &&
|
|
396
438
|
this.parsedLocus.self &&
|
|
397
439
|
(this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||
|
|
@@ -414,8 +456,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
414
456
|
this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,
|
|
415
457
|
}
|
|
416
458
|
);
|
|
417
|
-
}
|
|
418
|
-
else if (
|
|
459
|
+
} else if (
|
|
419
460
|
this.parsedLocus.self &&
|
|
420
461
|
this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&
|
|
421
462
|
(partner.state === MEETING_STATE.STATES.LEFT ||
|
|
@@ -439,11 +480,11 @@ export default class LocusInfo extends EventsScope {
|
|
|
439
480
|
}
|
|
440
481
|
);
|
|
441
482
|
}
|
|
442
|
-
}
|
|
443
|
-
else if (this.parsedLocus.fullState.type === _MEETING_) {
|
|
483
|
+
} else if (this.parsedLocus.fullState.type === _MEETING_) {
|
|
444
484
|
if (
|
|
445
485
|
this.fullState &&
|
|
446
486
|
(this.fullState.state === LOCUS.STATE.INACTIVE ||
|
|
487
|
+
// @ts-ignore
|
|
447
488
|
this.fullState.state === LOCUS.STATE.TERMINATING)
|
|
448
489
|
) {
|
|
449
490
|
LoggerProxy.logger.warn(
|
|
@@ -464,8 +505,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
464
505
|
shouldLeave: false,
|
|
465
506
|
}
|
|
466
507
|
);
|
|
467
|
-
}
|
|
468
|
-
else if (this.fullState && this.fullState.removed) {
|
|
508
|
+
} else if (this.fullState && this.fullState.removed) {
|
|
469
509
|
// user has been dropped from a meeting
|
|
470
510
|
Metrics.postEvent({
|
|
471
511
|
event: eventType.REMOTE_ENDED,
|
|
@@ -499,8 +539,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
499
539
|
}
|
|
500
540
|
);
|
|
501
541
|
}
|
|
502
|
-
}
|
|
503
|
-
else {
|
|
542
|
+
} else {
|
|
504
543
|
LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');
|
|
505
544
|
}
|
|
506
545
|
}
|
|
@@ -543,8 +582,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
543
582
|
canAssignHost: true,
|
|
544
583
|
}
|
|
545
584
|
);
|
|
546
|
-
}
|
|
547
|
-
else {
|
|
585
|
+
} else {
|
|
548
586
|
this.emitScoped(
|
|
549
587
|
{
|
|
550
588
|
file: 'locus-info',
|
|
@@ -565,13 +603,13 @@ export default class LocusInfo extends EventsScope {
|
|
|
565
603
|
* @param {Array} [participants] - The participants to update against.
|
|
566
604
|
* @returns {void}
|
|
567
605
|
*/
|
|
568
|
-
updateParticipantDeltas(participants = []) {
|
|
606
|
+
updateParticipantDeltas(participants: Array<any> = []) {
|
|
569
607
|
// Used to find a participant within a participants collection.
|
|
570
608
|
const findParticipant = (participant, collection) =>
|
|
571
609
|
collection.find((item) => item.person.id === participant.person.id);
|
|
572
610
|
|
|
573
611
|
// Generates an object that indicates which state properties have changed.
|
|
574
|
-
const generateDelta = (prevState = {}, newState = {}) => {
|
|
612
|
+
const generateDelta = (prevState: any = {}, newState: any = {}) => {
|
|
575
613
|
// Setup deltas.
|
|
576
614
|
const deltas = {
|
|
577
615
|
audioStatus: prevState.audioStatus !== newState.audioStatus,
|
|
@@ -614,7 +652,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
614
652
|
* @returns {Array} updatedParticipants
|
|
615
653
|
* @memberof LocusInfo
|
|
616
654
|
*/
|
|
617
|
-
updateParticipants(participants) {
|
|
655
|
+
updateParticipants(participants: object) {
|
|
618
656
|
this.emitScoped(
|
|
619
657
|
{
|
|
620
658
|
file: 'locus-info',
|
|
@@ -636,7 +674,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
636
674
|
* @returns {undefined}
|
|
637
675
|
* @memberof LocusInfo
|
|
638
676
|
*/
|
|
639
|
-
updateControls(controls) {
|
|
677
|
+
updateControls(controls: object) {
|
|
640
678
|
if (controls && !isEqual(this.controls, controls)) {
|
|
641
679
|
this.parsedLocus.controls = ControlsUtils.parse(controls);
|
|
642
680
|
const {
|
|
@@ -646,6 +684,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
646
684
|
hasMeetingContainerChanged,
|
|
647
685
|
hasTranscribeChanged,
|
|
648
686
|
hasEntryExitToneChanged,
|
|
687
|
+
hasBreakoutChanged,
|
|
649
688
|
},
|
|
650
689
|
current,
|
|
651
690
|
} = ControlsUtils.getControls(this.controls, controls);
|
|
@@ -656,13 +695,11 @@ export default class LocusInfo extends EventsScope {
|
|
|
656
695
|
if (hasRecordingPausedChanged) {
|
|
657
696
|
if (current.record.paused) {
|
|
658
697
|
state = RECORDING_STATE.PAUSED;
|
|
659
|
-
}
|
|
660
|
-
else {
|
|
698
|
+
} else {
|
|
661
699
|
// state will be `IDLE` if the recording is not active, even when there is a `pause` status change.
|
|
662
700
|
state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;
|
|
663
701
|
}
|
|
664
|
-
}
|
|
665
|
-
else if (hasRecordingChanged) {
|
|
702
|
+
} else if (hasRecordingChanged) {
|
|
666
703
|
state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;
|
|
667
704
|
}
|
|
668
705
|
|
|
@@ -711,6 +748,21 @@ export default class LocusInfo extends EventsScope {
|
|
|
711
748
|
);
|
|
712
749
|
}
|
|
713
750
|
|
|
751
|
+
if (hasBreakoutChanged) {
|
|
752
|
+
const {breakout} = current;
|
|
753
|
+
|
|
754
|
+
this.emitScoped(
|
|
755
|
+
{
|
|
756
|
+
file: 'locus-info',
|
|
757
|
+
function: 'updateControls',
|
|
758
|
+
},
|
|
759
|
+
LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,
|
|
760
|
+
{
|
|
761
|
+
breakout,
|
|
762
|
+
}
|
|
763
|
+
);
|
|
764
|
+
}
|
|
765
|
+
|
|
714
766
|
if (hasEntryExitToneChanged) {
|
|
715
767
|
const {entryExitTone} = current;
|
|
716
768
|
|
|
@@ -721,7 +773,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
721
773
|
},
|
|
722
774
|
LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,
|
|
723
775
|
{
|
|
724
|
-
entryExitTone
|
|
776
|
+
entryExitTone,
|
|
725
777
|
}
|
|
726
778
|
);
|
|
727
779
|
|
|
@@ -738,12 +790,11 @@ export default class LocusInfo extends EventsScope {
|
|
|
738
790
|
* @returns {undefined}
|
|
739
791
|
* @memberof LocusInfo
|
|
740
792
|
*/
|
|
741
|
-
updateConversationUrl(conversationUrl, info) {
|
|
793
|
+
updateConversationUrl(conversationUrl: string, info: any) {
|
|
742
794
|
if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {
|
|
743
795
|
this.conversationUrl = conversationUrl;
|
|
744
796
|
this.updateMeeting({conversationUrl});
|
|
745
|
-
}
|
|
746
|
-
else if (
|
|
797
|
+
} else if (
|
|
747
798
|
info &&
|
|
748
799
|
info.conversationUrl &&
|
|
749
800
|
!isEqual(this.conversationUrl, info.conversationUrl)
|
|
@@ -758,18 +809,39 @@ export default class LocusInfo extends EventsScope {
|
|
|
758
809
|
* @returns {undefined}
|
|
759
810
|
* @memberof LocusInfo
|
|
760
811
|
*/
|
|
761
|
-
updateCreated(created) {
|
|
812
|
+
updateCreated(created: object) {
|
|
762
813
|
if (created && !isEqual(this.created, created)) {
|
|
763
814
|
this.created = created;
|
|
764
815
|
}
|
|
765
816
|
}
|
|
766
817
|
|
|
818
|
+
/**
|
|
819
|
+
* @param {Object} services
|
|
820
|
+
* @returns {undefined}
|
|
821
|
+
* @memberof LocusInfo
|
|
822
|
+
*/
|
|
823
|
+
updateServices(services: Record<'breakout' | 'record', {url: string}>) {
|
|
824
|
+
if (services && !isEqual(this.services, services)) {
|
|
825
|
+
this.services = services;
|
|
826
|
+
this.emitScoped(
|
|
827
|
+
{
|
|
828
|
+
file: 'locus-info',
|
|
829
|
+
function: 'updateServices',
|
|
830
|
+
},
|
|
831
|
+
LOCUSINFO.EVENTS.LINKS_SERVICES,
|
|
832
|
+
{
|
|
833
|
+
services,
|
|
834
|
+
}
|
|
835
|
+
);
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
|
|
767
839
|
/**
|
|
768
840
|
* @param {Object} fullState
|
|
769
841
|
* @returns {undefined}
|
|
770
842
|
* @memberof LocusInfo
|
|
771
843
|
*/
|
|
772
|
-
updateFullState(fullState) {
|
|
844
|
+
updateFullState(fullState: object) {
|
|
773
845
|
if (fullState && !isEqual(this.fullState, fullState)) {
|
|
774
846
|
const result = FullState.getFullState(this.fullState, fullState);
|
|
775
847
|
|
|
@@ -813,7 +885,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
813
885
|
* @memberof LocusInfo
|
|
814
886
|
* emits internal event locus_info_update_host
|
|
815
887
|
*/
|
|
816
|
-
updateHostInfo(host) {
|
|
888
|
+
updateHostInfo(host: object) {
|
|
817
889
|
if (host && !isEqual(this.host, host)) {
|
|
818
890
|
const parsedHosts = HostUtils.getHosts(this.host, host);
|
|
819
891
|
|
|
@@ -834,8 +906,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
834
906
|
);
|
|
835
907
|
}
|
|
836
908
|
this.host = host;
|
|
837
|
-
}
|
|
838
|
-
else {
|
|
909
|
+
} else {
|
|
839
910
|
this.compareAndUpdateFlags.compareSelfAndHost = false;
|
|
840
911
|
}
|
|
841
912
|
}
|
|
@@ -846,7 +917,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
846
917
|
* @returns {undefined}
|
|
847
918
|
* @memberof LocusInfo
|
|
848
919
|
*/
|
|
849
|
-
updateMeetingInfo(info, self) {
|
|
920
|
+
updateMeetingInfo(info: object, self?: object) {
|
|
850
921
|
if (info && !isEqual(this.info, info)) {
|
|
851
922
|
const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];
|
|
852
923
|
const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);
|
|
@@ -894,7 +965,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
894
965
|
* @returns {undefined}
|
|
895
966
|
* @memberof LocusInfo
|
|
896
967
|
*/
|
|
897
|
-
updateEmbeddedApps(embeddedApps) {
|
|
968
|
+
updateEmbeddedApps(embeddedApps: object) {
|
|
898
969
|
// don't do anything if the arrays of apps haven't changed significantly
|
|
899
970
|
if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {
|
|
900
971
|
return;
|
|
@@ -922,7 +993,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
922
993
|
* @memberof LocusInfo
|
|
923
994
|
* emits internal event locus_info_update_media_shares
|
|
924
995
|
*/
|
|
925
|
-
updateMediaShares(mediaShares) {
|
|
996
|
+
updateMediaShares(mediaShares: object) {
|
|
926
997
|
if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {
|
|
927
998
|
const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);
|
|
928
999
|
|
|
@@ -948,7 +1019,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
948
1019
|
* @returns {undefined}
|
|
949
1020
|
* @memberof LocusInfo
|
|
950
1021
|
*/
|
|
951
|
-
updateParticipantsUrl(participantsUrl) {
|
|
1022
|
+
updateParticipantsUrl(participantsUrl: string) {
|
|
952
1023
|
if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {
|
|
953
1024
|
this.participantsUrl = participantsUrl;
|
|
954
1025
|
}
|
|
@@ -959,7 +1030,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
959
1030
|
* @returns {undefined}
|
|
960
1031
|
* @memberof LocusInfo
|
|
961
1032
|
*/
|
|
962
|
-
updateReplace(replace) {
|
|
1033
|
+
updateReplace(replace: object) {
|
|
963
1034
|
if (replace && !isEqual(this.replace, replace)) {
|
|
964
1035
|
this.replace = replace;
|
|
965
1036
|
}
|
|
@@ -973,8 +1044,10 @@ export default class LocusInfo extends EventsScope {
|
|
|
973
1044
|
* @memberof LocusInfo
|
|
974
1045
|
* emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self
|
|
975
1046
|
*/
|
|
976
|
-
updateSelf(self, participants) {
|
|
1047
|
+
updateSelf(self: any, participants: Array<any>) {
|
|
1048
|
+
// @ts-ignore - check where this.self come from
|
|
977
1049
|
if (self && !isEqual(this.self, self)) {
|
|
1050
|
+
// @ts-ignore
|
|
978
1051
|
const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);
|
|
979
1052
|
|
|
980
1053
|
this.updateMeeting(parsedSelves.current);
|
|
@@ -1000,8 +1073,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1000
1073
|
|
|
1001
1074
|
if (parsedSelves.updates.moderatorChanged) {
|
|
1002
1075
|
this.compareAndUpdateFlags.compareHostAndSelf = true;
|
|
1003
|
-
}
|
|
1004
|
-
else {
|
|
1076
|
+
} else {
|
|
1005
1077
|
this.compareAndUpdateFlags.compareHostAndSelf = false;
|
|
1006
1078
|
}
|
|
1007
1079
|
|
|
@@ -1016,6 +1088,17 @@ export default class LocusInfo extends EventsScope {
|
|
|
1016
1088
|
);
|
|
1017
1089
|
}
|
|
1018
1090
|
|
|
1091
|
+
if (parsedSelves.updates.breakoutsChanged) {
|
|
1092
|
+
this.emitScoped(
|
|
1093
|
+
{
|
|
1094
|
+
file: 'locus-info',
|
|
1095
|
+
function: 'updateSelf',
|
|
1096
|
+
},
|
|
1097
|
+
LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,
|
|
1098
|
+
{breakoutSessions: parsedSelves.current.breakoutSessions}
|
|
1099
|
+
);
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1019
1102
|
if (parsedSelves.updates.isMediaInactiveOrReleased) {
|
|
1020
1103
|
this.emitScoped(
|
|
1021
1104
|
{
|
|
@@ -1100,6 +1183,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1100
1183
|
file: 'locus-info',
|
|
1101
1184
|
function: 'updateSelf',
|
|
1102
1185
|
},
|
|
1186
|
+
// @ts-ignore
|
|
1103
1187
|
LOCUSINFO.EVENTS.MEDIA_INACTIVITY,
|
|
1104
1188
|
SelfUtils.getMediaStatus(self.mediaSessions)
|
|
1105
1189
|
);
|
|
@@ -1168,9 +1252,9 @@ export default class LocusInfo extends EventsScope {
|
|
|
1168
1252
|
}
|
|
1169
1253
|
);
|
|
1170
1254
|
this.parsedLocus.self = parsedSelves.current;
|
|
1255
|
+
// @ts-ignore
|
|
1171
1256
|
this.self = self;
|
|
1172
|
-
}
|
|
1173
|
-
else {
|
|
1257
|
+
} else {
|
|
1174
1258
|
this.compareAndUpdateFlags.compareHostAndSelf = false;
|
|
1175
1259
|
}
|
|
1176
1260
|
}
|
|
@@ -1181,7 +1265,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1181
1265
|
* @returns {undefined}
|
|
1182
1266
|
* emits internal event locus_info_update_url
|
|
1183
1267
|
*/
|
|
1184
|
-
updateLocusUrl(url) {
|
|
1268
|
+
updateLocusUrl(url: string) {
|
|
1185
1269
|
if (url && this.url !== url) {
|
|
1186
1270
|
this.url = url;
|
|
1187
1271
|
this.updateMeeting({locusUrl: url});
|
|
@@ -1201,7 +1285,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1201
1285
|
* @returns {undefined}
|
|
1202
1286
|
* @memberof LocusInfo
|
|
1203
1287
|
*/
|
|
1204
|
-
updateAclUrl(aclUrl) {
|
|
1288
|
+
updateAclUrl(aclUrl: string) {
|
|
1205
1289
|
if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {
|
|
1206
1290
|
this.aclUrl = aclUrl;
|
|
1207
1291
|
}
|
|
@@ -1212,7 +1296,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1212
1296
|
* @returns {undefined}
|
|
1213
1297
|
* @memberof LocusInfo
|
|
1214
1298
|
*/
|
|
1215
|
-
updateBasequence(baseSequence) {
|
|
1299
|
+
updateBasequence(baseSequence: number) {
|
|
1216
1300
|
if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {
|
|
1217
1301
|
this.baseSequence = baseSequence;
|
|
1218
1302
|
}
|
|
@@ -1223,7 +1307,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1223
1307
|
* @returns {undefined}
|
|
1224
1308
|
* @memberof LocusInfo
|
|
1225
1309
|
*/
|
|
1226
|
-
updateSequence(sequence) {
|
|
1310
|
+
updateSequence(sequence: number) {
|
|
1227
1311
|
if (sequence && !isEqual(this.sequence, sequence)) {
|
|
1228
1312
|
this.sequence = sequence;
|
|
1229
1313
|
}
|
|
@@ -1234,7 +1318,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1234
1318
|
* @returns {undefined}
|
|
1235
1319
|
* @memberof LocusInfo
|
|
1236
1320
|
*/
|
|
1237
|
-
updateMemberShip(membership) {
|
|
1321
|
+
updateMemberShip(membership: object) {
|
|
1238
1322
|
if (membership && !isEqual(this.membership, membership)) {
|
|
1239
1323
|
this.membership = membership;
|
|
1240
1324
|
}
|
|
@@ -1245,7 +1329,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1245
1329
|
* @returns {undefined}
|
|
1246
1330
|
* @memberof LocusInfo
|
|
1247
1331
|
*/
|
|
1248
|
-
updateIdentifiers(identities) {
|
|
1332
|
+
updateIdentifiers(identities: Array<any>) {
|
|
1249
1333
|
if (identities && !isEqual(this.identities, identities)) {
|
|
1250
1334
|
this.identities = identities;
|
|
1251
1335
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
1
|
import {SELF_ROLES, DISPLAY_HINTS} from '../constants';
|
|
3
2
|
|
|
4
|
-
const InfoUtils = {};
|
|
3
|
+
const InfoUtils: any = {};
|
|
5
4
|
|
|
6
5
|
InfoUtils.parse = (info, roles, isJoined = true) => {
|
|
7
|
-
const parsed = {
|
|
6
|
+
const parsed: any = {
|
|
8
7
|
policy: InfoUtils.parsePolicy(info),
|
|
9
8
|
moderator: InfoUtils.parseModerator(info),
|
|
10
9
|
coHost: InfoUtils.parseCoHost(info),
|
|
@@ -30,13 +29,22 @@ InfoUtils.parse = (info, roles, isJoined = true) => {
|
|
|
30
29
|
parsed.meetingNumber = info.meetingId;
|
|
31
30
|
}
|
|
32
31
|
|
|
32
|
+
if (info.datachannelUrl) {
|
|
33
|
+
parsed.datachannelUrl = info.datachannelUrl;
|
|
34
|
+
}
|
|
35
|
+
|
|
33
36
|
return parsed;
|
|
34
37
|
};
|
|
35
38
|
|
|
36
39
|
InfoUtils.parseDisplayHintSection = (info, displayHintKey) => {
|
|
37
40
|
const displayHints = {};
|
|
38
41
|
|
|
39
|
-
if (
|
|
42
|
+
if (
|
|
43
|
+
info &&
|
|
44
|
+
info.displayHints &&
|
|
45
|
+
info.displayHints[displayHintKey] &&
|
|
46
|
+
info.displayHints[displayHintKey].length > 0
|
|
47
|
+
) {
|
|
40
48
|
info.displayHints[displayHintKey].forEach((key) => {
|
|
41
49
|
displayHints[key] = true;
|
|
42
50
|
});
|
|
@@ -70,16 +78,19 @@ InfoUtils.getInfos = (oldInfo, newInfo, roles, isJoined) => {
|
|
|
70
78
|
previous = oldInfo;
|
|
71
79
|
}
|
|
72
80
|
const current = newInfo && InfoUtils.parse(newInfo, roles, isJoined);
|
|
73
|
-
const updates = {};
|
|
81
|
+
const updates: any = {};
|
|
74
82
|
|
|
75
83
|
if (current) {
|
|
76
84
|
current.isLocked = InfoUtils.isLocked(current.policy);
|
|
77
85
|
current.isUnlocked = InfoUtils.isUnlocked(current.policy);
|
|
78
86
|
|
|
79
|
-
if (previous && previous.isUnlocked && current.isLocked || !previous && current.isLocked) {
|
|
87
|
+
if ((previous && previous.isUnlocked && current.isLocked) || (!previous && current.isLocked)) {
|
|
80
88
|
updates.isLocked = current.isLocked;
|
|
81
89
|
}
|
|
82
|
-
if (
|
|
90
|
+
if (
|
|
91
|
+
(previous && previous.isLocked && current.isUnlocked) ||
|
|
92
|
+
(!previous && current.isUnlocked)
|
|
93
|
+
) {
|
|
83
94
|
updates.isUnlocked = current.isUnlocked;
|
|
84
95
|
}
|
|
85
96
|
}
|
|
@@ -87,7 +98,7 @@ InfoUtils.getInfos = (oldInfo, newInfo, roles, isJoined) => {
|
|
|
87
98
|
return {
|
|
88
99
|
previous,
|
|
89
100
|
current,
|
|
90
|
-
updates
|
|
101
|
+
updates,
|
|
91
102
|
};
|
|
92
103
|
};
|
|
93
104
|
|