@webex/plugin-meetings 3.0.0-beta.31 → 3.0.0-beta.310
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 +46 -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/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +709 -35
- 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 -11
- package/dist/config.js.map +1 -1
- package/dist/constants.js +233 -29
- 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 +112 -1
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +366 -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 +383 -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 +57 -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 +61 -116
- 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/meeting/in-meeting-actions.js +82 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +3777 -2929
- 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 +230 -124
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +260 -196
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +601 -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 +415 -115
- 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 +72 -6
- 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 +13 -5
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -468
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +238 -49
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +29 -16
- 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 +44 -18
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +209 -59
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +233 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/reachability/index.js +225 -59
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +17 -8
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +201 -156
- 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 +62 -32
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +112 -97
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +95 -36
- 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 +117 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/index.js +86 -78
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +11 -10
- 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/edit-lock-error.d.ts +15 -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 +1 -7
- package/dist/types/constants.d.ts +194 -24
- 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 -4
- 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 +67 -6
- package/dist/types/media/index.d.ts +2 -0
- package/dist/types/media/properties.d.ts +34 -48
- package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
- package/dist/types/meeting/index.d.ts +463 -510
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +99 -23
- package/dist/types/meeting/request.d.ts +72 -43
- package/dist/types/meeting/util.d.ts +101 -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 +98 -20
- 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 +12 -4
- package/dist/types/metrics/index.d.ts +4 -119
- package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
- package/dist/types/multistream/receiveSlot.d.ts +13 -11
- package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
- package/dist/types/multistream/remoteMedia.d.ts +8 -29
- package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
- package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
- package/dist/types/multistream/sendSlotManager.d.ts +61 -0
- package/dist/types/reachability/index.d.ts +61 -7
- package/dist/types/reachability/request.d.ts +7 -3
- package/dist/types/reconnection-manager/index.d.ts +9 -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 +15 -11
- package/dist/types/roap/turnDiscovery.d.ts +21 -3
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +47 -0
- package/dist/types/statsAnalyzer/index.d.ts +7 -1
- 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 +23 -20
- 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 +42 -12
- package/src/breakouts/breakout.ts +67 -9
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +592 -20
- 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 -10
- package/src/constants.ts +221 -19
- 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 +40 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +413 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +64 -0
- package/src/locus-info/parser.ts +258 -47
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +102 -122
- package/src/media/properties.ts +87 -110
- package/src/meeting/in-meeting-actions.ts +163 -3
- package/src/meeting/index.ts +3132 -2541
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +229 -131
- package/src/meeting/request.ts +177 -121
- package/src/meeting/util.ts +588 -394
- 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 +445 -123
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +80 -11
- 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 +12 -4
- package/src/metrics/index.ts +1 -490
- package/src/multistream/mediaRequestManager.ts +289 -79
- package/src/multistream/receiveSlot.ts +31 -17
- package/src/multistream/receiveSlotManager.ts +34 -24
- package/src/multistream/remoteMedia.ts +27 -2
- package/src/multistream/remoteMediaGroup.ts +59 -0
- package/src/multistream/remoteMediaManager.ts +148 -30
- package/src/multistream/sendSlotManager.ts +170 -0
- package/src/reachability/index.ts +228 -37
- package/src/reachability/request.ts +17 -8
- package/src/reconnection-manager/index.ts +83 -56
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +63 -32
- package/src/roap/request.ts +100 -104
- package/src/roap/turnDiscovery.ts +48 -26
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +100 -0
- package/src/statsAnalyzer/index.ts +105 -91
- package/src/statsAnalyzer/mqaUtil.ts +13 -14
- 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/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1395 -69
- 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/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +589 -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 +1304 -33
- 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 +32 -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 +104 -37
- package/test/unit/spec/media/properties.ts +2 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
- package/test/unit/spec/meeting/index.js +5216 -1956
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +408 -208
- package/test/unit/spec/meeting/request.js +483 -49
- package/test/unit/spec/meeting/utils.js +679 -64
- 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 +1011 -205
- package/test/unit/spec/meetings/utils.js +202 -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 +803 -162
- package/test/unit/spec/multistream/receiveSlot.ts +28 -20
- package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
- package/test/unit/spec/multistream/remoteMedia.ts +30 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
- package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
- package/test/unit/spec/reachability/index.ts +549 -9
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reconnection-manager/index.js +85 -9
- 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 +178 -64
- package/test/unit/spec/roap/request.ts +203 -85
- package/test/unit/spec/roap/turnDiscovery.ts +82 -36
- package/test/unit/spec/rtcMetrics/index.ts +73 -0
- package/test/unit/spec/stats-analyzer/index.js +136 -2
- 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 -52
- package/dist/meeting/effectsState.js +0 -262
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -299
- package/dist/metrics/config.js.map +0 -1
- package/dist/types/meeting/effectsState.d.ts +0 -42
- package/dist/types/metrics/config.d.ts +0 -178
- package/src/index.js +0 -16
- package/src/meeting/effectsState.ts +0 -211
- package/src/metrics/config.ts +0 -495
- package/test/unit/spec/meeting/effectsState.js +0 -285
package/src/meeting/request.ts
CHANGED
|
@@ -4,6 +4,7 @@ import {debounce} from 'lodash';
|
|
|
4
4
|
import {StatelessWebexPlugin} from '@webex/webex-core';
|
|
5
5
|
// @ts-ignore
|
|
6
6
|
import {deviceType} from '@webex/common';
|
|
7
|
+
import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
|
|
7
8
|
|
|
8
9
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
9
10
|
import {
|
|
@@ -18,31 +19,73 @@ import {
|
|
|
18
19
|
HTTP_VERBS,
|
|
19
20
|
LEAVE,
|
|
20
21
|
LOCI,
|
|
21
|
-
LOCUS,
|
|
22
|
-
MEDIA,
|
|
23
22
|
PARTICIPANT,
|
|
24
23
|
PROVISIONAL_TYPE_DIAL_IN,
|
|
25
24
|
PROVISIONAL_TYPE_DIAL_OUT,
|
|
25
|
+
REACHABILITY,
|
|
26
26
|
SEND_DTMF_ENDPOINT,
|
|
27
27
|
_SLIDES_,
|
|
28
|
+
ANNOTATION,
|
|
29
|
+
IP_VERSION,
|
|
28
30
|
} from '../constants';
|
|
29
|
-
import {Reaction} from '../reactions/reactions.type';
|
|
30
31
|
import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
|
|
32
|
+
import MeetingUtil from './util';
|
|
33
|
+
import {AnnotationInfo} from '../annotation/annotation.types';
|
|
31
34
|
|
|
32
35
|
/**
|
|
33
36
|
* @class MeetingRequest
|
|
34
37
|
*/
|
|
35
38
|
export default class MeetingRequest extends StatelessWebexPlugin {
|
|
36
39
|
changeVideoLayoutDebounced: any;
|
|
40
|
+
meetingRef: WeakRef<any>;
|
|
41
|
+
locusDeltaRequest: (options: object) => Promise<any>;
|
|
42
|
+
buildLocusDeltaRequestOptions: (options: object) => Promise<any>;
|
|
37
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Constructor
|
|
46
|
+
* @param {Object} attrs
|
|
47
|
+
* @param {Object} options
|
|
48
|
+
*/
|
|
38
49
|
constructor(attrs: any, options: any) {
|
|
39
|
-
|
|
50
|
+
const {meeting, ...otherAttrs} = attrs;
|
|
51
|
+
|
|
52
|
+
super(otherAttrs, options);
|
|
53
|
+
|
|
54
|
+
this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
|
|
55
|
+
this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);
|
|
56
|
+
|
|
40
57
|
this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
|
|
41
58
|
leading: true,
|
|
42
59
|
trailing: true,
|
|
43
60
|
});
|
|
44
61
|
}
|
|
45
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Returns joinCookie from boundedStorage if present.
|
|
65
|
+
* @returns {Object} joinCookie
|
|
66
|
+
*/
|
|
67
|
+
private getJoinCookie = async () => {
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
const joinCookieRaw = await this.webex.boundedStorage
|
|
70
|
+
.get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)
|
|
71
|
+
.catch(() => {});
|
|
72
|
+
|
|
73
|
+
if (joinCookieRaw) {
|
|
74
|
+
try {
|
|
75
|
+
const joinCookie = JSON.parse(joinCookieRaw);
|
|
76
|
+
if (joinCookie) {
|
|
77
|
+
return joinCookie;
|
|
78
|
+
}
|
|
79
|
+
} catch (e) {
|
|
80
|
+
LoggerProxy.logger.error(
|
|
81
|
+
`MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return null;
|
|
87
|
+
};
|
|
88
|
+
|
|
46
89
|
/**
|
|
47
90
|
* Make a network request to join a meeting
|
|
48
91
|
* @param {Object} options
|
|
@@ -57,12 +100,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
57
100
|
* @param {boolean} options.moveToResource
|
|
58
101
|
* @param {Object} options.roapMessage
|
|
59
102
|
* @param {boolean} options.breakoutsSupported
|
|
103
|
+
* @param {String} options.locale,
|
|
104
|
+
* @param {Array} options.deviceCapabilities
|
|
105
|
+
* @param {boolean} options.liveAnnotationSupported
|
|
60
106
|
* @returns {Promise}
|
|
61
107
|
*/
|
|
62
108
|
async joinMeeting(options: {
|
|
63
109
|
sipUri: string;
|
|
64
110
|
deviceUrl: string;
|
|
65
111
|
locusUrl: string;
|
|
112
|
+
locusClusterUrl: string;
|
|
66
113
|
resourceId: string;
|
|
67
114
|
correlationId: string;
|
|
68
115
|
ensureConversation: boolean;
|
|
@@ -76,6 +123,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
76
123
|
permissionToken: any;
|
|
77
124
|
preferTranscoding: any;
|
|
78
125
|
breakoutsSupported: boolean;
|
|
126
|
+
locale?: string;
|
|
127
|
+
deviceCapabilities?: Array<string>;
|
|
128
|
+
liveAnnotationSupported: boolean;
|
|
129
|
+
ipVersion?: IP_VERSION;
|
|
79
130
|
}) {
|
|
80
131
|
const {
|
|
81
132
|
asResourceOccupant,
|
|
@@ -84,6 +135,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
84
135
|
permissionToken,
|
|
85
136
|
deviceUrl,
|
|
86
137
|
locusUrl,
|
|
138
|
+
locusClusterUrl,
|
|
87
139
|
resourceId,
|
|
88
140
|
correlationId,
|
|
89
141
|
ensureConversation,
|
|
@@ -93,12 +145,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
93
145
|
roapMessage,
|
|
94
146
|
preferTranscoding,
|
|
95
147
|
breakoutsSupported,
|
|
148
|
+
locale,
|
|
149
|
+
deviceCapabilities = [],
|
|
150
|
+
liveAnnotationSupported,
|
|
151
|
+
ipVersion,
|
|
96
152
|
} = options;
|
|
97
153
|
|
|
98
154
|
LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
99
155
|
|
|
100
156
|
let url = '';
|
|
101
157
|
|
|
158
|
+
const joinCookie = await this.getJoinCookie();
|
|
159
|
+
|
|
102
160
|
const body: any = {
|
|
103
161
|
asResourceOccupant,
|
|
104
162
|
device: {
|
|
@@ -115,19 +173,36 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
115
173
|
supportsNativeLobby: 1,
|
|
116
174
|
clientMediaPreferences: {
|
|
117
175
|
preferTranscoding: preferTranscoding ?? true,
|
|
176
|
+
joinCookie,
|
|
177
|
+
ipver: ipVersion,
|
|
118
178
|
},
|
|
119
179
|
};
|
|
120
180
|
|
|
121
181
|
if (breakoutsSupported) {
|
|
122
|
-
|
|
182
|
+
deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
|
|
183
|
+
}
|
|
184
|
+
if (liveAnnotationSupported) {
|
|
185
|
+
deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
|
|
123
186
|
}
|
|
124
187
|
|
|
188
|
+
if (locale) {
|
|
189
|
+
body.locale = locale;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// add deviceCapabilities prop
|
|
193
|
+
if (deviceCapabilities.length) {
|
|
194
|
+
body.deviceCapabilities = deviceCapabilities;
|
|
195
|
+
}
|
|
125
196
|
// @ts-ignore
|
|
126
|
-
if (this.webex.meetings.
|
|
197
|
+
if (this.webex.meetings.geoHintInfo) {
|
|
127
198
|
// @ts-ignore
|
|
128
|
-
body.device.countryCode = this.webex.meetings.
|
|
199
|
+
body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
|
|
129
200
|
// @ts-ignore
|
|
130
|
-
body.device.regionCode = this.webex.meetings.
|
|
201
|
+
body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
|
|
202
|
+
body.device.localIp =
|
|
203
|
+
// @ts-ignore
|
|
204
|
+
CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||
|
|
205
|
+
undefined;
|
|
131
206
|
}
|
|
132
207
|
|
|
133
208
|
if (moderator !== undefined) {
|
|
@@ -146,10 +221,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
146
221
|
url = `${locusUrl}/${PARTICIPANT}`;
|
|
147
222
|
} else if (inviteeAddress || meetingNumber) {
|
|
148
223
|
try {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
224
|
+
let clusterUrl;
|
|
225
|
+
|
|
226
|
+
if (locusClusterUrl) {
|
|
227
|
+
clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;
|
|
228
|
+
} else {
|
|
229
|
+
// @ts-ignore
|
|
230
|
+
await this.webex.internal.services.waitForCatalog('postauth');
|
|
231
|
+
// @ts-ignore
|
|
232
|
+
clusterUrl = this.webex.internal.services.get('locus');
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
url = `${clusterUrl}/${LOCI}/${CALL}`;
|
|
153
236
|
body.invitee = {
|
|
154
237
|
address: inviteeAddress || `wbxmn:${meetingNumber}`,
|
|
155
238
|
};
|
|
@@ -251,7 +334,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
251
334
|
};
|
|
252
335
|
|
|
253
336
|
// @ts-ignore
|
|
254
|
-
return this.
|
|
337
|
+
return this.locusDeltaRequest({
|
|
255
338
|
method: HTTP_VERBS.POST,
|
|
256
339
|
uri,
|
|
257
340
|
body,
|
|
@@ -306,7 +389,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
306
389
|
};
|
|
307
390
|
|
|
308
391
|
// @ts-ignore
|
|
309
|
-
return this.
|
|
392
|
+
return this.locusDeltaRequest({
|
|
310
393
|
method: HTTP_VERBS.POST,
|
|
311
394
|
uri,
|
|
312
395
|
body,
|
|
@@ -320,65 +403,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
320
403
|
}
|
|
321
404
|
|
|
322
405
|
/**
|
|
323
|
-
*
|
|
406
|
+
* Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
|
|
324
407
|
* @param {Object} options
|
|
325
|
-
* @param {boolean} options.desync flag to get partial or whole locus object
|
|
326
|
-
* @param {String} options.syncUrl sync url to get ht elatest locus delta
|
|
327
|
-
* @returns {Promise}
|
|
328
|
-
*/
|
|
329
|
-
syncMeeting(options: {desync: boolean; syncUrl: string}) {
|
|
330
|
-
/* eslint-disable no-else-return */
|
|
331
|
-
const {desync} = options;
|
|
332
|
-
let {syncUrl} = options;
|
|
333
|
-
|
|
334
|
-
/* istanbul ignore else */
|
|
335
|
-
if (desync) {
|
|
336
|
-
// check for existing URL parameters
|
|
337
|
-
syncUrl = syncUrl
|
|
338
|
-
.concat(syncUrl.split('?')[1] ? '&' : '?')
|
|
339
|
-
.concat(`${LOCUS.SYNCDEBUG}=${desync}`);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
// @ts-ignore
|
|
343
|
-
return this.request({
|
|
344
|
-
method: HTTP_VERBS.GET,
|
|
345
|
-
uri: syncUrl,
|
|
346
|
-
}) // TODO: Handle if delta sync failed . Get the full locus object
|
|
347
|
-
.catch((err) => {
|
|
348
|
-
LoggerProxy.logger.error(
|
|
349
|
-
`Meeting:request#syncMeeting --> Error syncing meeting, error ${err}`
|
|
350
|
-
);
|
|
351
|
-
|
|
352
|
-
return err;
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* Request to get the complete locus object
|
|
358
|
-
* @param {Object} options
|
|
359
|
-
* @param {boolean} options.desync flag to get partial or whole locus object
|
|
360
408
|
* @param {String} options.locusUrl sync url to get ht elatest locus delta
|
|
361
409
|
* @returns {Promise}
|
|
362
410
|
*/
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
const {desync} = options;
|
|
366
|
-
|
|
367
|
-
if (locusUrl) {
|
|
368
|
-
if (desync) {
|
|
369
|
-
locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;
|
|
370
|
-
}
|
|
411
|
+
getLocusDTO(options: {url: string}) {
|
|
412
|
+
const {url} = options;
|
|
371
413
|
|
|
414
|
+
if (url) {
|
|
372
415
|
// @ts-ignore
|
|
373
416
|
return this.request({
|
|
374
417
|
method: HTTP_VERBS.GET,
|
|
375
|
-
uri:
|
|
418
|
+
uri: url,
|
|
376
419
|
}).catch((err) => {
|
|
377
420
|
LoggerProxy.logger.error(
|
|
378
|
-
`Meeting:request#
|
|
421
|
+
`Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
|
|
379
422
|
);
|
|
380
423
|
|
|
381
|
-
|
|
424
|
+
throw err;
|
|
382
425
|
});
|
|
383
426
|
}
|
|
384
427
|
|
|
@@ -421,7 +464,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
421
464
|
};
|
|
422
465
|
|
|
423
466
|
// @ts-ignore
|
|
424
|
-
return this.
|
|
467
|
+
return this.locusDeltaRequest({
|
|
425
468
|
method: HTTP_VERBS.PUT,
|
|
426
469
|
uri,
|
|
427
470
|
body,
|
|
@@ -435,13 +478,49 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
435
478
|
}
|
|
436
479
|
|
|
437
480
|
/**
|
|
438
|
-
*
|
|
481
|
+
* Prepares request options to to leave a meeting
|
|
439
482
|
* @param {Object} options
|
|
440
483
|
* @param {Url} options.locusUrl
|
|
441
484
|
* @param {String} options.selfId
|
|
442
485
|
* @param {Url} options.deviceUrl
|
|
443
486
|
* @param {String} options.resourceId,
|
|
444
487
|
* @param {String} options.correlationId
|
|
488
|
+
* @returns {Object} request options
|
|
489
|
+
*/
|
|
490
|
+
prepareLeaveMeetingRequestOptions({
|
|
491
|
+
locusUrl,
|
|
492
|
+
selfId,
|
|
493
|
+
deviceUrl: url,
|
|
494
|
+
resourceId,
|
|
495
|
+
correlationId,
|
|
496
|
+
}: {
|
|
497
|
+
locusUrl: string;
|
|
498
|
+
selfId: string;
|
|
499
|
+
deviceUrl: string;
|
|
500
|
+
resourceId: string;
|
|
501
|
+
correlationId: string;
|
|
502
|
+
}) {
|
|
503
|
+
const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
|
|
504
|
+
const body = {
|
|
505
|
+
device: {
|
|
506
|
+
// @ts-ignore
|
|
507
|
+
deviceType: this.config.meetings.deviceType,
|
|
508
|
+
url,
|
|
509
|
+
},
|
|
510
|
+
usingResource: resourceId || null,
|
|
511
|
+
correlationId,
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
return {
|
|
515
|
+
method: HTTP_VERBS.PUT,
|
|
516
|
+
uri,
|
|
517
|
+
body,
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Make a network request to leave a meeting
|
|
523
|
+
* @param {Object} options
|
|
445
524
|
* @returns {Promise}
|
|
446
525
|
*/
|
|
447
526
|
leaveMeeting({
|
|
@@ -470,14 +549,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
470
549
|
correlationId,
|
|
471
550
|
};
|
|
472
551
|
|
|
473
|
-
|
|
474
|
-
return this.request({
|
|
552
|
+
return this.locusDeltaRequest({
|
|
475
553
|
method: HTTP_VERBS.PUT,
|
|
476
554
|
uri,
|
|
477
555
|
body,
|
|
478
556
|
});
|
|
479
557
|
}
|
|
480
558
|
|
|
559
|
+
/**
|
|
560
|
+
* Builds request options to leave a meeting
|
|
561
|
+
* @param {Object} options
|
|
562
|
+
* @returns {Object} request options
|
|
563
|
+
*/
|
|
564
|
+
buildLeaveMeetingRequestOptions(options: any) {
|
|
565
|
+
return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
|
|
566
|
+
}
|
|
567
|
+
|
|
481
568
|
/**
|
|
482
569
|
* Make a network request to acknowledge a meeting
|
|
483
570
|
* @param {Object} options
|
|
@@ -497,14 +584,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
497
584
|
correlationId: options.correlationId,
|
|
498
585
|
};
|
|
499
586
|
|
|
500
|
-
|
|
501
|
-
return this.request({
|
|
587
|
+
return this.locusDeltaRequest({
|
|
502
588
|
method: HTTP_VERBS.PUT,
|
|
503
589
|
uri,
|
|
504
590
|
body,
|
|
505
591
|
});
|
|
506
592
|
}
|
|
507
593
|
|
|
594
|
+
/**
|
|
595
|
+
* Makes a network request to lock the meeting
|
|
596
|
+
* @param {Object} options
|
|
597
|
+
* @param {Boolean} options.lock Whether it is locked or not
|
|
598
|
+
* @returns {Promise}
|
|
599
|
+
*/
|
|
508
600
|
lockMeeting(options) {
|
|
509
601
|
const uri = `${options.locusUrl}/${CONTROLS}`;
|
|
510
602
|
const body = {
|
|
@@ -513,8 +605,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
513
605
|
},
|
|
514
606
|
};
|
|
515
607
|
|
|
516
|
-
|
|
517
|
-
return this.request({
|
|
608
|
+
return this.locusDeltaRequest({
|
|
518
609
|
method: HTTP_VERBS.PATCH,
|
|
519
610
|
uri,
|
|
520
611
|
body,
|
|
@@ -540,54 +631,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
540
631
|
...(options.reason && {reason: options.reason}),
|
|
541
632
|
};
|
|
542
633
|
|
|
543
|
-
|
|
544
|
-
return this.request({
|
|
545
|
-
method: HTTP_VERBS.PUT,
|
|
546
|
-
uri,
|
|
547
|
-
body,
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
|
|
551
|
-
/**
|
|
552
|
-
* Toggle remote audio and/or video
|
|
553
|
-
* @param {Object} options options for toggling
|
|
554
|
-
* @param {String} options.selfId Locus self id??
|
|
555
|
-
* @param {String} options.locusUrl Locus url
|
|
556
|
-
* @param {String} options.deviceUrl Url of a device
|
|
557
|
-
* @param {String} options.resourceId Populated if you are paired to a device
|
|
558
|
-
* @param {String} options.localMedias local sdps
|
|
559
|
-
* @param {Boolean} options.preferTranscoding false for multistream (Homer), true for transcoded media (Edonus)
|
|
560
|
-
* @returns {Promise}
|
|
561
|
-
*/
|
|
562
|
-
remoteAudioVideoToggle(
|
|
563
|
-
options:
|
|
564
|
-
| {
|
|
565
|
-
selfId: string;
|
|
566
|
-
locusUrl: string;
|
|
567
|
-
deviceUrl: string;
|
|
568
|
-
resourceId: string;
|
|
569
|
-
localMedias: string;
|
|
570
|
-
}
|
|
571
|
-
| any
|
|
572
|
-
) {
|
|
573
|
-
const uri = `${options.locusUrl}/${PARTICIPANT}/${options.selfId}/${MEDIA}`;
|
|
574
|
-
const body = {
|
|
575
|
-
device: {
|
|
576
|
-
// @ts-ignore
|
|
577
|
-
deviceType: this.config.meetings.deviceType,
|
|
578
|
-
url: options.deviceUrl,
|
|
579
|
-
},
|
|
580
|
-
usingResource: options.resourceId || null,
|
|
581
|
-
correlationId: options.correlationId,
|
|
582
|
-
respOnlySdp: true,
|
|
583
|
-
localMedias: options.localMedias,
|
|
584
|
-
clientMediaPreferences: {
|
|
585
|
-
preferTranscoding: options.preferTranscoding ?? true,
|
|
586
|
-
},
|
|
587
|
-
};
|
|
588
|
-
|
|
589
|
-
// @ts-ignore
|
|
590
|
-
return this.request({
|
|
634
|
+
return this.locusDeltaRequest({
|
|
591
635
|
method: HTTP_VERBS.PUT,
|
|
592
636
|
uri,
|
|
593
637
|
body,
|
|
@@ -612,6 +656,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
612
656
|
deviceUrl: string;
|
|
613
657
|
resourceId: string;
|
|
614
658
|
uri: string;
|
|
659
|
+
annotationInfo: AnnotationInfo;
|
|
615
660
|
}
|
|
616
661
|
| any
|
|
617
662
|
) {
|
|
@@ -645,6 +690,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
645
690
|
if (options?.resourceToken) {
|
|
646
691
|
body.resourceToken = options?.resourceToken;
|
|
647
692
|
}
|
|
693
|
+
if (options?.annotationInfo) {
|
|
694
|
+
body.annotation = options?.annotationInfo;
|
|
695
|
+
}
|
|
648
696
|
|
|
649
697
|
// @ts-ignore
|
|
650
698
|
return this.request({
|
|
@@ -664,7 +712,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
664
712
|
*/
|
|
665
713
|
sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
|
|
666
714
|
// @ts-ignore
|
|
667
|
-
return this.
|
|
715
|
+
return this.locusDeltaRequest({
|
|
668
716
|
method: HTTP_VERBS.POST,
|
|
669
717
|
uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
|
|
670
718
|
body: {
|
|
@@ -745,7 +793,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
745
793
|
: undefined;
|
|
746
794
|
|
|
747
795
|
// @ts-ignore
|
|
748
|
-
return this.
|
|
796
|
+
return this.locusDeltaRequest({
|
|
749
797
|
method: HTTP_VERBS.PUT,
|
|
750
798
|
uri: `${locusUrl}/${CONTROLS}`,
|
|
751
799
|
body: {
|
|
@@ -768,7 +816,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
768
816
|
const uri = `${locusUrl}/${END}`;
|
|
769
817
|
|
|
770
818
|
// @ts-ignore
|
|
771
|
-
return this.
|
|
819
|
+
return this.locusDeltaRequest({
|
|
772
820
|
method: HTTP_VERBS.POST,
|
|
773
821
|
uri,
|
|
774
822
|
});
|
|
@@ -820,7 +868,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
820
868
|
const uri = `${locusUrl}/${CONTROLS}`;
|
|
821
869
|
|
|
822
870
|
// @ts-ignore
|
|
823
|
-
return this.
|
|
871
|
+
return this.locusDeltaRequest({
|
|
824
872
|
method: HTTP_VERBS.PUT,
|
|
825
873
|
uri,
|
|
826
874
|
body: {
|
|
@@ -831,4 +879,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
831
879
|
},
|
|
832
880
|
});
|
|
833
881
|
}
|
|
882
|
+
|
|
883
|
+
getLocusStatusByUrl(locusUrl: string) {
|
|
884
|
+
// @ts-ignore
|
|
885
|
+
return this.request({
|
|
886
|
+
method: HTTP_VERBS.GET,
|
|
887
|
+
uri: locusUrl,
|
|
888
|
+
});
|
|
889
|
+
}
|
|
834
890
|
}
|