@webex/plugin-meetings 3.7.0-next.2 → 3.7.0-next.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
- package/dist/common/errors/join-webinar-error.js.map +1 -0
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +27 -6
- package/dist/constants.js.map +1 -1
- package/dist/index.js +8 -15
- package/dist/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/in-meeting-actions.js +11 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +84 -131
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/util.js +0 -8
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +29 -17
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +6 -3
- package/dist/meetings/index.js.map +1 -1
- package/dist/members/util.js +4 -2
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/remoteMedia.js +30 -15
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/reachability/clusterReachability.js +12 -11
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/recording-controller/enums.js +8 -4
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +18 -9
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +13 -9
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
- package/dist/types/constants.d.ts +19 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/meeting/in-meeting-actions.d.ts +10 -0
- package/dist/types/meeting/index.d.ts +1 -10
- package/dist/types/meeting/util.d.ts +0 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +4 -4
- package/dist/types/meetings/index.d.ts +3 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/constants.d.ts +3 -1
- package/dist/types/recording-controller/enums.d.ts +5 -2
- package/dist/types/recording-controller/index.d.ts +1 -0
- package/dist/types/recording-controller/util.d.ts +2 -1
- package/dist/webinar/index.js +357 -7
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/common/errors/join-webinar-error.ts +24 -0
- package/src/config.ts +1 -1
- package/src/constants.ts +24 -3
- package/src/index.ts +2 -3
- package/src/meeting/in-meeting-actions.ts +21 -0
- package/src/meeting/index.ts +54 -48
- package/src/meeting/util.ts +0 -9
- package/src/meeting-info/meeting-info-v2.ts +23 -11
- package/src/meetings/index.ts +8 -2
- package/src/members/util.ts +1 -0
- package/src/metrics/constants.ts +3 -1
- package/src/multistream/remoteMedia.ts +28 -15
- package/src/reachability/clusterReachability.ts +4 -1
- package/src/recording-controller/enums.ts +5 -2
- package/src/recording-controller/index.ts +17 -4
- package/src/recording-controller/util.ts +20 -5
- package/src/webinar/index.ts +201 -9
- package/test/unit/spec/meeting/in-meeting-actions.ts +13 -1
- package/test/unit/spec/meeting/index.js +106 -77
- package/test/unit/spec/meeting/utils.js +0 -15
- package/test/unit/spec/meeting-info/meetinginfov2.js +9 -4
- package/test/unit/spec/meetings/index.js +9 -5
- package/test/unit/spec/members/utils.js +95 -0
- package/test/unit/spec/multistream/remoteMedia.ts +11 -7
- package/test/unit/spec/reachability/clusterReachability.ts +7 -0
- package/test/unit/spec/recording-controller/index.js +61 -5
- package/test/unit/spec/recording-controller/util.js +39 -3
- package/test/unit/spec/webinar/index.ts +363 -0
- package/dist/common/errors/webinar-registration-error.js.map +0 -1
- package/src/common/errors/webinar-registration-error.ts +0 -27
package/dist/webinar/index.js
CHANGED
|
@@ -6,10 +6,15 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
9
12
|
var _webexCore = require("@webex/webex-core");
|
|
13
|
+
var _uuid = _interopRequireDefault(require("uuid"));
|
|
10
14
|
var _lodash = require("lodash");
|
|
11
15
|
var _constants = require("../constants");
|
|
12
16
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
17
|
+
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
13
18
|
/*!
|
|
14
19
|
* Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
|
|
15
20
|
*/
|
|
@@ -31,7 +36,9 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
31
36
|
// appears the ability to manage webcast
|
|
32
37
|
selfIsPanelist: 'boolean',
|
|
33
38
|
// self is panelist
|
|
34
|
-
selfIsAttendee: 'boolean'
|
|
39
|
+
selfIsAttendee: 'boolean',
|
|
40
|
+
// self is attendee
|
|
41
|
+
practiceSessionEnabled: 'boolean' // practice session enabled
|
|
35
42
|
},
|
|
36
43
|
/**
|
|
37
44
|
* Update the current locus url of the webinar
|
|
@@ -65,17 +72,360 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
65
72
|
* @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states
|
|
66
73
|
*/
|
|
67
74
|
updateRoleChanged: function updateRoleChanged(payload) {
|
|
68
|
-
var
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.
|
|
75
|
+
var oldRoles = (0, _lodash.get)(payload, 'oldRoles', []);
|
|
76
|
+
var newRoles = (0, _lodash.get)(payload, 'newRoles', []);
|
|
77
|
+
var isPromoted = oldRoles.includes(_constants.SELF_ROLES.ATTENDEE) && newRoles.includes(_constants.SELF_ROLES.PANELIST);
|
|
78
|
+
var isDemoted = oldRoles.includes(_constants.SELF_ROLES.PANELIST) && newRoles.includes(_constants.SELF_ROLES.ATTENDEE);
|
|
79
|
+
this.set('selfIsPanelist', newRoles.includes(_constants.SELF_ROLES.PANELIST));
|
|
80
|
+
this.set('selfIsAttendee', newRoles.includes(_constants.SELF_ROLES.ATTENDEE));
|
|
81
|
+
this.updateCanManageWebcast(newRoles.includes(_constants.SELF_ROLES.MODERATOR));
|
|
73
82
|
return {
|
|
74
83
|
isPromoted: isPromoted,
|
|
75
84
|
isDemoted: isDemoted
|
|
76
85
|
};
|
|
77
86
|
},
|
|
78
|
-
|
|
87
|
+
/**
|
|
88
|
+
* start or stop practice session for webinar
|
|
89
|
+
* @param {boolean} enabled
|
|
90
|
+
* @returns {Promise}
|
|
91
|
+
*/
|
|
92
|
+
setPracticeSessionState: function setPracticeSessionState(enabled) {
|
|
93
|
+
return this.request({
|
|
94
|
+
method: _constants.HTTP_VERBS.PATCH,
|
|
95
|
+
uri: "".concat(this.locusUrl, "/controls"),
|
|
96
|
+
body: {
|
|
97
|
+
practiceSession: {
|
|
98
|
+
enabled: enabled
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}).catch(function (error) {
|
|
102
|
+
_loggerProxy.default.logger.error('Meeting:webinar#setPracticeSessionState failed', error);
|
|
103
|
+
throw error;
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
/**
|
|
107
|
+
* update practice session status
|
|
108
|
+
* @param {object} payload
|
|
109
|
+
* @returns {void}
|
|
110
|
+
*/
|
|
111
|
+
updatePracticeSessionStatus: function updatePracticeSessionStatus(payload) {
|
|
112
|
+
this.set('practiceSessionEnabled', payload.enabled);
|
|
113
|
+
},
|
|
114
|
+
/**
|
|
115
|
+
* start webcast mode for webinar
|
|
116
|
+
* @param {object} meeting
|
|
117
|
+
* @param {object} layout
|
|
118
|
+
* @returns {Promise}
|
|
119
|
+
*/
|
|
120
|
+
startWebcast: function startWebcast(meeting, layout) {
|
|
121
|
+
var _this = this;
|
|
122
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
123
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
124
|
+
while (1) switch (_context.prev = _context.next) {
|
|
125
|
+
case 0:
|
|
126
|
+
if (meeting) {
|
|
127
|
+
_context.next = 3;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
_loggerProxy.default.logger.error("Meeting:webinar#startWebcast failed --> meeting parameter : ".concat(meeting));
|
|
131
|
+
throw new Error('Meeting parameter does not meet expectations');
|
|
132
|
+
case 3:
|
|
133
|
+
_context.t0 = _this;
|
|
134
|
+
_context.t1 = _constants.HTTP_VERBS.PUT;
|
|
135
|
+
_context.t2 = "".concat(_this.webcastInstanceUrl, "/streaming");
|
|
136
|
+
_context.t3 = _defineProperty2.default;
|
|
137
|
+
_context.next = 9;
|
|
138
|
+
return _this.webex.credentials.getUserToken();
|
|
139
|
+
case 9:
|
|
140
|
+
_context.t4 = _context.sent;
|
|
141
|
+
_context.t5 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
142
|
+
_context.t6 = {
|
|
143
|
+
authorization: _context.t4,
|
|
144
|
+
trackingId: _context.t5
|
|
145
|
+
};
|
|
146
|
+
_context.t7 = _constants.HEADERS.CONTENT_TYPE;
|
|
147
|
+
_context.t8 = _constants.HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON;
|
|
148
|
+
_context.t9 = (0, _context.t3)(_context.t6, _context.t7, _context.t8);
|
|
149
|
+
_context.t10 = {
|
|
150
|
+
action: 'start',
|
|
151
|
+
meetingInfo: {
|
|
152
|
+
locusId: meeting.locusId,
|
|
153
|
+
correlationId: meeting.correlationId
|
|
154
|
+
},
|
|
155
|
+
layout: layout
|
|
156
|
+
};
|
|
157
|
+
_context.t11 = {
|
|
158
|
+
method: _context.t1,
|
|
159
|
+
uri: _context.t2,
|
|
160
|
+
headers: _context.t9,
|
|
161
|
+
body: _context.t10
|
|
162
|
+
};
|
|
163
|
+
return _context.abrupt("return", _context.t0.request.call(_context.t0, _context.t11).catch(function (error) {
|
|
164
|
+
_loggerProxy.default.logger.error('Meeting:webinar#startWebcast failed', error);
|
|
165
|
+
throw error;
|
|
166
|
+
}));
|
|
167
|
+
case 18:
|
|
168
|
+
case "end":
|
|
169
|
+
return _context.stop();
|
|
170
|
+
}
|
|
171
|
+
}, _callee);
|
|
172
|
+
}))();
|
|
173
|
+
},
|
|
174
|
+
/**
|
|
175
|
+
* stop webcast mode for webinar
|
|
176
|
+
* @returns {Promise}
|
|
177
|
+
*/
|
|
178
|
+
stopWebcast: function stopWebcast() {
|
|
179
|
+
var _this2 = this;
|
|
180
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
181
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
182
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
183
|
+
case 0:
|
|
184
|
+
_context2.t0 = _this2;
|
|
185
|
+
_context2.t1 = _constants.HTTP_VERBS.PUT;
|
|
186
|
+
_context2.t2 = "".concat(_this2.webcastInstanceUrl, "/streaming");
|
|
187
|
+
_context2.t3 = _defineProperty2.default;
|
|
188
|
+
_context2.next = 6;
|
|
189
|
+
return _this2.webex.credentials.getUserToken();
|
|
190
|
+
case 6:
|
|
191
|
+
_context2.t4 = _context2.sent;
|
|
192
|
+
_context2.t5 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
193
|
+
_context2.t6 = {
|
|
194
|
+
authorization: _context2.t4,
|
|
195
|
+
trackingId: _context2.t5
|
|
196
|
+
};
|
|
197
|
+
_context2.t7 = _constants.HEADERS.CONTENT_TYPE;
|
|
198
|
+
_context2.t8 = _constants.HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON;
|
|
199
|
+
_context2.t9 = (0, _context2.t3)(_context2.t6, _context2.t7, _context2.t8);
|
|
200
|
+
_context2.t10 = {
|
|
201
|
+
action: 'stop'
|
|
202
|
+
};
|
|
203
|
+
_context2.t11 = {
|
|
204
|
+
method: _context2.t1,
|
|
205
|
+
uri: _context2.t2,
|
|
206
|
+
headers: _context2.t9,
|
|
207
|
+
body: _context2.t10
|
|
208
|
+
};
|
|
209
|
+
return _context2.abrupt("return", _context2.t0.request.call(_context2.t0, _context2.t11).catch(function (error) {
|
|
210
|
+
_loggerProxy.default.logger.error('Meeting:webinar#stopWebcast failed', error);
|
|
211
|
+
throw error;
|
|
212
|
+
}));
|
|
213
|
+
case 15:
|
|
214
|
+
case "end":
|
|
215
|
+
return _context2.stop();
|
|
216
|
+
}
|
|
217
|
+
}, _callee2);
|
|
218
|
+
}))();
|
|
219
|
+
},
|
|
220
|
+
/**
|
|
221
|
+
* query webcast layout for webinar
|
|
222
|
+
* @returns {Promise}
|
|
223
|
+
*/
|
|
224
|
+
queryWebcastLayout: function queryWebcastLayout() {
|
|
225
|
+
var _this3 = this;
|
|
226
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
227
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
228
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
229
|
+
case 0:
|
|
230
|
+
_context3.t0 = _this3;
|
|
231
|
+
_context3.t1 = _constants.HTTP_VERBS.GET;
|
|
232
|
+
_context3.t2 = "".concat(_this3.webcastInstanceUrl, "/layout");
|
|
233
|
+
_context3.next = 5;
|
|
234
|
+
return _this3.webex.credentials.getUserToken();
|
|
235
|
+
case 5:
|
|
236
|
+
_context3.t3 = _context3.sent;
|
|
237
|
+
_context3.t4 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
238
|
+
_context3.t5 = {
|
|
239
|
+
authorization: _context3.t3,
|
|
240
|
+
trackingId: _context3.t4
|
|
241
|
+
};
|
|
242
|
+
_context3.t6 = {
|
|
243
|
+
method: _context3.t1,
|
|
244
|
+
uri: _context3.t2,
|
|
245
|
+
headers: _context3.t5
|
|
246
|
+
};
|
|
247
|
+
return _context3.abrupt("return", _context3.t0.request.call(_context3.t0, _context3.t6).catch(function (error) {
|
|
248
|
+
_loggerProxy.default.logger.error('Meeting:webinar#queryWebcastLayout failed', error);
|
|
249
|
+
throw error;
|
|
250
|
+
}));
|
|
251
|
+
case 10:
|
|
252
|
+
case "end":
|
|
253
|
+
return _context3.stop();
|
|
254
|
+
}
|
|
255
|
+
}, _callee3);
|
|
256
|
+
}))();
|
|
257
|
+
},
|
|
258
|
+
/**
|
|
259
|
+
* update webcast layout for webinar
|
|
260
|
+
* @param {object} layout
|
|
261
|
+
* @returns {Promise}
|
|
262
|
+
*/
|
|
263
|
+
updateWebcastLayout: function updateWebcastLayout(layout) {
|
|
264
|
+
var _this4 = this;
|
|
265
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
266
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
267
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
268
|
+
case 0:
|
|
269
|
+
_context4.t0 = _this4;
|
|
270
|
+
_context4.t1 = _constants.HTTP_VERBS.PUT;
|
|
271
|
+
_context4.t2 = "".concat(_this4.webcastInstanceUrl, "/layout");
|
|
272
|
+
_context4.t3 = _defineProperty2.default;
|
|
273
|
+
_context4.next = 6;
|
|
274
|
+
return _this4.webex.credentials.getUserToken();
|
|
275
|
+
case 6:
|
|
276
|
+
_context4.t4 = _context4.sent;
|
|
277
|
+
_context4.t5 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
278
|
+
_context4.t6 = {
|
|
279
|
+
authorization: _context4.t4,
|
|
280
|
+
trackingId: _context4.t5
|
|
281
|
+
};
|
|
282
|
+
_context4.t7 = _constants.HEADERS.CONTENT_TYPE;
|
|
283
|
+
_context4.t8 = _constants.HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON;
|
|
284
|
+
_context4.t9 = (0, _context4.t3)(_context4.t6, _context4.t7, _context4.t8);
|
|
285
|
+
_context4.t10 = {
|
|
286
|
+
videoLayout: layout.videoLayout,
|
|
287
|
+
contentLayout: layout.contentLayout,
|
|
288
|
+
syncStageLayout: layout.syncStageLayout,
|
|
289
|
+
syncStageInMeeting: layout.syncStageInMeeting
|
|
290
|
+
};
|
|
291
|
+
_context4.t11 = {
|
|
292
|
+
method: _context4.t1,
|
|
293
|
+
uri: _context4.t2,
|
|
294
|
+
headers: _context4.t9,
|
|
295
|
+
body: _context4.t10
|
|
296
|
+
};
|
|
297
|
+
return _context4.abrupt("return", _context4.t0.request.call(_context4.t0, _context4.t11).catch(function (error) {
|
|
298
|
+
_loggerProxy.default.logger.error('Meeting:webinar#updateWebcastLayout failed', error);
|
|
299
|
+
throw error;
|
|
300
|
+
}));
|
|
301
|
+
case 15:
|
|
302
|
+
case "end":
|
|
303
|
+
return _context4.stop();
|
|
304
|
+
}
|
|
305
|
+
}, _callee4);
|
|
306
|
+
}))();
|
|
307
|
+
},
|
|
308
|
+
/**
|
|
309
|
+
* view all webcast attendees
|
|
310
|
+
* @param {string} queryString
|
|
311
|
+
* @returns {Promise}
|
|
312
|
+
*/
|
|
313
|
+
viewAllWebcastAttendees: function viewAllWebcastAttendees() {
|
|
314
|
+
var _this5 = this;
|
|
315
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
316
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
317
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
318
|
+
case 0:
|
|
319
|
+
_context5.t0 = _this5;
|
|
320
|
+
_context5.t1 = _constants.HTTP_VERBS.GET;
|
|
321
|
+
_context5.t2 = "".concat(_this5.webcastInstanceUrl, "/attendees");
|
|
322
|
+
_context5.next = 5;
|
|
323
|
+
return _this5.webex.credentials.getUserToken();
|
|
324
|
+
case 5:
|
|
325
|
+
_context5.t3 = _context5.sent;
|
|
326
|
+
_context5.t4 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
327
|
+
_context5.t5 = {
|
|
328
|
+
authorization: _context5.t3,
|
|
329
|
+
trackingId: _context5.t4
|
|
330
|
+
};
|
|
331
|
+
_context5.t6 = {
|
|
332
|
+
method: _context5.t1,
|
|
333
|
+
uri: _context5.t2,
|
|
334
|
+
headers: _context5.t5
|
|
335
|
+
};
|
|
336
|
+
return _context5.abrupt("return", _context5.t0.request.call(_context5.t0, _context5.t6).catch(function (error) {
|
|
337
|
+
_loggerProxy.default.logger.error('Meeting:webinar#viewAllWebcastAttendees failed', error);
|
|
338
|
+
throw error;
|
|
339
|
+
}));
|
|
340
|
+
case 10:
|
|
341
|
+
case "end":
|
|
342
|
+
return _context5.stop();
|
|
343
|
+
}
|
|
344
|
+
}, _callee5);
|
|
345
|
+
}))();
|
|
346
|
+
},
|
|
347
|
+
/**
|
|
348
|
+
* search webcast attendees by query string
|
|
349
|
+
* @param {string} queryString
|
|
350
|
+
* @returns {Promise}
|
|
351
|
+
*/
|
|
352
|
+
searchWebcastAttendees: function searchWebcastAttendees() {
|
|
353
|
+
var _arguments = arguments,
|
|
354
|
+
_this6 = this;
|
|
355
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
|
|
356
|
+
var queryString;
|
|
357
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
358
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
359
|
+
case 0:
|
|
360
|
+
queryString = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : '';
|
|
361
|
+
_context6.t0 = _this6;
|
|
362
|
+
_context6.t1 = _constants.HTTP_VERBS.GET;
|
|
363
|
+
_context6.t2 = "".concat(_this6.webcastInstanceUrl, "/attendees?keyword=").concat(encodeURIComponent(queryString));
|
|
364
|
+
_context6.next = 6;
|
|
365
|
+
return _this6.webex.credentials.getUserToken();
|
|
366
|
+
case 6:
|
|
367
|
+
_context6.t3 = _context6.sent;
|
|
368
|
+
_context6.t4 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
369
|
+
_context6.t5 = {
|
|
370
|
+
authorization: _context6.t3,
|
|
371
|
+
trackingId: _context6.t4
|
|
372
|
+
};
|
|
373
|
+
_context6.t6 = {
|
|
374
|
+
method: _context6.t1,
|
|
375
|
+
uri: _context6.t2,
|
|
376
|
+
headers: _context6.t5
|
|
377
|
+
};
|
|
378
|
+
return _context6.abrupt("return", _context6.t0.request.call(_context6.t0, _context6.t6).catch(function (error) {
|
|
379
|
+
_loggerProxy.default.logger.error('Meeting:webinar#searchWebcastAttendees failed', error);
|
|
380
|
+
throw error;
|
|
381
|
+
}));
|
|
382
|
+
case 11:
|
|
383
|
+
case "end":
|
|
384
|
+
return _context6.stop();
|
|
385
|
+
}
|
|
386
|
+
}, _callee6);
|
|
387
|
+
}))();
|
|
388
|
+
},
|
|
389
|
+
/**
|
|
390
|
+
* expel webcast attendee by participantId
|
|
391
|
+
* @param {string} participantId
|
|
392
|
+
* @returns {Promise}
|
|
393
|
+
*/
|
|
394
|
+
expelWebcastAttendee: function expelWebcastAttendee(participantId) {
|
|
395
|
+
var _this7 = this;
|
|
396
|
+
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
|
|
397
|
+
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
398
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
399
|
+
case 0:
|
|
400
|
+
_context7.t0 = _this7;
|
|
401
|
+
_context7.t1 = _constants.HTTP_VERBS.DELETE;
|
|
402
|
+
_context7.t2 = "".concat(_this7.webcastInstanceUrl, "/attendees/").concat(participantId);
|
|
403
|
+
_context7.next = 5;
|
|
404
|
+
return _this7.webex.credentials.getUserToken();
|
|
405
|
+
case 5:
|
|
406
|
+
_context7.t3 = _context7.sent;
|
|
407
|
+
_context7.t4 = "".concat(_webexCore.config.trackingIdPrefix, "_").concat(_uuid.default.v4().toString());
|
|
408
|
+
_context7.t5 = {
|
|
409
|
+
authorization: _context7.t3,
|
|
410
|
+
trackingId: _context7.t4
|
|
411
|
+
};
|
|
412
|
+
_context7.t6 = {
|
|
413
|
+
method: _context7.t1,
|
|
414
|
+
uri: _context7.t2,
|
|
415
|
+
headers: _context7.t5
|
|
416
|
+
};
|
|
417
|
+
return _context7.abrupt("return", _context7.t0.request.call(_context7.t0, _context7.t6).catch(function (error) {
|
|
418
|
+
_loggerProxy.default.logger.error('Meeting:webinar#expelWebcastAttendee failed', error);
|
|
419
|
+
throw error;
|
|
420
|
+
}));
|
|
421
|
+
case 10:
|
|
422
|
+
case "end":
|
|
423
|
+
return _context7.stop();
|
|
424
|
+
}
|
|
425
|
+
}, _callee7);
|
|
426
|
+
}))();
|
|
427
|
+
},
|
|
428
|
+
version: "3.7.0-next.20"
|
|
79
429
|
});
|
|
80
430
|
var _default = exports.default = Webinar;
|
|
81
431
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_lodash","_constants","_collection","_interopRequireDefault","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","webcastInstanceUrl","canManageWebcast","selfIsPanelist","selfIsAttendee","locusUrlUpdate","set","updateWebcastUrl","payload","get","updateCanManageWebcast","updateRoleChanged","isPromoted","includes","SELF_ROLES","ATTENDEE","PANELIST","isDemoted","MODERATOR","version","_default","exports","default"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {get} from 'lodash';\nimport {MEETINGS, SELF_ROLES} from '../constants';\n\nimport WebinarCollection from './collection';\n\n/**\n * @class Webinar\n */\nconst Webinar = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n webinar: WebinarCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current webinar's locus url\n webcastInstanceUrl: 'string', // current webinar's webcast instance url\n canManageWebcast: 'boolean', // appears the ability to manage webcast\n selfIsPanelist: 'boolean', // self is panelist\n selfIsAttendee: 'boolean', // self is attendee\n },\n\n /**\n * Update the current locus url of the webinar\n * @param {string} locusUrl\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current webcast instance url of the meeting\n * @param {object} payload\n * @returns {void}\n */\n updateWebcastUrl(payload) {\n this.set('webcastInstanceUrl', get(payload, 'resources.webcastInstance.url'));\n },\n\n /**\n * Update whether self has capability to manage start/stop webcast (only host can manage it)\n * @param {boolean} canManageWebcast\n * @returns {void}\n */\n updateCanManageWebcast(canManageWebcast) {\n this.set('canManageWebcast', canManageWebcast);\n },\n\n /**\n * Updates user roles and manages associated state transitions\n * @param {object} payload\n * @param {string[]} payload.oldRoles - Previous roles of the user\n * @param {string[]} payload.newRoles - New roles of the user\n * @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states\n */\n updateRoleChanged(payload) {\n const isPromoted =\n get(payload, 'oldRoles', []).includes(SELF_ROLES.ATTENDEE) &&\n get(payload, 'newRoles', []).includes(SELF_ROLES.PANELIST);\n const isDemoted =\n get(payload, 'oldRoles', []).includes(SELF_ROLES.PANELIST) &&\n get(payload, 'newRoles', []).includes(SELF_ROLES.ATTENDEE);\n this.set('selfIsPanelist', get(payload, 'newRoles', []).includes(SELF_ROLES.PANELIST));\n this.set('selfIsAttendee', get(payload, 'newRoles', []).includes(SELF_ROLES.ATTENDEE));\n this.updateCanManageWebcast(get(payload, 'newRoles', []).includes(SELF_ROLES.MODERATOR));\n\n return {isPromoted, isDemoted};\n },\n});\n\nexport default Webinar;\n"],"mappings":";;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAPA;AACA;AACA;;AAOA;AACA;AACA;AACA,IAAMK,OAAO,GAAGC,sBAAW,CAACC,MAAM,CAAC;EACjCC,SAAS,EAAEC,mBAAQ;EACnBC,WAAW,EAAE;IACXC,OAAO,EAAEC;EACX,CAAC;EAEDC,KAAK,EAAE;IACLC,QAAQ,EAAE,QAAQ;IAAE;IACpBC,kBAAkB,EAAE,QAAQ;IAAE;IAC9BC,gBAAgB,EAAE,SAAS;IAAE;IAC7BC,cAAc,EAAE,SAAS;IAAE;IAC3BC,cAAc,EAAE,SAAS,CAAE;EAC7B,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,cAAc,WAAAA,eAACL,QAAQ,EAAE;IACvB,IAAI,CAACM,GAAG,CAAC,UAAU,EAAEN,QAAQ,CAAC;EAChC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEO,gBAAgB,WAAAA,iBAACC,OAAO,EAAE;IACxB,IAAI,CAACF,GAAG,CAAC,oBAAoB,EAAE,IAAAG,WAAG,EAACD,OAAO,EAAE,+BAA+B,CAAC,CAAC;EAC/E,CAAC;EAED;AACF;AACA;AACA;AACA;EACEE,sBAAsB,WAAAA,uBAACR,gBAAgB,EAAE;IACvC,IAAI,CAACI,GAAG,CAAC,kBAAkB,EAAEJ,gBAAgB,CAAC;EAChD,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACES,iBAAiB,WAAAA,kBAACH,OAAO,EAAE;IACzB,IAAMI,UAAU,GACd,IAAAH,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAACK,QAAQ,CAACC,qBAAU,CAACC,QAAQ,CAAC,IAC1D,IAAAN,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAACK,QAAQ,CAACC,qBAAU,CAACE,QAAQ,CAAC;IAC5D,IAAMC,SAAS,GACb,IAAAR,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAACK,QAAQ,CAACC,qBAAU,CAACE,QAAQ,CAAC,IAC1D,IAAAP,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAACK,QAAQ,CAACC,qBAAU,CAACC,QAAQ,CAAC;IAC5D,IAAI,CAACT,GAAG,CAAC,gBAAgB,EAAE,IAAAG,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAACK,QAAQ,CAACC,qBAAU,CAACE,QAAQ,CAAC,CAAC;IACtF,IAAI,CAACV,GAAG,CAAC,gBAAgB,EAAE,IAAAG,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAACK,QAAQ,CAACC,qBAAU,CAACC,QAAQ,CAAC,CAAC;IACtF,IAAI,CAACL,sBAAsB,CAAC,IAAAD,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,CAACK,QAAQ,CAACC,qBAAU,CAACI,SAAS,CAAC,CAAC;IAExF,OAAO;MAACN,UAAU,EAAVA,UAAU;MAAEK,SAAS,EAATA;IAAS,CAAC;EAChC,CAAC;EAAAE,OAAA;AACH,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEY/B,OAAO"}
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_uuid","_interopRequireDefault","_lodash","_constants","_collection","_loggerProxy","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","webcastInstanceUrl","canManageWebcast","selfIsPanelist","selfIsAttendee","practiceSessionEnabled","locusUrlUpdate","set","updateWebcastUrl","payload","get","updateCanManageWebcast","updateRoleChanged","oldRoles","newRoles","isPromoted","includes","SELF_ROLES","ATTENDEE","PANELIST","isDemoted","MODERATOR","setPracticeSessionState","enabled","request","method","HTTP_VERBS","PATCH","uri","concat","body","practiceSession","catch","error","LoggerProxy","logger","updatePracticeSessionStatus","startWebcast","meeting","layout","_this","_asyncToGenerator2","default","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","Error","t0","t1","PUT","t2","t3","_defineProperty2","webex","credentials","getUserToken","t4","sent","t5","config","trackingIdPrefix","uuid","v4","toString","t6","authorization","trackingId","t7","HEADERS","CONTENT_TYPE","t8","CONTENT_TYPE_VALUE","APPLICATION_JSON","t9","t10","action","meetingInfo","locusId","correlationId","t11","headers","abrupt","call","stop","stopWebcast","_this2","_callee2","_callee2$","_context2","queryWebcastLayout","_this3","_callee3","_callee3$","_context3","GET","updateWebcastLayout","_this4","_callee4","_callee4$","_context4","videoLayout","contentLayout","syncStageLayout","syncStageInMeeting","viewAllWebcastAttendees","_this5","_callee5","_callee5$","_context5","searchWebcastAttendees","_arguments","arguments","_this6","_callee6","queryString","_callee6$","_context6","length","undefined","encodeURIComponent","expelWebcastAttendee","participantId","_this7","_callee7","_callee7$","_context7","DELETE","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport uuid from 'uuid';\nimport {get} from 'lodash';\nimport {HEADERS, HTTP_VERBS, MEETINGS, SELF_ROLES} from '../constants';\n\nimport WebinarCollection from './collection';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @class Webinar\n */\nconst Webinar = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n webinar: WebinarCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current webinar's locus url\n webcastInstanceUrl: 'string', // current webinar's webcast instance url\n canManageWebcast: 'boolean', // appears the ability to manage webcast\n selfIsPanelist: 'boolean', // self is panelist\n selfIsAttendee: 'boolean', // self is attendee\n practiceSessionEnabled: 'boolean', // practice session enabled\n },\n\n /**\n * Update the current locus url of the webinar\n * @param {string} locusUrl\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current webcast instance url of the meeting\n * @param {object} payload\n * @returns {void}\n */\n updateWebcastUrl(payload) {\n this.set('webcastInstanceUrl', get(payload, 'resources.webcastInstance.url'));\n },\n\n /**\n * Update whether self has capability to manage start/stop webcast (only host can manage it)\n * @param {boolean} canManageWebcast\n * @returns {void}\n */\n updateCanManageWebcast(canManageWebcast) {\n this.set('canManageWebcast', canManageWebcast);\n },\n\n /**\n * Updates user roles and manages associated state transitions\n * @param {object} payload\n * @param {string[]} payload.oldRoles - Previous roles of the user\n * @param {string[]} payload.newRoles - New roles of the user\n * @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states\n */\n updateRoleChanged(payload) {\n const oldRoles = get(payload, 'oldRoles', []);\n const newRoles = get(payload, 'newRoles', []);\n\n const isPromoted =\n oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.PANELIST);\n const isDemoted =\n oldRoles.includes(SELF_ROLES.PANELIST) && newRoles.includes(SELF_ROLES.ATTENDEE);\n this.set('selfIsPanelist', newRoles.includes(SELF_ROLES.PANELIST));\n this.set('selfIsAttendee', newRoles.includes(SELF_ROLES.ATTENDEE));\n this.updateCanManageWebcast(newRoles.includes(SELF_ROLES.MODERATOR));\n\n return {isPromoted, isDemoted};\n },\n\n /**\n * start or stop practice session for webinar\n * @param {boolean} enabled\n * @returns {Promise}\n */\n setPracticeSessionState(enabled) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n practiceSession: {\n enabled,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#setPracticeSessionState failed', error);\n throw error;\n });\n },\n\n /**\n * update practice session status\n * @param {object} payload\n * @returns {void}\n */\n updatePracticeSessionStatus(payload) {\n this.set('practiceSessionEnabled', payload.enabled);\n },\n\n /**\n * start webcast mode for webinar\n * @param {object} meeting\n * @param {object} layout\n * @returns {Promise}\n */\n async startWebcast(meeting, layout) {\n if (!meeting) {\n LoggerProxy.logger.error(\n `Meeting:webinar#startWebcast failed --> meeting parameter : ${meeting}`\n );\n throw new Error('Meeting parameter does not meet expectations');\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/streaming`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n action: 'start',\n meetingInfo: {\n locusId: meeting.locusId,\n correlationId: meeting.correlationId,\n },\n layout,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#startWebcast failed', error);\n throw error;\n });\n },\n\n /**\n * stop webcast mode for webinar\n * @returns {Promise}\n */\n async stopWebcast() {\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/streaming`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n action: 'stop',\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#stopWebcast failed', error);\n throw error;\n });\n },\n\n /**\n * query webcast layout for webinar\n * @returns {Promise}\n */\n async queryWebcastLayout() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/layout`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#queryWebcastLayout failed', error);\n throw error;\n });\n },\n\n /**\n * update webcast layout for webinar\n * @param {object} layout\n * @returns {Promise}\n */\n async updateWebcastLayout(layout) {\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/layout`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n videoLayout: layout.videoLayout,\n contentLayout: layout.contentLayout,\n syncStageLayout: layout.syncStageLayout,\n syncStageInMeeting: layout.syncStageInMeeting,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#updateWebcastLayout failed', error);\n throw error;\n });\n },\n\n /**\n * view all webcast attendees\n * @param {string} queryString\n * @returns {Promise}\n */\n async viewAllWebcastAttendees() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/attendees`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#viewAllWebcastAttendees failed', error);\n throw error;\n });\n },\n\n /**\n * search webcast attendees by query string\n * @param {string} queryString\n * @returns {Promise}\n */\n async searchWebcastAttendees(queryString = '') {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/attendees?keyword=${encodeURIComponent(queryString)}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#searchWebcastAttendees failed', error);\n throw error;\n });\n },\n\n /**\n * expel webcast attendee by participantId\n * @param {string} participantId\n * @returns {Promise}\n */\n async expelWebcastAttendee(participantId) {\n return this.request({\n method: HTTP_VERBS.DELETE,\n uri: `${this.webcastInstanceUrl}/attendees/${participantId}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#expelWebcastAttendee failed', error);\n throw error;\n });\n },\n});\n\nexport default Webinar;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
44
44
|
"@webex/jest-config-legacy": "0.0.0",
|
|
45
45
|
"@webex/legacy-tools": "0.0.0",
|
|
46
|
-
"@webex/plugin-meetings": "3.7.0-next.
|
|
47
|
-
"@webex/plugin-rooms": "3.7.0-next.
|
|
48
|
-
"@webex/test-helper-chai": "3.7.0-next.
|
|
49
|
-
"@webex/test-helper-mocha": "3.7.0-next.
|
|
50
|
-
"@webex/test-helper-mock-webex": "3.7.0-next.
|
|
51
|
-
"@webex/test-helper-retry": "3.7.0-next.
|
|
52
|
-
"@webex/test-helper-test-users": "3.7.0-next.
|
|
46
|
+
"@webex/plugin-meetings": "3.7.0-next.20",
|
|
47
|
+
"@webex/plugin-rooms": "3.7.0-next.7",
|
|
48
|
+
"@webex/test-helper-chai": "3.7.0-next.5",
|
|
49
|
+
"@webex/test-helper-mocha": "3.7.0-next.5",
|
|
50
|
+
"@webex/test-helper-mock-webex": "3.7.0-next.5",
|
|
51
|
+
"@webex/test-helper-retry": "3.7.0-next.5",
|
|
52
|
+
"@webex/test-helper-test-users": "3.7.0-next.5",
|
|
53
53
|
"chai": "^4.3.4",
|
|
54
54
|
"chai-as-promised": "^7.1.1",
|
|
55
55
|
"eslint": "^8.24.0",
|
|
@@ -61,21 +61,21 @@
|
|
|
61
61
|
"typescript": "^4.7.4"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@webex/common": "3.7.0-next.
|
|
65
|
-
"@webex/internal-media-core": "2.12.
|
|
66
|
-
"@webex/internal-plugin-conversation": "3.7.0-next.
|
|
67
|
-
"@webex/internal-plugin-device": "3.7.0-next.
|
|
68
|
-
"@webex/internal-plugin-llm": "3.7.0-next.
|
|
69
|
-
"@webex/internal-plugin-mercury": "3.7.0-next.
|
|
70
|
-
"@webex/internal-plugin-metrics": "3.7.0-next.
|
|
71
|
-
"@webex/internal-plugin-support": "3.7.0-next.
|
|
72
|
-
"@webex/internal-plugin-user": "3.7.0-next.
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.7.0-next.
|
|
74
|
-
"@webex/media-helpers": "3.7.0-next.
|
|
75
|
-
"@webex/plugin-people": "3.7.0-next.
|
|
76
|
-
"@webex/plugin-rooms": "3.7.0-next.
|
|
64
|
+
"@webex/common": "3.7.0-next.5",
|
|
65
|
+
"@webex/internal-media-core": "2.12.3",
|
|
66
|
+
"@webex/internal-plugin-conversation": "3.7.0-next.7",
|
|
67
|
+
"@webex/internal-plugin-device": "3.7.0-next.5",
|
|
68
|
+
"@webex/internal-plugin-llm": "3.7.0-next.5",
|
|
69
|
+
"@webex/internal-plugin-mercury": "3.7.0-next.5",
|
|
70
|
+
"@webex/internal-plugin-metrics": "3.7.0-next.5",
|
|
71
|
+
"@webex/internal-plugin-support": "3.7.0-next.8",
|
|
72
|
+
"@webex/internal-plugin-user": "3.7.0-next.5",
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.7.0-next.20",
|
|
74
|
+
"@webex/media-helpers": "3.7.0-next.6",
|
|
75
|
+
"@webex/plugin-people": "3.7.0-next.5",
|
|
76
|
+
"@webex/plugin-rooms": "3.7.0-next.7",
|
|
77
77
|
"@webex/web-capabilities": "^1.4.0",
|
|
78
|
-
"@webex/webex-core": "3.7.0-next.
|
|
78
|
+
"@webex/webex-core": "3.7.0-next.5",
|
|
79
79
|
"ampersand-collection": "^2.0.2",
|
|
80
80
|
"bowser": "^2.11.0",
|
|
81
81
|
"btoa": "^1.2.1",
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
"//": [
|
|
92
92
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
93
93
|
],
|
|
94
|
-
"version": "3.7.0-next.
|
|
94
|
+
"version": "3.7.0-next.20"
|
|
95
95
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {ERROR_DICTIONARY} from '../../constants';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Error occurred while join the webinar
|
|
5
|
+
*/
|
|
6
|
+
export default class JoinWebinarError extends Error {
|
|
7
|
+
code: number;
|
|
8
|
+
error: any;
|
|
9
|
+
sdkMessage: string;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @constructor
|
|
13
|
+
* @param {String} [message]
|
|
14
|
+
* @param {Object} [error]
|
|
15
|
+
*/
|
|
16
|
+
constructor(message: string = ERROR_DICTIONARY.JoinWebinarError.MESSAGE, error: any = null) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.name = ERROR_DICTIONARY.JoinWebinarError.NAME;
|
|
19
|
+
this.sdkMessage = ERROR_DICTIONARY.JoinWebinarError.MESSAGE;
|
|
20
|
+
this.error = error;
|
|
21
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
22
|
+
this.code = ERROR_DICTIONARY.JoinWebinarError.CODE;
|
|
23
|
+
}
|
|
24
|
+
}
|
package/src/config.ts
CHANGED
|
@@ -96,6 +96,6 @@ export default {
|
|
|
96
96
|
iceCandidatesGatheringTimeout: undefined,
|
|
97
97
|
backendIpv6NativeSupport: false,
|
|
98
98
|
reachabilityGetClusterTimeout: 5000,
|
|
99
|
-
logUploadIntervalMultiplicationFactor: 0, // if set to 0 or undefined, logs won't be uploaded periodically
|
|
99
|
+
logUploadIntervalMultiplicationFactor: 0, // if set to 0 or undefined, logs won't be uploaded periodically, if you want periodic logs, recommended value is 1
|
|
100
100
|
},
|
|
101
101
|
};
|
package/src/constants.ts
CHANGED
|
@@ -198,6 +198,8 @@ export const RETRY_TIMEOUT = 3000;
|
|
|
198
198
|
|
|
199
199
|
export const ICE_AND_DTLS_CONNECTION_TIMEOUT = 20000;
|
|
200
200
|
export const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
|
|
201
|
+
export const WEBINAR_ERROR_WEBCAST = [403026];
|
|
202
|
+
export const WEBINAR_ERROR_REGISTRATIONID = [403037, 403137];
|
|
201
203
|
|
|
202
204
|
// ******************** REGEX **********************
|
|
203
205
|
// Please alphabetize
|
|
@@ -383,6 +385,13 @@ export const EVENT_TYPES = {
|
|
|
383
385
|
ERROR: 'error',
|
|
384
386
|
};
|
|
385
387
|
|
|
388
|
+
export const HEADERS = {
|
|
389
|
+
CONTENT_TYPE: 'Content-Type',
|
|
390
|
+
CONTENT_TYPE_VALUE: {
|
|
391
|
+
APPLICATION_JSON: 'application/json',
|
|
392
|
+
},
|
|
393
|
+
};
|
|
394
|
+
|
|
386
395
|
// Handles the reason when meeting gets destroyed
|
|
387
396
|
// host removed you from the meeting
|
|
388
397
|
// You are the host and you left the meeting
|
|
@@ -529,9 +538,9 @@ export const ERROR_DICTIONARY = {
|
|
|
529
538
|
'Reconnection was not started, because there is one already in progress or reconnections are disabled in config.',
|
|
530
539
|
CODE: 15,
|
|
531
540
|
},
|
|
532
|
-
|
|
533
|
-
NAME: '
|
|
534
|
-
MESSAGE: 'An error occurred while the webinar
|
|
541
|
+
JoinWebinarError: {
|
|
542
|
+
NAME: 'JoinWebinarError',
|
|
543
|
+
MESSAGE: 'An error occurred while the join webinar.',
|
|
535
544
|
CODE: 16,
|
|
536
545
|
},
|
|
537
546
|
};
|
|
@@ -904,6 +913,10 @@ export const DISPLAY_HINTS = {
|
|
|
904
913
|
RECORDING_CONTROL_PAUSE: 'RECORDING_CONTROL_PAUSE',
|
|
905
914
|
RECORDING_CONTROL_STOP: 'RECORDING_CONTROL_STOP',
|
|
906
915
|
RECORDING_CONTROL_RESUME: 'RECORDING_CONTROL_RESUME',
|
|
916
|
+
PREMISE_RECORDING_CONTROL_START: 'PREMISE_RECORDING_CONTROL_START',
|
|
917
|
+
PREMISE_RECORDING_CONTROL_PAUSE: 'PREMISE_RECORDING_CONTROL_PAUSE',
|
|
918
|
+
PREMISE_RECORDING_CONTROL_STOP: 'PREMISE_RECORDING_CONTROL_STOP',
|
|
919
|
+
PREMISE_RECORDING_CONTROL_RESUME: 'PREMISE_RECORDING_CONTROL_RESUME',
|
|
907
920
|
LOCK_CONTROL_UNLOCK: 'LOCK_CONTROL_UNLOCK',
|
|
908
921
|
LOCK_CONTROL_LOCK: 'LOCK_CONTROL_LOCK',
|
|
909
922
|
LOCK_STATUS_LOCKED: 'LOCK_STATUS_LOCKED',
|
|
@@ -988,6 +1001,12 @@ export const DISPLAY_HINTS = {
|
|
|
988
1001
|
STAGE_VIEW_INACTIVE: 'STAGE_VIEW_INACTIVE',
|
|
989
1002
|
ENABLE_STAGE_VIEW: 'ENABLE_STAGE_VIEW',
|
|
990
1003
|
DISABLE_STAGE_VIEW: 'DISABLE_STAGE_VIEW',
|
|
1004
|
+
|
|
1005
|
+
// Practice Session
|
|
1006
|
+
PRACTICE_SESSION_ON: 'PRACTICE_SESSION_ON',
|
|
1007
|
+
PRACTICE_SESSION_OFF: 'PRACTICE_SESSION_OFF',
|
|
1008
|
+
SHOW_PRACTICE_SESSION_START: 'SHOW_PRACTICE_SESSION_START',
|
|
1009
|
+
SHOW_PRACTICE_SESSION_STOP: 'SHOW_PRACTICE_SESSION_STOP',
|
|
991
1010
|
};
|
|
992
1011
|
|
|
993
1012
|
export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
|
|
@@ -1300,6 +1319,8 @@ export const MEETING_INFO_FAILURE_REASON = {
|
|
|
1300
1319
|
WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
|
|
1301
1320
|
POLICY: 'POLICY', // meeting info request violates some meeting policy
|
|
1302
1321
|
WEBINAR_REGISTRATION: 'WEBINAR_REGISTRATION', // webinar need registration
|
|
1322
|
+
NEED_JOIN_WITH_WEBCAST: 'NEED_JOIN_WITH_WEBCAST', // webinar need using webcast join
|
|
1323
|
+
WEBINAR_NEED_REGISTRATIONID: 'WEBINAR_NEED_REGISTRATIONID', // webinar need registrationID
|
|
1303
1324
|
OTHER: 'OTHER', // any other error (network, etc)
|
|
1304
1325
|
};
|
|
1305
1326
|
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ import CaptchaError from './common/errors/captcha-error';
|
|
|
8
8
|
import IntentToJoinError from './common/errors/intent-to-join';
|
|
9
9
|
import PasswordError from './common/errors/password-error';
|
|
10
10
|
import PermissionError from './common/errors/permission';
|
|
11
|
-
import
|
|
11
|
+
import JoinWebinarError from './common/errors/join-webinar-error';
|
|
12
12
|
import {
|
|
13
13
|
ReclaimHostEmptyWrongKeyError,
|
|
14
14
|
ReclaimHostIsHostAlreadyError,
|
|
@@ -27,7 +27,6 @@ registerPlugin('meetings', Meetings, {
|
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
export {
|
|
30
|
-
getDevices,
|
|
31
30
|
LocalStream,
|
|
32
31
|
LocalDisplayStream,
|
|
33
32
|
LocalSystemAudioStream,
|
|
@@ -69,7 +68,7 @@ export {
|
|
|
69
68
|
ReclaimHostEmptyWrongKeyError,
|
|
70
69
|
Meeting,
|
|
71
70
|
MeetingInfoUtil,
|
|
72
|
-
|
|
71
|
+
JoinWebinarError,
|
|
73
72
|
};
|
|
74
73
|
|
|
75
74
|
export {RemoteMedia} from './multistream/remoteMedia';
|