@webex/plugin-meetings 3.0.0-beta.26 → 3.0.0-beta.261
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 +114 -14
- 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 +841 -19
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/errors/webex-errors.js +28 -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/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 +196 -28
- 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 +381 -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 +43 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +224 -63
- 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 +58 -116
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +60 -121
- 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 +3022 -2795
- 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 +256 -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 +70 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +189 -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 +22 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +372 -90
- 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 +88 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +49 -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 +121 -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 +86 -5
- 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 +316 -233
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +10 -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 +49 -16
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +52 -34
- 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 +161 -57
- 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 +199 -154
- 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 +23 -29
- 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 +96 -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 +51 -34
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +6 -6
- 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/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +13 -1
- package/dist/types/common/queue.d.ts +9 -7
- package/dist/types/config.d.ts +1 -6
- package/dist/types/constants.d.ts +155 -21
- 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 +65 -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 +344 -506
- 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 +8 -0
- package/dist/types/meetings/index.d.ts +86 -12
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/member/index.d.ts +13 -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 +24 -0
- package/dist/types/members/util.d.ts +209 -1
- package/dist/types/metrics/constants.d.ts +9 -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 +16 -12
- package/dist/types/multistream/receiveSlotManager.d.ts +19 -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 +44 -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/request.d.ts +15 -11
- package/dist/types/roap/turnDiscovery.d.ts +18 -1
- 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 +6 -1
- 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 +44 -14
- package/src/breakouts/breakout.ts +87 -9
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +710 -10
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/errors/webex-errors.ts +27 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +4 -9
- package/src/constants.ts +178 -18
- 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 +412 -59
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +48 -0
- package/src/locus-info/parser.ts +231 -39
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +100 -122
- package/src/media/properties.ts +70 -108
- package/src/meeting/in-meeting-actions.ts +163 -3
- package/src/meeting/index.ts +2471 -2306
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +229 -131
- package/src/meeting/request.ts +172 -121
- package/src/meeting/util.ts +588 -394
- package/src/meeting-info/index.ts +79 -8
- package/src/meeting-info/meeting-info-v2.ts +168 -14
- package/src/meeting-info/util.ts +1 -1
- package/src/meeting-info/utilv2.ts +23 -23
- package/src/meetings/collection.ts +20 -0
- package/src/meetings/index.ts +414 -108
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +103 -4
- package/src/member/index.ts +49 -0
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +127 -25
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +107 -6
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +319 -240
- package/src/metrics/constants.ts +9 -4
- package/src/metrics/index.ts +1 -490
- package/src/multistream/mediaRequestManager.ts +289 -79
- package/src/multistream/receiveSlot.ts +55 -18
- package/src/multistream/receiveSlotManager.ts +46 -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 +165 -37
- package/src/reachability/request.ts +17 -8
- package/src/reconnection-manager/index.ts +81 -54
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +23 -30
- package/src/roap/request.ts +100 -104
- package/src/roap/turnDiscovery.ts +51 -25
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +100 -0
- package/src/statsAnalyzer/index.ts +73 -35
- package/src/statsAnalyzer/mqaUtil.ts +8 -10
- package/test/integration/spec/converged-space-meetings.js +233 -0
- 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 +142 -24
- 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 +1545 -48
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- 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 +1283 -33
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/parser.js +62 -22
- 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/meeting/in-meeting-actions.ts +81 -3
- package/test/unit/spec/meeting/index.js +4095 -1913
- 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 +440 -45
- package/test/unit/spec/meeting/utils.js +679 -64
- package/test/unit/spec/meeting-info/index.js +293 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +517 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +14 -0
- package/test/unit/spec/meetings/index.js +941 -151
- package/test/unit/spec/meetings/utils.js +206 -2
- package/test/unit/spec/member/index.js +58 -4
- package/test/unit/spec/member/util.js +479 -35
- package/test/unit/spec/members/index.js +319 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +184 -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 +72 -13
- package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
- 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 +343 -9
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reconnection-manager/index.js +84 -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 +31 -51
- package/test/unit/spec/roap/request.ts +203 -85
- package/test/unit/spec/roap/turnDiscovery.ts +48 -13
- package/test/unit/spec/rtcMetrics/index.ts +68 -0
- package/test/unit/spec/stats-analyzer/index.js +29 -2
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -45
- package/test/utils/webex-config.js +4 -0
- package/test/utils/webex-test-users.js +6 -3
- 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
|
@@ -18,31 +18,73 @@ import {
|
|
|
18
18
|
HTTP_VERBS,
|
|
19
19
|
LEAVE,
|
|
20
20
|
LOCI,
|
|
21
|
-
LOCUS,
|
|
22
|
-
MEDIA,
|
|
23
21
|
PARTICIPANT,
|
|
24
22
|
PROVISIONAL_TYPE_DIAL_IN,
|
|
25
23
|
PROVISIONAL_TYPE_DIAL_OUT,
|
|
24
|
+
REACHABILITY,
|
|
26
25
|
SEND_DTMF_ENDPOINT,
|
|
27
26
|
_SLIDES_,
|
|
27
|
+
ANNOTATION,
|
|
28
|
+
IP_VERSION,
|
|
28
29
|
} from '../constants';
|
|
29
|
-
import {Reaction} from '../reactions/reactions.type';
|
|
30
30
|
import {SendReactionOptions, ToggleReactionsOptions} from './request.type';
|
|
31
|
+
import MeetingUtil from './util';
|
|
32
|
+
import {AnnotationInfo} from '../annotation/annotation.types';
|
|
31
33
|
|
|
32
34
|
/**
|
|
33
35
|
* @class MeetingRequest
|
|
34
36
|
*/
|
|
35
37
|
export default class MeetingRequest extends StatelessWebexPlugin {
|
|
36
38
|
changeVideoLayoutDebounced: any;
|
|
39
|
+
meetingRef: WeakRef<any>;
|
|
40
|
+
locusDeltaRequest: (options: object) => Promise<any>;
|
|
41
|
+
buildLocusDeltaRequestOptions: (options: object) => Promise<any>;
|
|
37
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Constructor
|
|
45
|
+
* @param {Object} attrs
|
|
46
|
+
* @param {Object} options
|
|
47
|
+
*/
|
|
38
48
|
constructor(attrs: any, options: any) {
|
|
39
|
-
|
|
49
|
+
const {meeting, ...otherAttrs} = attrs;
|
|
50
|
+
|
|
51
|
+
super(otherAttrs, options);
|
|
52
|
+
|
|
53
|
+
this.locusDeltaRequest = MeetingUtil.generateLocusDeltaRequest(meeting);
|
|
54
|
+
this.buildLocusDeltaRequestOptions = MeetingUtil.generateBuildLocusDeltaRequestOptions(meeting);
|
|
55
|
+
|
|
40
56
|
this.changeVideoLayoutDebounced = debounce(this.changeVideoLayout, 2000, {
|
|
41
57
|
leading: true,
|
|
42
58
|
trailing: true,
|
|
43
59
|
});
|
|
44
60
|
}
|
|
45
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Returns joinCookie from boundedStorage if present.
|
|
64
|
+
* @returns {Object} joinCookie
|
|
65
|
+
*/
|
|
66
|
+
private getJoinCookie = async () => {
|
|
67
|
+
// @ts-ignore
|
|
68
|
+
const joinCookieRaw = await this.webex.boundedStorage
|
|
69
|
+
.get(REACHABILITY.namespace, REACHABILITY.localStorageJoinCookie)
|
|
70
|
+
.catch(() => {});
|
|
71
|
+
|
|
72
|
+
if (joinCookieRaw) {
|
|
73
|
+
try {
|
|
74
|
+
const joinCookie = JSON.parse(joinCookieRaw);
|
|
75
|
+
if (joinCookie) {
|
|
76
|
+
return joinCookie;
|
|
77
|
+
}
|
|
78
|
+
} catch (e) {
|
|
79
|
+
LoggerProxy.logger.error(
|
|
80
|
+
`MeetingRequest#constructor --> Error in parsing join cookie data: ${e}`
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return null;
|
|
86
|
+
};
|
|
87
|
+
|
|
46
88
|
/**
|
|
47
89
|
* Make a network request to join a meeting
|
|
48
90
|
* @param {Object} options
|
|
@@ -57,12 +99,16 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
57
99
|
* @param {boolean} options.moveToResource
|
|
58
100
|
* @param {Object} options.roapMessage
|
|
59
101
|
* @param {boolean} options.breakoutsSupported
|
|
102
|
+
* @param {String} options.locale,
|
|
103
|
+
* @param {Array} options.deviceCapabilities
|
|
104
|
+
* @param {boolean} options.liveAnnotationSupported
|
|
60
105
|
* @returns {Promise}
|
|
61
106
|
*/
|
|
62
107
|
async joinMeeting(options: {
|
|
63
108
|
sipUri: string;
|
|
64
109
|
deviceUrl: string;
|
|
65
110
|
locusUrl: string;
|
|
111
|
+
locusClusterUrl: string;
|
|
66
112
|
resourceId: string;
|
|
67
113
|
correlationId: string;
|
|
68
114
|
ensureConversation: boolean;
|
|
@@ -76,6 +122,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
76
122
|
permissionToken: any;
|
|
77
123
|
preferTranscoding: any;
|
|
78
124
|
breakoutsSupported: boolean;
|
|
125
|
+
locale?: string;
|
|
126
|
+
deviceCapabilities?: Array<string>;
|
|
127
|
+
liveAnnotationSupported: boolean;
|
|
128
|
+
ipVersion?: IP_VERSION;
|
|
79
129
|
}) {
|
|
80
130
|
const {
|
|
81
131
|
asResourceOccupant,
|
|
@@ -84,6 +134,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
84
134
|
permissionToken,
|
|
85
135
|
deviceUrl,
|
|
86
136
|
locusUrl,
|
|
137
|
+
locusClusterUrl,
|
|
87
138
|
resourceId,
|
|
88
139
|
correlationId,
|
|
89
140
|
ensureConversation,
|
|
@@ -93,12 +144,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
93
144
|
roapMessage,
|
|
94
145
|
preferTranscoding,
|
|
95
146
|
breakoutsSupported,
|
|
147
|
+
locale,
|
|
148
|
+
deviceCapabilities = [],
|
|
149
|
+
liveAnnotationSupported,
|
|
150
|
+
ipVersion,
|
|
96
151
|
} = options;
|
|
97
152
|
|
|
98
153
|
LoggerProxy.logger.info('Meeting:request#joinMeeting --> Joining a meeting', correlationId);
|
|
99
154
|
|
|
100
155
|
let url = '';
|
|
101
156
|
|
|
157
|
+
const joinCookie = await this.getJoinCookie();
|
|
158
|
+
|
|
102
159
|
const body: any = {
|
|
103
160
|
asResourceOccupant,
|
|
104
161
|
device: {
|
|
@@ -115,19 +172,32 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
115
172
|
supportsNativeLobby: 1,
|
|
116
173
|
clientMediaPreferences: {
|
|
117
174
|
preferTranscoding: preferTranscoding ?? true,
|
|
175
|
+
joinCookie,
|
|
176
|
+
ipver: ipVersion,
|
|
118
177
|
},
|
|
119
178
|
};
|
|
120
179
|
|
|
121
180
|
if (breakoutsSupported) {
|
|
122
|
-
|
|
181
|
+
deviceCapabilities.push(BREAKOUTS.BREAKOUTS_SUPPORTED);
|
|
182
|
+
}
|
|
183
|
+
if (liveAnnotationSupported) {
|
|
184
|
+
deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
|
|
123
185
|
}
|
|
124
186
|
|
|
187
|
+
if (locale) {
|
|
188
|
+
body.locale = locale;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// add deviceCapabilities prop
|
|
192
|
+
if (deviceCapabilities.length) {
|
|
193
|
+
body.deviceCapabilities = deviceCapabilities;
|
|
194
|
+
}
|
|
125
195
|
// @ts-ignore
|
|
126
|
-
if (this.webex.meetings.
|
|
196
|
+
if (this.webex.meetings.geoHintInfo) {
|
|
127
197
|
// @ts-ignore
|
|
128
|
-
body.device.countryCode = this.webex.meetings.
|
|
198
|
+
body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
|
|
129
199
|
// @ts-ignore
|
|
130
|
-
body.device.regionCode = this.webex.meetings.
|
|
200
|
+
body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
|
|
131
201
|
}
|
|
132
202
|
|
|
133
203
|
if (moderator !== undefined) {
|
|
@@ -146,10 +216,18 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
146
216
|
url = `${locusUrl}/${PARTICIPANT}`;
|
|
147
217
|
} else if (inviteeAddress || meetingNumber) {
|
|
148
218
|
try {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
219
|
+
let clusterUrl;
|
|
220
|
+
|
|
221
|
+
if (locusClusterUrl) {
|
|
222
|
+
clusterUrl = `https://${locusClusterUrl}/locus/api/v1`;
|
|
223
|
+
} else {
|
|
224
|
+
// @ts-ignore
|
|
225
|
+
await this.webex.internal.services.waitForCatalog('postauth');
|
|
226
|
+
// @ts-ignore
|
|
227
|
+
clusterUrl = this.webex.internal.services.get('locus');
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
url = `${clusterUrl}/${LOCI}/${CALL}`;
|
|
153
231
|
body.invitee = {
|
|
154
232
|
address: inviteeAddress || `wbxmn:${meetingNumber}`,
|
|
155
233
|
};
|
|
@@ -251,7 +329,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
251
329
|
};
|
|
252
330
|
|
|
253
331
|
// @ts-ignore
|
|
254
|
-
return this.
|
|
332
|
+
return this.locusDeltaRequest({
|
|
255
333
|
method: HTTP_VERBS.POST,
|
|
256
334
|
uri,
|
|
257
335
|
body,
|
|
@@ -306,7 +384,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
306
384
|
};
|
|
307
385
|
|
|
308
386
|
// @ts-ignore
|
|
309
|
-
return this.
|
|
387
|
+
return this.locusDeltaRequest({
|
|
310
388
|
method: HTTP_VERBS.POST,
|
|
311
389
|
uri,
|
|
312
390
|
body,
|
|
@@ -320,65 +398,25 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
320
398
|
}
|
|
321
399
|
|
|
322
400
|
/**
|
|
323
|
-
*
|
|
401
|
+
* Sends a requests to get the latest locus DTO, it might be a full Locus or a delta, depending on the url provided
|
|
324
402
|
* @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
403
|
* @param {String} options.locusUrl sync url to get ht elatest locus delta
|
|
361
404
|
* @returns {Promise}
|
|
362
405
|
*/
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
const {desync} = options;
|
|
366
|
-
|
|
367
|
-
if (locusUrl) {
|
|
368
|
-
if (desync) {
|
|
369
|
-
locusUrl += `?${LOCUS.SYNCDEBUG}=${desync}`;
|
|
370
|
-
}
|
|
406
|
+
getLocusDTO(options: {url: string}) {
|
|
407
|
+
const {url} = options;
|
|
371
408
|
|
|
409
|
+
if (url) {
|
|
372
410
|
// @ts-ignore
|
|
373
411
|
return this.request({
|
|
374
412
|
method: HTTP_VERBS.GET,
|
|
375
|
-
uri:
|
|
413
|
+
uri: url,
|
|
376
414
|
}).catch((err) => {
|
|
377
415
|
LoggerProxy.logger.error(
|
|
378
|
-
`Meeting:request#
|
|
416
|
+
`Meeting:request#getLocusDTO --> Error getting latest locus, error ${err}`
|
|
379
417
|
);
|
|
380
418
|
|
|
381
|
-
|
|
419
|
+
throw err;
|
|
382
420
|
});
|
|
383
421
|
}
|
|
384
422
|
|
|
@@ -421,7 +459,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
421
459
|
};
|
|
422
460
|
|
|
423
461
|
// @ts-ignore
|
|
424
|
-
return this.
|
|
462
|
+
return this.locusDeltaRequest({
|
|
425
463
|
method: HTTP_VERBS.PUT,
|
|
426
464
|
uri,
|
|
427
465
|
body,
|
|
@@ -435,13 +473,49 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
435
473
|
}
|
|
436
474
|
|
|
437
475
|
/**
|
|
438
|
-
*
|
|
476
|
+
* Prepares request options to to leave a meeting
|
|
439
477
|
* @param {Object} options
|
|
440
478
|
* @param {Url} options.locusUrl
|
|
441
479
|
* @param {String} options.selfId
|
|
442
480
|
* @param {Url} options.deviceUrl
|
|
443
481
|
* @param {String} options.resourceId,
|
|
444
482
|
* @param {String} options.correlationId
|
|
483
|
+
* @returns {Object} request options
|
|
484
|
+
*/
|
|
485
|
+
prepareLeaveMeetingRequestOptions({
|
|
486
|
+
locusUrl,
|
|
487
|
+
selfId,
|
|
488
|
+
deviceUrl: url,
|
|
489
|
+
resourceId,
|
|
490
|
+
correlationId,
|
|
491
|
+
}: {
|
|
492
|
+
locusUrl: string;
|
|
493
|
+
selfId: string;
|
|
494
|
+
deviceUrl: string;
|
|
495
|
+
resourceId: string;
|
|
496
|
+
correlationId: string;
|
|
497
|
+
}) {
|
|
498
|
+
const uri = `${locusUrl}/${PARTICIPANT}/${selfId}/${LEAVE}`;
|
|
499
|
+
const body = {
|
|
500
|
+
device: {
|
|
501
|
+
// @ts-ignore
|
|
502
|
+
deviceType: this.config.meetings.deviceType,
|
|
503
|
+
url,
|
|
504
|
+
},
|
|
505
|
+
usingResource: resourceId || null,
|
|
506
|
+
correlationId,
|
|
507
|
+
};
|
|
508
|
+
|
|
509
|
+
return {
|
|
510
|
+
method: HTTP_VERBS.PUT,
|
|
511
|
+
uri,
|
|
512
|
+
body,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Make a network request to leave a meeting
|
|
518
|
+
* @param {Object} options
|
|
445
519
|
* @returns {Promise}
|
|
446
520
|
*/
|
|
447
521
|
leaveMeeting({
|
|
@@ -470,14 +544,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
470
544
|
correlationId,
|
|
471
545
|
};
|
|
472
546
|
|
|
473
|
-
|
|
474
|
-
return this.request({
|
|
547
|
+
return this.locusDeltaRequest({
|
|
475
548
|
method: HTTP_VERBS.PUT,
|
|
476
549
|
uri,
|
|
477
550
|
body,
|
|
478
551
|
});
|
|
479
552
|
}
|
|
480
553
|
|
|
554
|
+
/**
|
|
555
|
+
* Builds request options to leave a meeting
|
|
556
|
+
* @param {Object} options
|
|
557
|
+
* @returns {Object} request options
|
|
558
|
+
*/
|
|
559
|
+
buildLeaveMeetingRequestOptions(options: any) {
|
|
560
|
+
return this.buildLocusDeltaRequestOptions(this.prepareLeaveMeetingRequestOptions(options));
|
|
561
|
+
}
|
|
562
|
+
|
|
481
563
|
/**
|
|
482
564
|
* Make a network request to acknowledge a meeting
|
|
483
565
|
* @param {Object} options
|
|
@@ -497,14 +579,19 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
497
579
|
correlationId: options.correlationId,
|
|
498
580
|
};
|
|
499
581
|
|
|
500
|
-
|
|
501
|
-
return this.request({
|
|
582
|
+
return this.locusDeltaRequest({
|
|
502
583
|
method: HTTP_VERBS.PUT,
|
|
503
584
|
uri,
|
|
504
585
|
body,
|
|
505
586
|
});
|
|
506
587
|
}
|
|
507
588
|
|
|
589
|
+
/**
|
|
590
|
+
* Makes a network request to lock the meeting
|
|
591
|
+
* @param {Object} options
|
|
592
|
+
* @param {Boolean} options.lock Whether it is locked or not
|
|
593
|
+
* @returns {Promise}
|
|
594
|
+
*/
|
|
508
595
|
lockMeeting(options) {
|
|
509
596
|
const uri = `${options.locusUrl}/${CONTROLS}`;
|
|
510
597
|
const body = {
|
|
@@ -513,8 +600,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
513
600
|
},
|
|
514
601
|
};
|
|
515
602
|
|
|
516
|
-
|
|
517
|
-
return this.request({
|
|
603
|
+
return this.locusDeltaRequest({
|
|
518
604
|
method: HTTP_VERBS.PATCH,
|
|
519
605
|
uri,
|
|
520
606
|
body,
|
|
@@ -540,54 +626,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
540
626
|
...(options.reason && {reason: options.reason}),
|
|
541
627
|
};
|
|
542
628
|
|
|
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({
|
|
629
|
+
return this.locusDeltaRequest({
|
|
591
630
|
method: HTTP_VERBS.PUT,
|
|
592
631
|
uri,
|
|
593
632
|
body,
|
|
@@ -612,6 +651,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
612
651
|
deviceUrl: string;
|
|
613
652
|
resourceId: string;
|
|
614
653
|
uri: string;
|
|
654
|
+
annotationInfo: AnnotationInfo;
|
|
615
655
|
}
|
|
616
656
|
| any
|
|
617
657
|
) {
|
|
@@ -645,6 +685,9 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
645
685
|
if (options?.resourceToken) {
|
|
646
686
|
body.resourceToken = options?.resourceToken;
|
|
647
687
|
}
|
|
688
|
+
if (options?.annotationInfo) {
|
|
689
|
+
body.annotation = options?.annotationInfo;
|
|
690
|
+
}
|
|
648
691
|
|
|
649
692
|
// @ts-ignore
|
|
650
693
|
return this.request({
|
|
@@ -664,7 +707,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
664
707
|
*/
|
|
665
708
|
sendDTMF({locusUrl, deviceUrl, tones}: {locusUrl: string; deviceUrl: string; tones: string}) {
|
|
666
709
|
// @ts-ignore
|
|
667
|
-
return this.
|
|
710
|
+
return this.locusDeltaRequest({
|
|
668
711
|
method: HTTP_VERBS.POST,
|
|
669
712
|
uri: `${locusUrl}/${SEND_DTMF_ENDPOINT}`,
|
|
670
713
|
body: {
|
|
@@ -745,7 +788,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
745
788
|
: undefined;
|
|
746
789
|
|
|
747
790
|
// @ts-ignore
|
|
748
|
-
return this.
|
|
791
|
+
return this.locusDeltaRequest({
|
|
749
792
|
method: HTTP_VERBS.PUT,
|
|
750
793
|
uri: `${locusUrl}/${CONTROLS}`,
|
|
751
794
|
body: {
|
|
@@ -768,7 +811,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
768
811
|
const uri = `${locusUrl}/${END}`;
|
|
769
812
|
|
|
770
813
|
// @ts-ignore
|
|
771
|
-
return this.
|
|
814
|
+
return this.locusDeltaRequest({
|
|
772
815
|
method: HTTP_VERBS.POST,
|
|
773
816
|
uri,
|
|
774
817
|
});
|
|
@@ -820,7 +863,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
820
863
|
const uri = `${locusUrl}/${CONTROLS}`;
|
|
821
864
|
|
|
822
865
|
// @ts-ignore
|
|
823
|
-
return this.
|
|
866
|
+
return this.locusDeltaRequest({
|
|
824
867
|
method: HTTP_VERBS.PUT,
|
|
825
868
|
uri,
|
|
826
869
|
body: {
|
|
@@ -831,4 +874,12 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
831
874
|
},
|
|
832
875
|
});
|
|
833
876
|
}
|
|
877
|
+
|
|
878
|
+
getLocusStatusByUrl(locusUrl: string) {
|
|
879
|
+
// @ts-ignore
|
|
880
|
+
return this.request({
|
|
881
|
+
method: HTTP_VERBS.GET,
|
|
882
|
+
uri: locusUrl,
|
|
883
|
+
});
|
|
884
|
+
}
|
|
834
885
|
}
|