@webex/plugin-meetings 3.0.0-beta.39 → 3.0.0-beta.391
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -8
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +94 -15
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +671 -81
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/utils.js +45 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +51 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/reclaim-host-role-errors.js +158 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/webex-errors.js +48 -7
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +5 -1
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +24 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +5 -10
- package/dist/config.js.map +1 -1
- package/dist/constants.js +242 -33
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +14 -2
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +109 -15
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +309 -18
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +110 -2
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.js +93 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +380 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +91 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +386 -62
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +7 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +71 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +249 -72
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +89 -14
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +65 -102
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +73 -124
- package/dist/media/properties.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +135 -330
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +86 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +4075 -2827
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +224 -136
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +177 -152
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +672 -417
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +73 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +192 -51
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/util.js +1 -1
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +36 -36
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +39 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +484 -119
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +2 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +73 -7
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +58 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +132 -25
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +10 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +102 -6
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +106 -38
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +326 -232
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +18 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -446
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +223 -32
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +10 -0
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +39 -36
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +3 -1
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +76 -5
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +366 -104
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +255 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/reachability/clusterReachability.js +356 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.js +263 -390
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +6 -4
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reconnection-manager/index.js +266 -202
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/index.js +21 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +9 -8
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +51 -28
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +48 -64
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +220 -70
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +179 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +357 -295
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +296 -156
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/utils.d.ts +14 -0
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/webex-errors.d.ts +25 -1
- package/dist/types/common/logs/request.d.ts +2 -0
- package/dist/types/common/queue.d.ts +9 -7
- package/dist/types/config.d.ts +2 -7
- package/dist/types/constants.d.ts +203 -31
- package/dist/types/controls-options-manager/enums.d.ts +11 -1
- package/dist/types/controls-options-manager/index.d.ts +17 -1
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -7
- package/dist/types/index.d.ts +6 -5
- package/dist/types/interceptors/index.d.ts +2 -0
- package/dist/types/interceptors/locusRetry.d.ts +27 -0
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/index.d.ts +57 -4
- package/dist/types/locus-info/parser.d.ts +66 -6
- package/dist/types/media/index.d.ts +2 -0
- package/dist/types/media/properties.d.ts +34 -49
- package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
- package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
- package/dist/types/meeting/index.d.ts +567 -496
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +93 -25
- package/dist/types/meeting/request.d.ts +64 -43
- package/dist/types/meeting/util.d.ts +117 -1
- package/dist/types/meeting-info/index.d.ts +13 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
- package/dist/types/meetings/collection.d.ts +17 -0
- package/dist/types/meetings/index.d.ts +113 -21
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/member/index.d.ts +14 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/members/collection.d.ts +5 -0
- package/dist/types/members/index.d.ts +35 -2
- package/dist/types/members/request.d.ts +73 -9
- package/dist/types/members/types.d.ts +25 -0
- package/dist/types/members/util.d.ts +214 -1
- package/dist/types/metrics/constants.d.ts +17 -0
- package/dist/types/metrics/index.d.ts +4 -111
- package/dist/types/multistream/mediaRequestManager.d.ts +72 -3
- package/dist/types/multistream/receiveSlot.d.ts +7 -3
- package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
- package/dist/types/multistream/remoteMedia.d.ts +3 -31
- package/dist/types/multistream/remoteMediaGroup.d.ts +2 -9
- package/dist/types/multistream/remoteMediaManager.d.ts +62 -2
- package/dist/types/multistream/sendSlotManager.d.ts +70 -0
- package/dist/types/reachability/clusterReachability.d.ts +109 -0
- package/dist/types/reachability/index.d.ts +60 -95
- package/dist/types/reachability/request.d.ts +3 -1
- package/dist/types/reachability/util.d.ts +8 -0
- package/dist/types/reconnection-manager/index.d.ts +19 -0
- package/dist/types/recording-controller/index.d.ts +15 -1
- package/dist/types/recording-controller/util.d.ts +5 -4
- package/dist/types/roap/index.d.ts +2 -1
- package/dist/types/roap/request.d.ts +9 -8
- package/dist/types/roap/turnDiscovery.d.ts +39 -5
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +61 -0
- package/dist/types/statsAnalyzer/index.d.ts +34 -12
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
- package/dist/types/webinar/collection.d.ts +16 -0
- package/dist/types/webinar/index.d.ts +5 -0
- package/dist/webinar/collection.js +44 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +69 -0
- package/dist/webinar/index.js.map +1 -0
- package/package.json +22 -19
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +35 -11
- package/src/breakouts/breakout.ts +67 -9
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +558 -59
- package/src/breakouts/utils.ts +42 -0
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/webex-errors.ts +44 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/logs/request.ts +5 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +4 -9
- package/src/constants.ts +229 -21
- package/src/controls-options-manager/enums.ts +12 -0
- package/src/controls-options-manager/index.ts +116 -21
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +294 -14
- package/src/index.ts +44 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +349 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +417 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +80 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +100 -108
- package/src/media/properties.ts +88 -117
- package/src/mediaQualityMetrics/config.ts +103 -238
- package/src/meeting/in-meeting-actions.ts +171 -3
- package/src/meeting/index.ts +3411 -2435
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +223 -136
- package/src/meeting/request.ts +155 -120
- package/src/meeting/util.ts +685 -395
- package/src/meeting-info/index.ts +81 -8
- package/src/meeting-info/meeting-info-v2.ts +170 -14
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +23 -23
- package/src/meetings/collection.ts +33 -0
- package/src/meetings/index.ts +507 -127
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +81 -12
- package/src/member/index.ts +58 -0
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +141 -25
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +134 -8
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +333 -240
- package/src/metrics/constants.ts +17 -0
- package/src/metrics/index.ts +1 -469
- package/src/multistream/mediaRequestManager.ts +271 -56
- package/src/multistream/receiveSlot.ts +11 -4
- package/src/multistream/receiveSlotManager.ts +34 -24
- package/src/multistream/remoteMedia.ts +5 -3
- package/src/multistream/remoteMediaGroup.ts +78 -0
- package/src/multistream/remoteMediaManager.ts +248 -44
- package/src/multistream/sendSlotManager.ts +199 -0
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +229 -346
- package/src/reachability/request.ts +8 -4
- package/src/reachability/util.ts +24 -0
- package/src/reconnection-manager/index.ts +128 -97
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +52 -23
- package/src/roap/request.ts +48 -67
- package/src/roap/turnDiscovery.ts +147 -49
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +166 -0
- package/src/statsAnalyzer/index.ts +457 -416
- package/src/statsAnalyzer/mqaUtil.ts +317 -170
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +60 -3
- package/test/integration/spec/journey.js +320 -261
- package/test/integration/spec/space-meeting.js +76 -3
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +118 -28
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1349 -114
- package/test/unit/spec/breakouts/utils.js +52 -1
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +163 -0
- package/test/unit/spec/controls-options-manager/util.js +576 -60
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +625 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +316 -43
- package/test/unit/spec/locus-info/index.js +1363 -37
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
- package/test/unit/spec/locus-info/parser.js +116 -35
- package/test/unit/spec/locus-info/selfConstant.js +27 -4
- package/test/unit/spec/locus-info/selfUtils.js +208 -17
- package/test/unit/spec/media/index.ts +173 -81
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
- package/test/unit/spec/meeting/index.js +6821 -2172
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +402 -212
- package/test/unit/spec/meeting/request.js +473 -54
- package/test/unit/spec/meeting/utils.js +773 -67
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +26 -0
- package/test/unit/spec/meetings/index.js +1415 -213
- package/test/unit/spec/meetings/utils.js +229 -2
- package/test/unit/spec/member/index.js +61 -6
- package/test/unit/spec/member/util.js +510 -34
- package/test/unit/spec/members/index.js +432 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +210 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +781 -114
- package/test/unit/spec/multistream/receiveSlot.ts +9 -1
- package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
- package/test/unit/spec/multistream/remoteMedia.ts +2 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +345 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +525 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +551 -14
- package/test/unit/spec/reachability/request.js +3 -1
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +171 -11
- package/test/unit/spec/recording-controller/index.js +294 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +180 -83
- package/test/unit/spec/roap/request.ts +100 -62
- package/test/unit/spec/roap/turnDiscovery.ts +388 -96
- package/test/unit/spec/rtcMetrics/index.ts +122 -0
- package/test/unit/spec/stats-analyzer/index.js +1252 -12
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -57
- package/test/utils/webex-test-users.js +12 -4
- package/dist/metrics/config.js +0 -289
- package/dist/metrics/config.js.map +0 -1
- package/dist/types/metrics/config.d.ts +0 -169
- package/src/index.js +0 -18
- package/src/metrics/config.ts +0 -485
package/dist/meetings/index.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
|
|
3
4
|
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
5
|
+
var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
6
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
7
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
8
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
9
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
4
10
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
11
|
+
var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
|
|
5
12
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
13
|
_Object$defineProperty(exports, "__esModule", {
|
|
7
14
|
value: true
|
|
8
15
|
});
|
|
9
16
|
exports.default = void 0;
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
11
17
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
12
18
|
var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
|
|
13
19
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
14
20
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
21
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
22
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
|
|
15
23
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
16
24
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
|
|
17
25
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
@@ -22,13 +30,14 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
|
|
|
22
30
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
23
31
|
require("@webex/internal-plugin-mercury");
|
|
24
32
|
require("@webex/internal-plugin-conversation");
|
|
33
|
+
require("@webex/internal-plugin-metrics");
|
|
25
34
|
var _webexCore = require("@webex/webex-core");
|
|
26
35
|
var _internalMediaCore = require("@webex/internal-media-core");
|
|
36
|
+
var mediaHelpersModule = _interopRequireWildcard(require("@webex/media-helpers"));
|
|
27
37
|
require("webrtc-adapter");
|
|
28
38
|
var _metrics = _interopRequireDefault(require("../metrics"));
|
|
29
|
-
var _config = require("../metrics/config");
|
|
30
39
|
var _loggerConfig = _interopRequireDefault(require("../common/logs/logger-config"));
|
|
31
|
-
var
|
|
40
|
+
var _config = _interopRequireDefault(require("../common/config"));
|
|
32
41
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
33
42
|
var _request = _interopRequireDefault(require("../common/logs/request"));
|
|
34
43
|
var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
|
|
@@ -46,6 +55,13 @@ var _passwordError = _interopRequireDefault(require("../common/errors/password-e
|
|
|
46
55
|
var _captchaError = _interopRequireDefault(require("../common/errors/captcha-error"));
|
|
47
56
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
48
57
|
var _util2 = _interopRequireDefault(require("./util"));
|
|
58
|
+
var _permission = _interopRequireDefault(require("../common/errors/permission"));
|
|
59
|
+
var _webexErrors = require("../common/errors/webex-errors");
|
|
60
|
+
var _noMeetingInfo = _interopRequireDefault(require("../common/errors/no-meeting-info"));
|
|
61
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
62
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
63
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
64
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
49
65
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
50
66
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
51
67
|
var mediaLogger;
|
|
@@ -157,13 +173,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
157
173
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
158
174
|
|
|
159
175
|
/**
|
|
160
|
-
* The
|
|
176
|
+
* The webrtc-core media helpers. This is a temporary solution required for the SDK sample app
|
|
177
|
+
* to be able to call media helper functions.
|
|
178
|
+
*
|
|
161
179
|
* @instance
|
|
162
180
|
* @type {Object}
|
|
163
181
|
* @private
|
|
164
182
|
* @memberof Meetings
|
|
165
183
|
*/
|
|
166
|
-
// @ts-ignore
|
|
167
184
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "loggerRequest", void 0);
|
|
168
185
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "media", void 0);
|
|
169
186
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingCollection", void 0);
|
|
@@ -174,7 +191,61 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
174
191
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "request", void 0);
|
|
175
192
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "geoHintInfo", void 0);
|
|
176
193
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingInfo", void 0);
|
|
194
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaHelpers", void 0);
|
|
195
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "breakoutLocusForHandleLater", void 0);
|
|
177
196
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.MEETINGS);
|
|
197
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createNoiseReductionEffect", /*#__PURE__*/function () {
|
|
198
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) {
|
|
199
|
+
var authToken;
|
|
200
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
201
|
+
while (1) switch (_context.prev = _context.next) {
|
|
202
|
+
case 0:
|
|
203
|
+
// @ts-ignore
|
|
204
|
+
authToken = _this.webex.credentials.supertoken.access_token;
|
|
205
|
+
return _context.abrupt("return", new mediaHelpersModule.NoiseReductionEffect(_objectSpread({
|
|
206
|
+
authToken: authToken
|
|
207
|
+
}, options)));
|
|
208
|
+
case 2:
|
|
209
|
+
case "end":
|
|
210
|
+
return _context.stop();
|
|
211
|
+
}
|
|
212
|
+
}, _callee);
|
|
213
|
+
}));
|
|
214
|
+
return function (_x) {
|
|
215
|
+
return _ref.apply(this, arguments);
|
|
216
|
+
};
|
|
217
|
+
}());
|
|
218
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createVirtualBackgroundEffect", /*#__PURE__*/function () {
|
|
219
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
|
|
220
|
+
var authToken;
|
|
221
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
222
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
223
|
+
case 0:
|
|
224
|
+
// @ts-ignore
|
|
225
|
+
authToken = _this.webex.credentials.supertoken.access_token;
|
|
226
|
+
return _context2.abrupt("return", new mediaHelpersModule.VirtualBackgroundEffect(_objectSpread({
|
|
227
|
+
authToken: authToken
|
|
228
|
+
}, options)));
|
|
229
|
+
case 2:
|
|
230
|
+
case "end":
|
|
231
|
+
return _context2.stop();
|
|
232
|
+
}
|
|
233
|
+
}, _callee2);
|
|
234
|
+
}));
|
|
235
|
+
return function (_x2) {
|
|
236
|
+
return _ref2.apply(this, arguments);
|
|
237
|
+
};
|
|
238
|
+
}());
|
|
239
|
+
_this.mediaHelpers = mediaHelpersModule;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* The Meetings request to interact with server
|
|
243
|
+
* @instance
|
|
244
|
+
* @type {Object}
|
|
245
|
+
* @private
|
|
246
|
+
* @memberof Meetings
|
|
247
|
+
*/
|
|
248
|
+
// @ts-ignore
|
|
178
249
|
_this.request = new _request2.default({}, {
|
|
179
250
|
parent: _this.webex
|
|
180
251
|
});
|
|
@@ -198,15 +269,17 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
198
269
|
* @memberof Meetings
|
|
199
270
|
*/
|
|
200
271
|
_this.personalMeetingRoom = null;
|
|
272
|
+
|
|
201
273
|
/**
|
|
202
|
-
* The Reachability object to interact with server
|
|
274
|
+
* The Reachability object to interact with server
|
|
203
275
|
* starts as null
|
|
204
276
|
* @instance
|
|
205
277
|
* @type {Object}
|
|
206
278
|
* @private
|
|
207
279
|
* @memberof Meetings
|
|
208
280
|
*/
|
|
209
|
-
|
|
281
|
+
// @ts-ignore
|
|
282
|
+
_this.reachability = new _reachability.default(_this.webex);
|
|
210
283
|
|
|
211
284
|
/**
|
|
212
285
|
* If the meetings plugin has been registered and listening via {@link Meetings#register}
|
|
@@ -235,50 +308,152 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
235
308
|
* @memberof Meetings
|
|
236
309
|
*/
|
|
237
310
|
_this.media = {
|
|
238
|
-
getUserMedia: _media.default.getUserMedia
|
|
239
|
-
getSupportedDevice: _media.default.getSupportedDevice
|
|
311
|
+
getUserMedia: _media.default.getUserMedia
|
|
240
312
|
};
|
|
241
313
|
_this.onReady();
|
|
242
314
|
return _this;
|
|
243
315
|
}
|
|
244
316
|
|
|
245
317
|
/**
|
|
246
|
-
*
|
|
247
|
-
* @param {Object}
|
|
248
|
-
* @param {
|
|
249
|
-
* @
|
|
250
|
-
* @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
|
|
251
|
-
* @param {String} data.eventType
|
|
252
|
-
* @returns {undefined}
|
|
318
|
+
* check whether you need to handle this main session's locus data or not
|
|
319
|
+
* @param {Object} meeting current meeting data
|
|
320
|
+
* @param {Object} newLocus new locus data
|
|
321
|
+
* @returns {boolean}
|
|
253
322
|
* @private
|
|
254
323
|
* @memberof Meetings
|
|
255
324
|
*/
|
|
256
325
|
(0, _createClass2.default)(Meetings, [{
|
|
257
|
-
key: "
|
|
258
|
-
value: function
|
|
259
|
-
var
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
var
|
|
264
|
-
|
|
326
|
+
key: "isNeedHandleMainLocus",
|
|
327
|
+
value: function isNeedHandleMainLocus(meeting, newLocus) {
|
|
328
|
+
var _newLocus$controls, _newLocus$controls$br, _newLocus$self, _newLocus$self2, _newLocus$self3, _breakoutLocus$joined, _newLocus$self4;
|
|
329
|
+
var breakoutUrl = (_newLocus$controls = newLocus.controls) === null || _newLocus$controls === void 0 ? void 0 : (_newLocus$controls$br = _newLocus$controls.breakout) === null || _newLocus$controls$br === void 0 ? void 0 : _newLocus$controls$br.url;
|
|
330
|
+
var breakoutLocus = this.meetingCollection.getActiveBreakoutLocus(breakoutUrl);
|
|
331
|
+
var isSelfJoined = (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self = newLocus.self) === null || _newLocus$self === void 0 ? void 0 : _newLocus$self.state) === _constants._JOINED_;
|
|
332
|
+
var isSelfMoved = (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self2 = newLocus.self) === null || _newLocus$self2 === void 0 ? void 0 : _newLocus$self2.state) === _constants._LEFT_ && (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self3 = newLocus.self) === null || _newLocus$self3 === void 0 ? void 0 : _newLocus$self3.reason) === _constants._MOVED_;
|
|
333
|
+
// @ts-ignore
|
|
334
|
+
var deviceFromNewLocus = _util2.default.getThisDevice(newLocus, this.webex.internal.device.url);
|
|
335
|
+
var isResourceMovedOnThisDevice = (deviceFromNewLocus === null || deviceFromNewLocus === void 0 ? void 0 : deviceFromNewLocus.state) === _constants._LEFT_ && (deviceFromNewLocus === null || deviceFromNewLocus === void 0 ? void 0 : deviceFromNewLocus.reason) === _constants._MOVED_;
|
|
336
|
+
var isNewLocusJoinThisDevice = _util2.default.joinedOnThisDevice(meeting, newLocus,
|
|
337
|
+
// @ts-ignore
|
|
338
|
+
this.webex.internal.device.url);
|
|
339
|
+
var isBreakoutLocusJoinThisDevice = (breakoutLocus === null || breakoutLocus === void 0 ? void 0 : (_breakoutLocus$joined = breakoutLocus.joinedWith) === null || _breakoutLocus$joined === void 0 ? void 0 : _breakoutLocus$joined.correlationId) && breakoutLocus.joinedWith.correlationId === (meeting === null || meeting === void 0 ? void 0 : meeting.correlationId);
|
|
340
|
+
if (isSelfJoined && isNewLocusJoinThisDevice) {
|
|
341
|
+
_loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> self this device shown as JOINED in the main session');
|
|
342
|
+
if (breakoutLocus !== null && breakoutLocus !== void 0 && breakoutLocus.joinedWith && deviceFromNewLocus) {
|
|
343
|
+
var _breakoutLocus$joined2, _deviceFromNewLocus$r;
|
|
344
|
+
var breakoutReplaceAt = ((_breakoutLocus$joined2 = breakoutLocus.joinedWith.replaces) === null || _breakoutLocus$joined2 === void 0 ? void 0 : _breakoutLocus$joined2.length) > 0 ? breakoutLocus.joinedWith.replaces[0].replaceAt : '';
|
|
345
|
+
var newLocusReplaceAt = ((_deviceFromNewLocus$r = deviceFromNewLocus.replaces) === null || _deviceFromNewLocus$r === void 0 ? void 0 : _deviceFromNewLocus$r.length) > 0 ? deviceFromNewLocus.replaces[0].replaceAt : '';
|
|
346
|
+
if (breakoutReplaceAt && newLocusReplaceAt && breakoutReplaceAt > newLocusReplaceAt) {
|
|
347
|
+
_loggerProxy.default.logger.log("Meetings:index#isNeedHandleMainLocus --> this is expired main joined status locus_dto replacedAt ".concat(newLocusReplaceAt, " bo replacedAt ").concat(breakoutReplaceAt));
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
if (isBreakoutLocusJoinThisDevice) {
|
|
354
|
+
_loggerProxy.default.logger.log("Meetings:index#isNeedHandleMainLocus --> there is active breakout session and joined on this device, and don't need to handle main session: ".concat(breakoutUrl));
|
|
355
|
+
return false;
|
|
356
|
+
}
|
|
357
|
+
if (isSelfMoved && (newLocus !== null && newLocus !== void 0 && (_newLocus$self4 = newLocus.self) !== null && _newLocus$self4 !== void 0 && _newLocus$self4.removed || isResourceMovedOnThisDevice)) {
|
|
358
|
+
_loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> self moved main locus with self removed status or with device resource moved, not need to handle');
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
if (isSelfJoined && isResourceMovedOnThisDevice) {
|
|
362
|
+
_loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> self device left&moved in main locus with self joined status, not need to handle');
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
_loggerProxy.default.logger.log('Meetings:index#isNeedHandleMainLocus --> this is a normal main session locusDTO update case');
|
|
366
|
+
return true;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* check whether you need to handle this locus data or not
|
|
371
|
+
* @param {Object} meeting old locus data
|
|
372
|
+
* @param {Object} newLocus new locus data
|
|
373
|
+
* @returns {boolean}
|
|
374
|
+
* @private
|
|
375
|
+
* @memberof Meetings
|
|
376
|
+
*/
|
|
377
|
+
}, {
|
|
378
|
+
key: "isNeedHandleLocusDTO",
|
|
379
|
+
value: function isNeedHandleLocusDTO(meeting, newLocus) {
|
|
380
|
+
if (newLocus) {
|
|
381
|
+
var _newLocus$self5, _newLocus$self6;
|
|
382
|
+
var isNewLocusAsBreakout = _util2.default.isBreakoutLocusDTO(newLocus);
|
|
383
|
+
var isSelfMoved = (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self5 = newLocus.self) === null || _newLocus$self5 === void 0 ? void 0 : _newLocus$self5.state) === _constants._LEFT_ && (newLocus === null || newLocus === void 0 ? void 0 : (_newLocus$self6 = newLocus.self) === null || _newLocus$self6 === void 0 ? void 0 : _newLocus$self6.reason) === _constants._MOVED_;
|
|
384
|
+
if (!meeting) {
|
|
385
|
+
if (isNewLocusAsBreakout) {
|
|
386
|
+
var _newLocus$fullState, _newLocus$self7;
|
|
387
|
+
_loggerProxy.default.logger.log("Meetings:index#isNeedHandleLocusDTO --> the first breakout session locusDTO active status: ".concat((_newLocus$fullState = newLocus.fullState) === null || _newLocus$fullState === void 0 ? void 0 : _newLocus$fullState.active));
|
|
388
|
+
return ((_newLocus$self7 = newLocus.self) === null || _newLocus$self7 === void 0 ? void 0 : _newLocus$self7.state) === _constants._JOINED_;
|
|
389
|
+
}
|
|
390
|
+
return this.isNeedHandleMainLocus(meeting, newLocus);
|
|
391
|
+
}
|
|
392
|
+
if (!isNewLocusAsBreakout) {
|
|
393
|
+
return this.isNeedHandleMainLocus(meeting, newLocus);
|
|
394
|
+
}
|
|
395
|
+
return !isSelfMoved;
|
|
396
|
+
}
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
265
399
|
|
|
400
|
+
/**
|
|
401
|
+
* get corresponding meeting object by locus data
|
|
402
|
+
* @param {Object} data a locus event
|
|
403
|
+
* @param {String} data.locusUrl
|
|
404
|
+
* @param {Object} data.locus
|
|
405
|
+
* @returns {Object}
|
|
406
|
+
* @private
|
|
407
|
+
* @memberof Meetings
|
|
408
|
+
*/
|
|
409
|
+
}, {
|
|
410
|
+
key: "getCorrespondingMeetingByLocus",
|
|
411
|
+
value: function getCorrespondingMeetingByLocus(data) {
|
|
412
|
+
var _data$locus$info, _data$locus, _data$locus$info2;
|
|
266
413
|
// getting meeting by correlationId. This will happen for the new event
|
|
267
414
|
// Either the locus
|
|
268
415
|
// TODO : Add check for the callBack Address
|
|
269
|
-
|
|
416
|
+
return this.meetingCollection.getByKey(_constants.LOCUS_URL, data.locusUrl) ||
|
|
270
417
|
// @ts-ignore
|
|
271
418
|
this.meetingCollection.getByKey(_constants.CORRELATION_ID,
|
|
272
419
|
// @ts-ignore
|
|
273
|
-
_util2.default.checkForCorrelationId(this.webex.internal.device.url, data.locus)) || this.meetingCollection.getByKey(_constants.SIP_URI, data.locus.self && data.locus.self.callbackInfo && data.locus.self.callbackInfo.callbackAddress) || ((_data$locus$info = data.locus.info) !== null && _data$locus$info !== void 0 && _data$locus$info.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(_constants.CONVERSATION_URL, data.locus.conversationUrl));
|
|
420
|
+
_util2.default.checkForCorrelationId(this.webex.internal.device.url, data.locus)) || this.meetingCollection.getByKey(_constants.SIP_URI, data.locus.self && data.locus.self.callbackInfo && data.locus.self.callbackInfo.callbackAddress) || ((_data$locus$info = data.locus.info) !== null && _data$locus$info !== void 0 && _data$locus$info.isUnifiedSpaceMeeting ? undefined : this.meetingCollection.getByKey(_constants.CONVERSATION_URL, data.locus.conversationUrl)) || this.meetingCollection.getByKey(_constants.MEETINGNUMBER, (_data$locus = data.locus) === null || _data$locus === void 0 ? void 0 : (_data$locus$info2 = _data$locus.info) === null || _data$locus$info2 === void 0 ? void 0 : _data$locus$info2.webExMeetingId);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* handle locus events and takes meeting actions with them as they come in
|
|
425
|
+
* @param {Object} data a locus event
|
|
426
|
+
* @param {String} data.locusUrl
|
|
427
|
+
* @param {Object} data.locus
|
|
428
|
+
* @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
|
|
429
|
+
* @param {String} data.eventType
|
|
430
|
+
* @returns {undefined}
|
|
431
|
+
* @private
|
|
432
|
+
* @memberof Meetings
|
|
433
|
+
*/
|
|
434
|
+
}, {
|
|
435
|
+
key: "handleLocusEvent",
|
|
436
|
+
value: function handleLocusEvent(data) {
|
|
437
|
+
var _data$locus2,
|
|
438
|
+
_data$locus2$replaces,
|
|
439
|
+
_this2 = this;
|
|
440
|
+
var useRandomDelayForInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
441
|
+
var meeting = this.getCorrespondingMeetingByLocus(data);
|
|
274
442
|
|
|
275
443
|
// Special case when locus has got replaced, This only happend once if a replace locus exists
|
|
276
444
|
// https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-changing-mid-call
|
|
277
445
|
|
|
278
|
-
if (!meeting && ((_data$
|
|
446
|
+
if (!meeting && ((_data$locus2 = data.locus) === null || _data$locus2 === void 0 ? void 0 : (_data$locus2$replaces = _data$locus2.replaces) === null || _data$locus2$replaces === void 0 ? void 0 : _data$locus2$replaces.length) > 0) {
|
|
279
447
|
// Always the last element in the replace is the active one
|
|
280
448
|
meeting = this.meetingCollection.getByKey(_constants.LOCUS_URL, data.locus.replaces[data.locus.replaces.length - 1].locusUrl);
|
|
281
449
|
}
|
|
450
|
+
if (meeting && !_util2.default.isBreakoutLocusDTO(data.locus)) {
|
|
451
|
+
meeting.locusInfo.updateMainSessionLocusCache(data.locus);
|
|
452
|
+
}
|
|
453
|
+
if (!this.isNeedHandleLocusDTO(meeting, data.locus)) {
|
|
454
|
+
_loggerProxy.default.logger.log("Meetings:index#handleLocusEvent --> doesn't need to process locus event");
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
282
457
|
if (!meeting) {
|
|
283
458
|
// TODO: create meeting when we get a meeting object
|
|
284
459
|
// const checkForEnded = (locus) => {
|
|
@@ -318,6 +493,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
318
493
|
|
|
319
494
|
// It's a new meeting so initialize the locus data
|
|
320
495
|
meeting.locusInfo.initialSetup(data.locus);
|
|
496
|
+
_this2.checkHandleBreakoutLocus(data.locus);
|
|
321
497
|
}).catch(function (e) {
|
|
322
498
|
_loggerProxy.default.logger.error(e);
|
|
323
499
|
}).finally(function () {
|
|
@@ -325,11 +501,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
325
501
|
// because the other user left so before sending 'added' event make sure it exists in the collection
|
|
326
502
|
|
|
327
503
|
if (_this2.getMeetingByType(_constants._ID_, meeting.id)) {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
trigger:
|
|
504
|
+
// @ts-ignore
|
|
505
|
+
_this2.webex.internal.newMetrics.submitClientEvent({
|
|
506
|
+
name: 'client.call.remote-started',
|
|
507
|
+
payload: {
|
|
508
|
+
trigger: 'mercury-event'
|
|
509
|
+
},
|
|
510
|
+
options: {
|
|
511
|
+
meetingId: meeting.id
|
|
333
512
|
}
|
|
334
513
|
});
|
|
335
514
|
_triggerProxy.default.trigger(_this2, {
|
|
@@ -405,7 +584,9 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
405
584
|
|
|
406
585
|
// @ts-ignore
|
|
407
586
|
this.webex.internal.mercury.on(_constants.ONLINE, function () {
|
|
408
|
-
_this3.syncMeetings(
|
|
587
|
+
_this3.syncMeetings({
|
|
588
|
+
keepOnlyLocusMeetings: false
|
|
589
|
+
});
|
|
409
590
|
});
|
|
410
591
|
|
|
411
592
|
// @ts-ignore
|
|
@@ -443,7 +624,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
443
624
|
// @ts-ignore
|
|
444
625
|
this.webex.once(_constants.READY, function () {
|
|
445
626
|
// @ts-ignore
|
|
446
|
-
|
|
627
|
+
_config.default.set(_this4.config);
|
|
447
628
|
// @ts-ignore
|
|
448
629
|
_loggerConfig.default.set(_this4.config.logging);
|
|
449
630
|
// @ts-ignore
|
|
@@ -480,7 +661,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
480
661
|
disableNotifications: true
|
|
481
662
|
});
|
|
482
663
|
// @ts-ignore
|
|
483
|
-
_metrics.default.initialSetup(_this4.
|
|
664
|
+
_metrics.default.initialSetup(_this4.webex);
|
|
484
665
|
});
|
|
485
666
|
}
|
|
486
667
|
|
|
@@ -508,40 +689,43 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
508
689
|
}
|
|
509
690
|
|
|
510
691
|
/**
|
|
511
|
-
* API to
|
|
512
|
-
* @param {Boolean}
|
|
692
|
+
* API to toggle starting adhoc meeting
|
|
693
|
+
* @param {Boolean} changeState
|
|
513
694
|
* @private
|
|
514
695
|
* @memberof Meetings
|
|
515
696
|
* @returns {undefined}
|
|
516
697
|
*/
|
|
517
698
|
}, {
|
|
518
|
-
key: "
|
|
519
|
-
value: function
|
|
520
|
-
|
|
699
|
+
key: "_toggleAdhocMeetings",
|
|
700
|
+
value: function _toggleAdhocMeetings(changeState) {
|
|
701
|
+
var _this$config2, _this$config2$experim;
|
|
702
|
+
if (typeof changeState !== 'boolean') {
|
|
521
703
|
return;
|
|
522
704
|
}
|
|
523
705
|
// @ts-ignore
|
|
524
|
-
this.config.experimental.
|
|
706
|
+
if (((_this$config2 = this.config) === null || _this$config2 === void 0 ? void 0 : (_this$config2$experim = _this$config2.experimental) === null || _this$config2$experim === void 0 ? void 0 : _this$config2$experim.enableAdhocMeetings) !== changeState) {
|
|
707
|
+
// @ts-ignore
|
|
708
|
+
this.config.experimental.enableAdhocMeetings = changeState;
|
|
709
|
+
}
|
|
525
710
|
}
|
|
526
711
|
|
|
527
712
|
/**
|
|
528
|
-
* API to toggle
|
|
529
|
-
* @param {Boolean}
|
|
713
|
+
* API to toggle TCP reachability, needs to be called before webex.meetings.register()
|
|
714
|
+
* @param {Boolean} newValue
|
|
530
715
|
* @private
|
|
531
716
|
* @memberof Meetings
|
|
532
717
|
* @returns {undefined}
|
|
533
718
|
*/
|
|
534
719
|
}, {
|
|
535
|
-
key: "
|
|
536
|
-
value: function
|
|
537
|
-
|
|
538
|
-
if (typeof changeState !== 'boolean') {
|
|
720
|
+
key: "_toggleTcpReachability",
|
|
721
|
+
value: function _toggleTcpReachability(newValue) {
|
|
722
|
+
if (typeof newValue !== 'boolean') {
|
|
539
723
|
return;
|
|
540
724
|
}
|
|
541
725
|
// @ts-ignore
|
|
542
|
-
if (
|
|
726
|
+
if (this.config.experimental.enableTcpReachability !== newValue) {
|
|
543
727
|
// @ts-ignore
|
|
544
|
-
this.config.experimental.
|
|
728
|
+
this.config.experimental.enableTcpReachability = newValue;
|
|
545
729
|
}
|
|
546
730
|
}
|
|
547
731
|
|
|
@@ -630,6 +814,17 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
630
814
|
);
|
|
631
815
|
}
|
|
632
816
|
|
|
817
|
+
/**
|
|
818
|
+
* Creates a noise reduction effect
|
|
819
|
+
*
|
|
820
|
+
* @param {INoiseReductionEffect} options optional custom effect options
|
|
821
|
+
* @returns {Promise<effect>} noise reduction effect.
|
|
822
|
+
* @public
|
|
823
|
+
* @memberof Meetings
|
|
824
|
+
*/
|
|
825
|
+
}, {
|
|
826
|
+
key: "uploadLogs",
|
|
827
|
+
value:
|
|
633
828
|
/**
|
|
634
829
|
* Uploads logs to the webex services for tracking
|
|
635
830
|
* @param {Object} [options={}]
|
|
@@ -642,14 +837,13 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
642
837
|
* @param {String} [options.orgId] org id
|
|
643
838
|
* @returns {String} feedback ID logs were submitted under
|
|
644
839
|
*/
|
|
645
|
-
|
|
646
|
-
key: "uploadLogs",
|
|
647
|
-
value: function uploadLogs() {
|
|
840
|
+
function uploadLogs() {
|
|
648
841
|
var _this7 = this;
|
|
649
842
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
650
843
|
_loggerProxy.default.logger.info('Meetings:index#uploadLogs --> uploading logs');
|
|
651
844
|
return this.loggerRequest.uploadLogs(options).then(function (uploadResult) {
|
|
652
845
|
_loggerProxy.default.logger.info('Meetings:index#uploadLogs --> Upload logs for meeting completed.', uploadResult);
|
|
846
|
+
_metrics.default.sendBehavioralMetric(_constants2.default.UPLOAD_LOGS_SUCCESS, options);
|
|
653
847
|
_triggerProxy.default.trigger(_this7, {
|
|
654
848
|
file: 'meetings',
|
|
655
849
|
function: 'uploadLogs'
|
|
@@ -667,29 +861,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
667
861
|
meetingId: options.meetingId,
|
|
668
862
|
reason: uploadError
|
|
669
863
|
});
|
|
670
|
-
_metrics.default.sendBehavioralMetric(_constants2.default.UPLOAD_LOGS_FAILURE, {
|
|
671
|
-
// @ts-ignore - seems like typo
|
|
672
|
-
meetingId: options.meetingsId,
|
|
864
|
+
_metrics.default.sendBehavioralMetric(_constants2.default.UPLOAD_LOGS_FAILURE, _objectSpread(_objectSpread({}, options), {}, {
|
|
673
865
|
reason: uploadError.message,
|
|
674
866
|
stack: uploadError.stack,
|
|
675
867
|
code: uploadError.code
|
|
676
|
-
});
|
|
868
|
+
}));
|
|
677
869
|
});
|
|
678
870
|
}
|
|
679
871
|
|
|
680
|
-
/**
|
|
681
|
-
* initializes the reachability instance for Meetings
|
|
682
|
-
* @returns {undefined}
|
|
683
|
-
* @public
|
|
684
|
-
* @memberof Meetings
|
|
685
|
-
*/
|
|
686
|
-
}, {
|
|
687
|
-
key: "setReachability",
|
|
688
|
-
value: function setReachability() {
|
|
689
|
-
// @ts-ignore
|
|
690
|
-
this.reachability = new _reachability.default(this.webex);
|
|
691
|
-
}
|
|
692
|
-
|
|
693
872
|
/**
|
|
694
873
|
* gets the reachability instance for Meetings
|
|
695
874
|
* @returns {Reachability}
|
|
@@ -711,9 +890,6 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
711
890
|
}, {
|
|
712
891
|
key: "startReachability",
|
|
713
892
|
value: function startReachability() {
|
|
714
|
-
if (!this.reachability) {
|
|
715
|
-
this.setReachability();
|
|
716
|
-
}
|
|
717
893
|
return this.getReachability().gatherReachability();
|
|
718
894
|
}
|
|
719
895
|
|
|
@@ -747,6 +923,23 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
747
923
|
if (res) {
|
|
748
924
|
_this9.preferredWebexSite = _util2.default.parseDefaultSiteFromMeetingPreferences(res);
|
|
749
925
|
}
|
|
926
|
+
|
|
927
|
+
// fall back to getting the preferred site from the user information
|
|
928
|
+
if (!_this9.preferredWebexSite) {
|
|
929
|
+
// @ts-ignore
|
|
930
|
+
return _this9.webex.internal.user.get().then(function (user) {
|
|
931
|
+
var _user$userPreferences, _user$userPreferences2;
|
|
932
|
+
var preferredWebexSite = user === null || user === void 0 ? void 0 : (_user$userPreferences = user.userPreferences) === null || _user$userPreferences === void 0 ? void 0 : (_user$userPreferences2 = _user$userPreferences.userPreferencesItems) === null || _user$userPreferences2 === void 0 ? void 0 : _user$userPreferences2.preferredWebExSite;
|
|
933
|
+
if (preferredWebexSite) {
|
|
934
|
+
_this9.preferredWebexSite = preferredWebexSite;
|
|
935
|
+
} else {
|
|
936
|
+
throw new Error('site not found');
|
|
937
|
+
}
|
|
938
|
+
}).catch(function () {
|
|
939
|
+
_loggerProxy.default.logger.error('Failed to fetch preferred site from user - no site will be set');
|
|
940
|
+
});
|
|
941
|
+
}
|
|
942
|
+
return _promise.default.resolve();
|
|
750
943
|
});
|
|
751
944
|
}
|
|
752
945
|
|
|
@@ -785,10 +978,19 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
785
978
|
}
|
|
786
979
|
|
|
787
980
|
/**
|
|
788
|
-
* Create a meeting.
|
|
789
|
-
*
|
|
981
|
+
* Create a meeting or return an existing meeting.
|
|
982
|
+
*
|
|
983
|
+
* When meeting info passed it should be complete, e.g.: fetched after password or captcha provided
|
|
984
|
+
*
|
|
985
|
+
* @param {string} destination - sipURL, phonenumber, or locus object}
|
|
790
986
|
* @param {string} [type] - the optional specified type, such as locusId
|
|
791
987
|
* @param {Boolean} useRandomDelayForInfo - whether a random delay should be added to fetching meeting info
|
|
988
|
+
* @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
|
|
989
|
+
* @param {string} correlationId - the optional specified correlationId (callStateForMetrics.correlationId can be provided instead)
|
|
990
|
+
* @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
|
|
991
|
+
* @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
|
|
992
|
+
* @param {Object} [meetingInfo] - Pre-fetched complete meeting info
|
|
993
|
+
* @param {String} [meetingLookupUrl] - meeting info prefetch url
|
|
792
994
|
* @returns {Promise<Meeting>} A new Meeting.
|
|
793
995
|
* @public
|
|
794
996
|
* @memberof Meetings
|
|
@@ -799,16 +1001,30 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
799
1001
|
var _this10 = this;
|
|
800
1002
|
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
801
1003
|
var useRandomDelayForInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
1004
|
+
var infoExtraParams = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
1005
|
+
var correlationId = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;
|
|
1006
|
+
var failOnMissingMeetingInfo = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
1007
|
+
var callStateForMetrics = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : undefined;
|
|
1008
|
+
var meetingInfo = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;
|
|
1009
|
+
var meetingLookupUrl = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : undefined;
|
|
802
1010
|
// TODO: type should be from a dictionary
|
|
803
1011
|
|
|
804
1012
|
// Validate meeting information based on the provided destination and
|
|
805
1013
|
// type. This must be performed prior to determining if the meeting is
|
|
806
1014
|
// found in the collection, as we mutate the destination for hydra person
|
|
807
1015
|
// id values.
|
|
1016
|
+
if (correlationId) {
|
|
1017
|
+
callStateForMetrics = _objectSpread(_objectSpread({}, callStateForMetrics || {}), {}, {
|
|
1018
|
+
correlationId: correlationId
|
|
1019
|
+
});
|
|
1020
|
+
}
|
|
808
1021
|
return this.meetingInfo.fetchInfoOptions(destination, type)
|
|
809
1022
|
// Catch a failure to fetch info options.
|
|
810
1023
|
.catch(function (error) {
|
|
811
|
-
_loggerProxy.default.logger.
|
|
1024
|
+
_loggerProxy.default.logger.error("Meetings:index#create --> ERROR, unable to determine info options: ".concat(error.message));
|
|
1025
|
+
if (error instanceof _webexErrors.SpaceIDDeprecatedError) {
|
|
1026
|
+
throw new _webexErrors.SpaceIDDeprecatedError();
|
|
1027
|
+
}
|
|
812
1028
|
}).then(function () {
|
|
813
1029
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
814
1030
|
// Normalize the destination.
|
|
@@ -837,20 +1053,22 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
837
1053
|
// Validate if a meeting was found.
|
|
838
1054
|
if (!meeting) {
|
|
839
1055
|
// Create a meeting based on the normalized destination and type.
|
|
840
|
-
return _this10.createMeeting(targetDest, type, useRandomDelayForInfo).then(function (createdMeeting) {
|
|
1056
|
+
return _this10.createMeeting(targetDest, type, useRandomDelayForInfo, infoExtraParams, callStateForMetrics, failOnMissingMeetingInfo, meetingInfo, meetingLookupUrl).then(function (createdMeeting) {
|
|
841
1057
|
// If the meeting was successfully created.
|
|
842
1058
|
if (createdMeeting && createdMeeting.on) {
|
|
843
1059
|
// Create a destruction event for the meeting.
|
|
844
1060
|
createdMeeting.on(_constants.EVENTS.DESTROY_MEETING, function (payload) {
|
|
845
1061
|
// @ts-ignore
|
|
846
1062
|
if (_this10.config.autoUploadLogs) {
|
|
847
|
-
var _createdMeeting$locus, _createdMeeting$locus2, _createdMeeting$locus3, _createdMeeting$locus4;
|
|
1063
|
+
var _createdMeeting$locus, _createdMeeting$locus2, _createdMeeting$locus3, _createdMeeting$locus4, _createdMeeting$locus5, _createdMeeting$locus6;
|
|
848
1064
|
_this10.uploadLogs({
|
|
849
1065
|
callStart: (_createdMeeting$locus = createdMeeting.locusInfo) === null || _createdMeeting$locus === void 0 ? void 0 : (_createdMeeting$locus2 = _createdMeeting$locus.fullState) === null || _createdMeeting$locus2 === void 0 ? void 0 : _createdMeeting$locus2.lastActive,
|
|
1066
|
+
locussessionid: (_createdMeeting$locus3 = createdMeeting.locusInfo) === null || _createdMeeting$locus3 === void 0 ? void 0 : (_createdMeeting$locus4 = _createdMeeting$locus3.fullState) === null || _createdMeeting$locus4 === void 0 ? void 0 : _createdMeeting$locus4.sessionId,
|
|
850
1067
|
correlationId: createdMeeting.correlationId,
|
|
851
1068
|
feedbackId: createdMeeting.correlationId,
|
|
852
1069
|
locusId: createdMeeting.locusId,
|
|
853
|
-
meetingId: (_createdMeeting$
|
|
1070
|
+
meetingId: (_createdMeeting$locus5 = createdMeeting.locusInfo) === null || _createdMeeting$locus5 === void 0 ? void 0 : (_createdMeeting$locus6 = _createdMeeting$locus5.info) === null || _createdMeeting$locus6 === void 0 ? void 0 : _createdMeeting$locus6.webExMeetingId,
|
|
1071
|
+
autoupload: true
|
|
854
1072
|
}).then(function () {
|
|
855
1073
|
return _this10.destroy(createdMeeting, payload.reason);
|
|
856
1074
|
});
|
|
@@ -861,13 +1079,15 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
861
1079
|
createdMeeting.on(_constants.EVENTS.REQUEST_UPLOAD_LOGS, function (meetingInstance) {
|
|
862
1080
|
// @ts-ignore
|
|
863
1081
|
if (_this10.config.autoUploadLogs) {
|
|
864
|
-
var _meetingInstance$locu, _meetingInstance$locu2, _meetingInstance$locu3, _meetingInstance$locu4;
|
|
1082
|
+
var _meetingInstance$locu, _meetingInstance$locu2, _meetingInstance$locu3, _meetingInstance$locu4, _meetingInstance$locu5, _meetingInstance$locu6;
|
|
865
1083
|
_this10.uploadLogs({
|
|
866
1084
|
callStart: meetingInstance === null || meetingInstance === void 0 ? void 0 : (_meetingInstance$locu = meetingInstance.locusInfo) === null || _meetingInstance$locu === void 0 ? void 0 : (_meetingInstance$locu2 = _meetingInstance$locu.fullState) === null || _meetingInstance$locu2 === void 0 ? void 0 : _meetingInstance$locu2.lastActive,
|
|
1085
|
+
locussessionid: meetingInstance === null || meetingInstance === void 0 ? void 0 : (_meetingInstance$locu3 = meetingInstance.locusInfo) === null || _meetingInstance$locu3 === void 0 ? void 0 : (_meetingInstance$locu4 = _meetingInstance$locu3.fullState) === null || _meetingInstance$locu4 === void 0 ? void 0 : _meetingInstance$locu4.sessionId,
|
|
867
1086
|
correlationId: meetingInstance.correlationId,
|
|
868
1087
|
feedbackId: meetingInstance.correlationId,
|
|
869
1088
|
locusId: meetingInstance.locusId,
|
|
870
|
-
meetingId: (_meetingInstance$
|
|
1089
|
+
meetingId: (_meetingInstance$locu5 = meetingInstance.locusInfo) === null || _meetingInstance$locu5 === void 0 ? void 0 : (_meetingInstance$locu6 = _meetingInstance$locu5.info) === null || _meetingInstance$locu6 === void 0 ? void 0 : _meetingInstance$locu6.webExMeetingId,
|
|
1090
|
+
autoupload: true
|
|
871
1091
|
});
|
|
872
1092
|
}
|
|
873
1093
|
});
|
|
@@ -879,6 +1099,7 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
879
1099
|
return _promise.default.resolve(createdMeeting);
|
|
880
1100
|
});
|
|
881
1101
|
}
|
|
1102
|
+
meeting.setCallStateForMetrics(callStateForMetrics);
|
|
882
1103
|
|
|
883
1104
|
// Return the existing meeting.
|
|
884
1105
|
return _promise.default.resolve(meeting);
|
|
@@ -886,9 +1107,18 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
886
1107
|
}
|
|
887
1108
|
|
|
888
1109
|
/**
|
|
1110
|
+
* Create meeting
|
|
1111
|
+
*
|
|
1112
|
+
* When meeting info passed it should be complete, e.g.: fetched after password or captcha provided
|
|
1113
|
+
*
|
|
889
1114
|
* @param {String} destination see create()
|
|
890
1115
|
* @param {String} type see create()
|
|
891
1116
|
* @param {Boolean} useRandomDelayForInfo whether a random delay should be added to fetching meeting info
|
|
1117
|
+
* @param {Object} infoExtraParams extra parameters to be provided when fetching meeting info
|
|
1118
|
+
* @param {CallStateForMetrics} callStateForMetrics - information about call state for metrics
|
|
1119
|
+
* @param {Boolean} failOnMissingMeetingInfo - whether to throw an error if meeting info fails to fetch (for calls that are not 1:1 or content share)
|
|
1120
|
+
* @param {Object} [meetingInfo] - Pre-fetched complete meeting info
|
|
1121
|
+
* @param {String} [meetingLookupUrl] - meeting info prefetch url
|
|
892
1122
|
* @returns {Promise} a new meeting instance complete with meeting info and destination
|
|
893
1123
|
* @private
|
|
894
1124
|
* @memberof Meetings
|
|
@@ -896,9 +1126,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
896
1126
|
}, {
|
|
897
1127
|
key: "createMeeting",
|
|
898
1128
|
value: function () {
|
|
899
|
-
var _createMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
1129
|
+
var _createMeeting = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(destination) {
|
|
900
1130
|
var type,
|
|
901
1131
|
useRandomDelayForInfo,
|
|
1132
|
+
infoExtraParams,
|
|
1133
|
+
callStateForMetrics,
|
|
1134
|
+
failOnMissingMeetingInfo,
|
|
1135
|
+
meetingInfo,
|
|
1136
|
+
meetingLookupUrl,
|
|
902
1137
|
meeting,
|
|
903
1138
|
_destination$fullStat,
|
|
904
1139
|
waitingTime,
|
|
@@ -909,13 +1144,19 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
909
1144
|
maxWaitingTime,
|
|
910
1145
|
isMeetingActive,
|
|
911
1146
|
enableUnifiedMeetings,
|
|
1147
|
+
meetingInfoOptions,
|
|
912
1148
|
meetingAddedType,
|
|
913
|
-
|
|
914
|
-
return _regenerator.default.wrap(function
|
|
915
|
-
while (1) switch (
|
|
1149
|
+
_args3 = arguments;
|
|
1150
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
1151
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
916
1152
|
case 0:
|
|
917
|
-
type =
|
|
918
|
-
useRandomDelayForInfo =
|
|
1153
|
+
type = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : null;
|
|
1154
|
+
useRandomDelayForInfo = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : false;
|
|
1155
|
+
infoExtraParams = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : {};
|
|
1156
|
+
callStateForMetrics = _args3.length > 4 && _args3[4] !== undefined ? _args3[4] : undefined;
|
|
1157
|
+
failOnMissingMeetingInfo = _args3.length > 5 && _args3[5] !== undefined ? _args3[5] : false;
|
|
1158
|
+
meetingInfo = _args3.length > 6 && _args3[6] !== undefined ? _args3[6] : undefined;
|
|
1159
|
+
meetingLookupUrl = _args3.length > 7 && _args3[7] !== undefined ? _args3[7] : undefined;
|
|
919
1160
|
meeting = new _meeting.default({
|
|
920
1161
|
// @ts-ignore
|
|
921
1162
|
userId: this.webex.internal.device.userId,
|
|
@@ -927,13 +1168,14 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
927
1168
|
// pass the locus object if present
|
|
928
1169
|
meetingInfoProvider: this.meetingInfo,
|
|
929
1170
|
destination: destination,
|
|
930
|
-
destinationType: type
|
|
1171
|
+
destinationType: type,
|
|
1172
|
+
callStateForMetrics: callStateForMetrics
|
|
931
1173
|
}, {
|
|
932
1174
|
// @ts-ignore
|
|
933
1175
|
parent: this.webex
|
|
934
1176
|
});
|
|
935
1177
|
this.meetingCollection.set(meeting);
|
|
936
|
-
|
|
1178
|
+
_context3.prev = 9;
|
|
937
1179
|
// if no participant has joined the scheduled meeting (meaning meeting is not active) and we get a locusEvent,
|
|
938
1180
|
// it means the meeting will start in 5-6 min. In that case, we want to fetchMeetingInfo
|
|
939
1181
|
// between 5 and 2 min (random between 3 minutes) before the meeting starts
|
|
@@ -949,33 +1191,57 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
949
1191
|
}
|
|
950
1192
|
isMeetingActive = !!((_destination$fullStat = destination.fullState) !== null && _destination$fullStat !== void 0 && _destination$fullStat.active); // @ts-ignore
|
|
951
1193
|
enableUnifiedMeetings = this.config.experimental.enableUnifiedMeetings;
|
|
1194
|
+
meetingInfoOptions = {
|
|
1195
|
+
extraParams: infoExtraParams,
|
|
1196
|
+
sendCAevents: !!(callStateForMetrics !== null && callStateForMetrics !== void 0 && callStateForMetrics.correlationId) // if client sends correlation id as argument of public create(), then it means that this meeting creation is part of a pre-join intent from user
|
|
1197
|
+
};
|
|
1198
|
+
if (!meetingInfo) {
|
|
1199
|
+
_context3.next = 19;
|
|
1200
|
+
break;
|
|
1201
|
+
}
|
|
1202
|
+
meeting.injectMeetingInfo(meetingInfo, meetingInfoOptions, meetingLookupUrl);
|
|
1203
|
+
_context3.next = 26;
|
|
1204
|
+
break;
|
|
1205
|
+
case 19:
|
|
952
1206
|
if (!(enableUnifiedMeetings && !isMeetingActive && useRandomDelayForInfo && waitingTime > 0)) {
|
|
953
|
-
|
|
1207
|
+
_context3.next = 24;
|
|
954
1208
|
break;
|
|
955
1209
|
}
|
|
956
1210
|
meeting.fetchMeetingInfoTimeoutId = setTimeout(function () {
|
|
957
|
-
return meeting.fetchMeetingInfo(
|
|
1211
|
+
return meeting.fetchMeetingInfo(meetingInfoOptions);
|
|
958
1212
|
}, waitingTime);
|
|
959
1213
|
meeting.parseMeetingInfo(undefined, destination);
|
|
960
|
-
|
|
1214
|
+
_context3.next = 26;
|
|
961
1215
|
break;
|
|
962
|
-
case
|
|
963
|
-
|
|
964
|
-
return meeting.fetchMeetingInfo(
|
|
965
|
-
case
|
|
966
|
-
|
|
1216
|
+
case 24:
|
|
1217
|
+
_context3.next = 26;
|
|
1218
|
+
return meeting.fetchMeetingInfo(meetingInfoOptions);
|
|
1219
|
+
case 26:
|
|
1220
|
+
_context3.next = 38;
|
|
967
1221
|
break;
|
|
968
|
-
case
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
if (!(
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
1222
|
+
case 28:
|
|
1223
|
+
_context3.prev = 28;
|
|
1224
|
+
_context3.t0 = _context3["catch"](9);
|
|
1225
|
+
if (!(!(_context3.t0 instanceof _captchaError.default) && !(_context3.t0 instanceof _passwordError.default) && !(_context3.t0 instanceof _permission.default))) {
|
|
1226
|
+
_context3.next = 37;
|
|
1227
|
+
break;
|
|
1228
|
+
}
|
|
1229
|
+
_loggerProxy.default.logger.info("Meetings:index#createMeeting --> Info Unable to fetch meeting info for ".concat(destination, "."));
|
|
1230
|
+
if (!failOnMissingMeetingInfo) {
|
|
1231
|
+
_context3.next = 36;
|
|
1232
|
+
break;
|
|
975
1233
|
}
|
|
976
|
-
_loggerProxy.default.logger.
|
|
977
|
-
|
|
978
|
-
|
|
1234
|
+
_loggerProxy.default.logger.info("Meetings:index#createMeeting --> Destroying meeting due to missing meeting info.");
|
|
1235
|
+
// @ts-ignore
|
|
1236
|
+
this.destroy(meeting, _constants.MEETING_REMOVED_REASON.MISSING_MEETING_INFO);
|
|
1237
|
+
throw new _noMeetingInfo.default();
|
|
1238
|
+
case 36:
|
|
1239
|
+
// if there is no meeting info and no error should be thrown then we assume its a 1:1 call or wireless share
|
|
1240
|
+
_loggerProxy.default.logger.info('Meetings:index#createMeeting --> Info assuming this destination is a 1:1 or wireless share');
|
|
1241
|
+
case 37:
|
|
1242
|
+
_loggerProxy.default.logger.debug("Meetings:index#createMeeting --> Debug ".concat(_context3.t0, " fetching /meetingInfo for creation."));
|
|
1243
|
+
case 38:
|
|
1244
|
+
_context3.prev = 38;
|
|
979
1245
|
// For type LOCUS_ID we need to parse the locus object to get the information
|
|
980
1246
|
// about the caller and callee
|
|
981
1247
|
// Meeting Added event will be created in `handleLocusEvent`
|
|
@@ -995,16 +1261,16 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
995
1261
|
type: meetingAddedType
|
|
996
1262
|
});
|
|
997
1263
|
}
|
|
998
|
-
return
|
|
999
|
-
case
|
|
1000
|
-
return
|
|
1001
|
-
case
|
|
1264
|
+
return _context3.finish(38);
|
|
1265
|
+
case 41:
|
|
1266
|
+
return _context3.abrupt("return", meeting);
|
|
1267
|
+
case 42:
|
|
1002
1268
|
case "end":
|
|
1003
|
-
return
|
|
1269
|
+
return _context3.stop();
|
|
1004
1270
|
}
|
|
1005
|
-
},
|
|
1271
|
+
}, _callee3, this, [[9, 28, 38, 41]]);
|
|
1006
1272
|
}));
|
|
1007
|
-
function createMeeting(
|
|
1273
|
+
function createMeeting(_x3) {
|
|
1008
1274
|
return _createMeeting.apply(this, arguments);
|
|
1009
1275
|
}
|
|
1010
1276
|
return createMeeting;
|
|
@@ -1042,8 +1308,9 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
1042
1308
|
}
|
|
1043
1309
|
|
|
1044
1310
|
/**
|
|
1045
|
-
*
|
|
1046
|
-
* @
|
|
1311
|
+
* Syncs all the meetings from server. Does nothing and returns immediately if unverified guest.
|
|
1312
|
+
* @param {boolean} keepOnlyLocusMeetings - whether the sync should keep only locus meetings or any other meeting in meetingCollection
|
|
1313
|
+
* @returns {Promise<void>}
|
|
1047
1314
|
* @public
|
|
1048
1315
|
* @memberof Meetings
|
|
1049
1316
|
*/
|
|
@@ -1051,10 +1318,19 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
1051
1318
|
key: "syncMeetings",
|
|
1052
1319
|
value: function syncMeetings() {
|
|
1053
1320
|
var _this11 = this;
|
|
1321
|
+
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
1322
|
+
_ref3$keepOnlyLocusMe = _ref3.keepOnlyLocusMeetings,
|
|
1323
|
+
keepOnlyLocusMeetings = _ref3$keepOnlyLocusMe === void 0 ? true : _ref3$keepOnlyLocusMe;
|
|
1324
|
+
// @ts-ignore
|
|
1325
|
+
if (this.webex.credentials.isUnverifiedGuest) {
|
|
1326
|
+
_loggerProxy.default.logger.info('Meetings:index#syncMeetings --> skipping meeting sync as unverified guest');
|
|
1327
|
+
return _promise.default.resolve();
|
|
1328
|
+
}
|
|
1054
1329
|
return this.request.getActiveMeetings().then(function (locusArray) {
|
|
1055
1330
|
var activeLocusUrl = [];
|
|
1056
1331
|
if (locusArray !== null && locusArray !== void 0 && locusArray.loci && locusArray.loci.length > 0) {
|
|
1057
|
-
locusArray.loci
|
|
1332
|
+
var lociToUpdate = _this11.sortLocusArrayToUpdate(locusArray.loci);
|
|
1333
|
+
lociToUpdate.forEach(function (locus) {
|
|
1058
1334
|
activeLocusUrl.push(locus.url);
|
|
1059
1335
|
_this11.handleLocusEvent({
|
|
1060
1336
|
locus: locus,
|
|
@@ -1064,21 +1340,97 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
1064
1340
|
}
|
|
1065
1341
|
var meetingsCollection = _this11.meetingCollection.getAll();
|
|
1066
1342
|
if ((0, _keys.default)(meetingsCollection).length > 0) {
|
|
1067
|
-
//
|
|
1068
|
-
//
|
|
1343
|
+
// Sometimes the mercury events are lost after mercury reconnect
|
|
1344
|
+
// Remove any Locus meetings that are not returned by Locus
|
|
1345
|
+
// (they had a locusUrl previously but are no longer active) in the sync
|
|
1069
1346
|
for (var _i = 0, _Object$values = (0, _values.default)(meetingsCollection); _i < _Object$values.length; _i++) {
|
|
1070
1347
|
var meeting = _Object$values[_i];
|
|
1071
1348
|
// @ts-ignore
|
|
1072
|
-
|
|
1349
|
+
var locusUrl = meeting.locusUrl;
|
|
1350
|
+
if ((keepOnlyLocusMeetings || locusUrl) && !activeLocusUrl.includes(locusUrl)) {
|
|
1073
1351
|
// destroy function also uploads logs
|
|
1074
1352
|
// @ts-ignore
|
|
1075
1353
|
_this11.destroy(meeting, _constants.MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
|
|
1076
1354
|
}
|
|
1077
1355
|
}
|
|
1078
1356
|
}
|
|
1357
|
+
}).catch(function (error) {
|
|
1358
|
+
_loggerProxy.default.logger.error("Meetings:index#syncMeetings --> failed to sync meetings, ".concat(error));
|
|
1359
|
+
throw new Error(error);
|
|
1079
1360
|
});
|
|
1080
1361
|
}
|
|
1081
1362
|
|
|
1363
|
+
/**
|
|
1364
|
+
* sort out locus array for initial creating
|
|
1365
|
+
* @param {Array} loci original locus array
|
|
1366
|
+
* @returns {undefined}
|
|
1367
|
+
* @public
|
|
1368
|
+
* @memberof Meetings
|
|
1369
|
+
*/
|
|
1370
|
+
}, {
|
|
1371
|
+
key: "sortLocusArrayToUpdate",
|
|
1372
|
+
value: function sortLocusArrayToUpdate(loci) {
|
|
1373
|
+
var _this12 = this;
|
|
1374
|
+
var mainLoci = loci.filter(function (locus) {
|
|
1375
|
+
return !_util2.default.isBreakoutLocusDTO(locus);
|
|
1376
|
+
});
|
|
1377
|
+
var breakoutLoci = loci.filter(function (locus) {
|
|
1378
|
+
return _util2.default.isValidBreakoutLocus(locus);
|
|
1379
|
+
});
|
|
1380
|
+
this.breakoutLocusForHandleLater = [];
|
|
1381
|
+
var lociToUpdate = (0, _toConsumableArray2.default)(mainLoci);
|
|
1382
|
+
breakoutLoci.forEach(function (breakoutLocus) {
|
|
1383
|
+
var associateMainLocus = mainLoci.find(function (mainLocus) {
|
|
1384
|
+
var _mainLocus$controls, _mainLocus$controls$b, _breakoutLocus$contro, _breakoutLocus$contro2;
|
|
1385
|
+
return ((_mainLocus$controls = mainLocus.controls) === null || _mainLocus$controls === void 0 ? void 0 : (_mainLocus$controls$b = _mainLocus$controls.breakout) === null || _mainLocus$controls$b === void 0 ? void 0 : _mainLocus$controls$b.url) === ((_breakoutLocus$contro = breakoutLocus.controls) === null || _breakoutLocus$contro === void 0 ? void 0 : (_breakoutLocus$contro2 = _breakoutLocus$contro.breakout) === null || _breakoutLocus$contro2 === void 0 ? void 0 : _breakoutLocus$contro2.url);
|
|
1386
|
+
});
|
|
1387
|
+
var existCorrespondingMeeting = _this12.getCorrespondingMeetingByLocus({
|
|
1388
|
+
locus: breakoutLocus,
|
|
1389
|
+
locusUrl: breakoutLocus.url
|
|
1390
|
+
});
|
|
1391
|
+
if (associateMainLocus && !existCorrespondingMeeting) {
|
|
1392
|
+
// if exists both main session and breakout session locus of the same non-exist meeting, handle main locus first,
|
|
1393
|
+
// after meeting create with main locus, then handle the associate breakout locus.
|
|
1394
|
+
// if only handle breakout locus, will miss some date
|
|
1395
|
+
_this12.breakoutLocusForHandleLater.push(breakoutLocus);
|
|
1396
|
+
} else {
|
|
1397
|
+
lociToUpdate.push(breakoutLocus);
|
|
1398
|
+
}
|
|
1399
|
+
});
|
|
1400
|
+
return lociToUpdate;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
/**
|
|
1404
|
+
* check breakout locus which waiting for main locus's meeting to be created, then handle the breakout locus
|
|
1405
|
+
* @param {Object} newCreatedLocus the locus which just create meeting object of it
|
|
1406
|
+
* @returns {undefined}
|
|
1407
|
+
* @public
|
|
1408
|
+
* @memberof Meetings
|
|
1409
|
+
*/
|
|
1410
|
+
}, {
|
|
1411
|
+
key: "checkHandleBreakoutLocus",
|
|
1412
|
+
value: function checkHandleBreakoutLocus(newCreatedLocus) {
|
|
1413
|
+
if (!newCreatedLocus || !this.breakoutLocusForHandleLater || !this.breakoutLocusForHandleLater.length) {
|
|
1414
|
+
return;
|
|
1415
|
+
}
|
|
1416
|
+
if (_util2.default.isBreakoutLocusDTO(newCreatedLocus)) {
|
|
1417
|
+
return;
|
|
1418
|
+
}
|
|
1419
|
+
var existIndex = this.breakoutLocusForHandleLater.findIndex(function (breakoutLocus) {
|
|
1420
|
+
var _breakoutLocus$contro3, _breakoutLocus$contro4, _newCreatedLocus$cont, _newCreatedLocus$cont2;
|
|
1421
|
+
return ((_breakoutLocus$contro3 = breakoutLocus.controls) === null || _breakoutLocus$contro3 === void 0 ? void 0 : (_breakoutLocus$contro4 = _breakoutLocus$contro3.breakout) === null || _breakoutLocus$contro4 === void 0 ? void 0 : _breakoutLocus$contro4.url) === ((_newCreatedLocus$cont = newCreatedLocus.controls) === null || _newCreatedLocus$cont === void 0 ? void 0 : (_newCreatedLocus$cont2 = _newCreatedLocus$cont.breakout) === null || _newCreatedLocus$cont2 === void 0 ? void 0 : _newCreatedLocus$cont2.url);
|
|
1422
|
+
});
|
|
1423
|
+
if (existIndex < 0) {
|
|
1424
|
+
return;
|
|
1425
|
+
}
|
|
1426
|
+
var associateBreakoutLocus = this.breakoutLocusForHandleLater[existIndex];
|
|
1427
|
+
this.handleLocusEvent({
|
|
1428
|
+
locus: associateBreakoutLocus,
|
|
1429
|
+
locusUrl: associateBreakoutLocus.url
|
|
1430
|
+
});
|
|
1431
|
+
this.breakoutLocusForHandleLater.splice(existIndex, 1);
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1082
1434
|
/**
|
|
1083
1435
|
* Get all scheduled meetings.
|
|
1084
1436
|
* @param {object} options
|
|
@@ -1104,6 +1456,19 @@ var Meetings = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
1104
1456
|
value: function getLogger() {
|
|
1105
1457
|
return _loggerProxy.default.get();
|
|
1106
1458
|
}
|
|
1459
|
+
|
|
1460
|
+
/**
|
|
1461
|
+
* Returns the first meeting it finds that has the webrtc media connection created.
|
|
1462
|
+
* Useful for debugging in the console.
|
|
1463
|
+
*
|
|
1464
|
+
* @private
|
|
1465
|
+
* @returns {Meeting} Meeting object that has a webrtc media connection, else undefined
|
|
1466
|
+
*/
|
|
1467
|
+
}, {
|
|
1468
|
+
key: "getActiveWebrtcMeeting",
|
|
1469
|
+
value: function getActiveWebrtcMeeting() {
|
|
1470
|
+
return this.meetingCollection.getActiveWebrtcMeeting();
|
|
1471
|
+
}
|
|
1107
1472
|
}]);
|
|
1108
1473
|
return Meetings;
|
|
1109
1474
|
}(_webexCore.WebexPlugin);
|