@webex/plugin-meetings 3.6.0 → 3.7.0-next.1
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 +2 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/webinar-registration-error.js +50 -0
- package/dist/common/errors/webinar-registration-error.js.map +1 -0
- package/dist/config.js +3 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +31 -2
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +1 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +10 -3
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +12 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +28 -4
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +2 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/index.js +61 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +5 -1
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +19 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +692 -522
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +2 -6
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +5 -2
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +21 -29
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +97 -61
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +68 -17
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +25 -1
- package/dist/meetings/index.js.map +1 -1
- package/dist/members/index.js +3 -2
- package/dist/members/index.js.map +1 -1
- package/dist/members/util.js +9 -5
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +2 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/remoteMedia.js +4 -0
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/reachability/clusterReachability.js +0 -4
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +433 -136
- package/dist/reachability/index.js.map +1 -1
- package/dist/{rtcMetrics/constants.js → reachability/reachability.types.js} +1 -5
- package/dist/reachability/reachability.types.js.map +1 -0
- package/dist/reachability/request.js +23 -9
- package/dist/reachability/request.js.map +1 -1
- package/dist/roap/index.js +5 -7
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +45 -79
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +3 -6
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/{common/errors/parameter.d.ts → types/common/errors/webinar-registration-error.d.ts} +4 -5
- package/dist/types/config.d.ts +2 -0
- package/dist/types/constants.d.ts +25 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -1
- package/dist/types/controls-options-manager/index.d.ts +2 -1
- package/dist/types/controls-options-manager/types.d.ts +2 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/locus-info/index.d.ts +9 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +18 -0
- package/dist/types/meeting/index.d.ts +14 -3
- package/dist/types/meeting/locusMediaRequest.d.ts +2 -3
- package/dist/types/meeting/muteState.d.ts +2 -1
- package/dist/types/meeting/request.d.ts +2 -2
- package/dist/types/meeting/util.d.ts +2 -2
- package/dist/types/meeting-info/meeting-info-v2.d.ts +23 -0
- package/dist/types/meetings/index.d.ts +10 -1
- package/dist/types/members/index.d.ts +2 -1
- package/dist/types/members/util.d.ts +3 -1
- package/dist/types/metrics/constants.d.ts +1 -0
- package/dist/types/multistream/remoteMedia.d.ts +1 -0
- package/dist/types/reachability/clusterReachability.d.ts +1 -10
- package/dist/types/reachability/index.d.ts +74 -35
- package/dist/types/reachability/reachability.types.d.ts +64 -0
- package/dist/types/reachability/request.d.ts +5 -1
- package/dist/types/roap/request.d.ts +1 -13
- package/dist/webinar/index.js +32 -19
- package/dist/webinar/index.js.map +1 -1
- package/package.json +22 -22
- package/src/common/errors/webinar-registration-error.ts +27 -0
- package/src/config.ts +2 -0
- package/src/constants.ts +31 -0
- package/src/controls-options-manager/enums.ts +1 -0
- package/src/controls-options-manager/index.ts +19 -2
- package/src/controls-options-manager/types.ts +2 -0
- package/src/controls-options-manager/util.ts +12 -0
- package/src/index.ts +2 -0
- package/src/locus-info/controlsUtils.ts +46 -2
- package/src/locus-info/fullState.ts +1 -0
- package/src/locus-info/index.ts +60 -0
- package/src/locus-info/parser.ts +8 -1
- package/src/meeting/in-meeting-actions.ts +37 -0
- package/src/meeting/index.ts +154 -22
- package/src/meeting/locusMediaRequest.ts +4 -8
- package/src/meeting/muteState.ts +6 -2
- package/src/meeting/request.ts +4 -11
- package/src/meeting/util.ts +30 -6
- package/src/meeting-info/meeting-info-v2.ts +51 -0
- package/src/meetings/index.ts +68 -40
- package/src/members/index.ts +4 -2
- package/src/members/util.ts +3 -1
- package/src/metrics/constants.ts +1 -0
- package/src/multistream/remoteMedia.ts +5 -0
- package/src/reachability/clusterReachability.ts +1 -14
- package/src/reachability/index.ts +285 -77
- package/src/reachability/reachability.types.ts +85 -0
- package/src/reachability/request.ts +55 -30
- package/src/roap/index.ts +4 -5
- package/src/roap/request.ts +32 -44
- package/src/roap/turnDiscovery.ts +2 -4
- package/src/webinar/index.ts +31 -17
- package/test/unit/spec/controls-options-manager/index.js +56 -32
- package/test/unit/spec/controls-options-manager/util.js +44 -0
- package/test/unit/spec/locus-info/controlsUtils.js +80 -4
- package/test/unit/spec/locus-info/index.js +88 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +18 -0
- package/test/unit/spec/meeting/index.js +272 -82
- package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
- package/test/unit/spec/meeting/muteState.js +8 -4
- package/test/unit/spec/meeting/request.js +3 -26
- package/test/unit/spec/meeting/utils.js +69 -14
- package/test/unit/spec/meeting-info/meetinginfov2.js +37 -0
- package/test/unit/spec/meetings/index.js +32 -1
- package/test/unit/spec/members/index.js +25 -2
- package/test/unit/spec/members/request.js +37 -3
- package/test/unit/spec/members/utils.js +15 -1
- package/test/unit/spec/multistream/remoteMedia.ts +16 -2
- package/test/unit/spec/reachability/index.ts +265 -1
- package/test/unit/spec/reachability/request.js +56 -15
- package/test/unit/spec/roap/index.ts +1 -1
- package/test/unit/spec/roap/request.ts +51 -109
- package/test/unit/spec/roap/turnDiscovery.ts +202 -147
- package/test/unit/spec/webinar/index.ts +82 -16
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/index.d.ts +0 -117
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reclaim-host-role-error.js +0 -149
- package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection-in-progress.js +0 -33
- package/dist/common/errors/reconnection-in-progress.js.map +0 -1
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -93
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -36
- package/dist/common/queue.d.ts +0 -34
- package/dist/config.d.ts +0 -72
- package/dist/constants.d.ts +0 -1088
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -15
- package/dist/controls-options-manager/index.d.ts +0 -136
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/util.d.ts +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -322
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -272
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -34
- package/dist/media/properties.d.ts +0 -93
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/mediaQualityMetrics/config.js +0 -502
- package/dist/mediaQualityMetrics/config.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/meeting/in-meeting-actions.d.ts +0 -167
- package/dist/meeting/index.d.ts +0 -1825
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/muteState.d.ts +0 -178
- package/dist/meeting/request.d.ts +0 -295
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -119
- package/dist/meeting/voicea-meeting.d.ts +0 -16
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -69
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -40
- package/dist/meetings/index.d.ts +0 -390
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -160
- package/dist/member/member.types.js +0 -17
- package/dist/member/member.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -29
- package/dist/members/index.d.ts +0 -353
- package/dist/members/request.d.ts +0 -114
- package/dist/members/types.d.ts +0 -25
- package/dist/members/util.d.ts +0 -215
- package/dist/metrics/config.js +0 -276
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/constants.d.ts +0 -70
- package/dist/metrics/index.d.ts +0 -45
- package/dist/multistream/mediaRequestManager.d.ts +0 -119
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMediaGroup.d.ts +0 -49
- package/dist/multistream/remoteMediaManager.d.ts +0 -300
- package/dist/multistream/sendSlotManager.d.ts +0 -69
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/networkQualityMonitor/index.js +0 -221
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -109
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/index.d.ts +0 -105
- package/dist/reachability/request.d.ts +0 -39
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -52
- package/dist/reconnection-manager/index.d.ts +0 -136
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -207
- package/dist/recording-controller/util.d.ts +0 -14
- package/dist/roap/collection.js +0 -62
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.js +0 -275
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/index.d.ts +0 -86
- package/dist/roap/request.d.ts +0 -39
- package/dist/roap/state.js +0 -126
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/turnDiscovery.d.ts +0 -155
- package/dist/roap/util.js +0 -75
- package/dist/roap/util.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -61
- package/dist/rtcMetrics/index.js +0 -197
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/statsAnalyzer/global.d.ts +0 -36
- package/dist/statsAnalyzer/global.js +0 -126
- package/dist/statsAnalyzer/global.js.map +0 -1
- package/dist/statsAnalyzer/index.d.ts +0 -217
- package/dist/statsAnalyzer/index.js +0 -1013
- package/dist/statsAnalyzer/index.js.map +0 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/statsAnalyzer/mqaUtil.js +0 -179
- package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
- package/dist/transcription/index.d.ts +0 -64
- package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/types/networkQualityMonitor/index.d.ts +0 -70
- package/dist/types/rtcMetrics/constants.d.ts +0 -4
- package/dist/types/rtcMetrics/index.d.ts +0 -71
- package/dist/types/statsAnalyzer/global.d.ts +0 -36
- package/dist/types/statsAnalyzer/index.d.ts +0 -217
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/index.d.ts +0 -5
package/dist/webinar/index.js
CHANGED
|
@@ -7,6 +7,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _webexCore = require("@webex/webex-core");
|
|
10
|
+
var _lodash = require("lodash");
|
|
10
11
|
var _constants = require("../constants");
|
|
11
12
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
12
13
|
/*!
|
|
@@ -24,35 +25,29 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
24
25
|
props: {
|
|
25
26
|
locusUrl: 'string',
|
|
26
27
|
// appears current webinar's locus url
|
|
27
|
-
|
|
28
|
-
// current webinar's webcast url
|
|
29
|
-
|
|
30
|
-
//
|
|
31
|
-
|
|
28
|
+
webcastInstanceUrl: 'string',
|
|
29
|
+
// current webinar's webcast instance url
|
|
30
|
+
canManageWebcast: 'boolean',
|
|
31
|
+
// appears the ability to manage webcast
|
|
32
|
+
selfIsPanelist: 'boolean',
|
|
33
|
+
// self is panelist
|
|
34
|
+
selfIsAttendee: 'boolean' // self is attendee
|
|
32
35
|
},
|
|
33
36
|
/**
|
|
34
37
|
* Update the current locus url of the webinar
|
|
35
|
-
* @param {string} locusUrl
|
|
38
|
+
* @param {string} locusUrl
|
|
36
39
|
* @returns {void}
|
|
37
40
|
*/
|
|
38
41
|
locusUrlUpdate: function locusUrlUpdate(locusUrl) {
|
|
39
42
|
this.set('locusUrl', locusUrl);
|
|
40
43
|
},
|
|
41
44
|
/**
|
|
42
|
-
* Update the current webcast url of the meeting
|
|
43
|
-
* @param {
|
|
45
|
+
* Update the current webcast instance url of the meeting
|
|
46
|
+
* @param {object} payload
|
|
44
47
|
* @returns {void}
|
|
45
48
|
*/
|
|
46
|
-
|
|
47
|
-
this.set('
|
|
48
|
-
},
|
|
49
|
-
/**
|
|
50
|
-
* Update the current webinarAttendeesSearching url of the meeting
|
|
51
|
-
* @param {string} webinarAttendeesSearchingUrl // webinarAttendeesSearching url
|
|
52
|
-
* @returns {void}
|
|
53
|
-
*/
|
|
54
|
-
webinarAttendeesSearchingUrlUpdate: function webinarAttendeesSearchingUrlUpdate(webinarAttendeesSearchingUrl) {
|
|
55
|
-
this.set('webinarAttendeesSearchingUrl', webinarAttendeesSearchingUrl);
|
|
49
|
+
updateWebcastUrl: function updateWebcastUrl(payload) {
|
|
50
|
+
this.set('webcastInstanceUrl', (0, _lodash.get)(payload, 'resources.webcastInstance.url'));
|
|
56
51
|
},
|
|
57
52
|
/**
|
|
58
53
|
* Update whether self has capability to manage start/stop webcast (only host can manage it)
|
|
@@ -62,7 +57,25 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
57
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
58
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
59
|
},
|
|
65
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Updates user roles and manages associated state transitions
|
|
62
|
+
* @param {object} payload
|
|
63
|
+
* @param {string[]} payload.oldRoles - Previous roles of the user
|
|
64
|
+
* @param {string[]} payload.newRoles - New roles of the user
|
|
65
|
+
* @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states
|
|
66
|
+
*/
|
|
67
|
+
updateRoleChanged: function updateRoleChanged(payload) {
|
|
68
|
+
var isPromoted = (0, _lodash.get)(payload, 'oldRoles', []).includes(_constants.SELF_ROLES.ATTENDEE) && (0, _lodash.get)(payload, 'newRoles', []).includes(_constants.SELF_ROLES.PANELIST);
|
|
69
|
+
var isDemoted = (0, _lodash.get)(payload, 'oldRoles', []).includes(_constants.SELF_ROLES.PANELIST) && (0, _lodash.get)(payload, 'newRoles', []).includes(_constants.SELF_ROLES.ATTENDEE);
|
|
70
|
+
this.set('selfIsPanelist', (0, _lodash.get)(payload, 'newRoles', []).includes(_constants.SELF_ROLES.PANELIST));
|
|
71
|
+
this.set('selfIsAttendee', (0, _lodash.get)(payload, 'newRoles', []).includes(_constants.SELF_ROLES.ATTENDEE));
|
|
72
|
+
this.updateCanManageWebcast((0, _lodash.get)(payload, 'newRoles', []).includes(_constants.SELF_ROLES.MODERATOR));
|
|
73
|
+
return {
|
|
74
|
+
isPromoted: isPromoted,
|
|
75
|
+
isDemoted: isDemoted
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
version: "3.7.0-next.1"
|
|
66
79
|
});
|
|
67
80
|
var _default = exports.default = Webinar;
|
|
68
81
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_constants","_collection","_interopRequireDefault","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","
|
|
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"}
|
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.
|
|
47
|
-
"@webex/plugin-rooms": "3.6.0",
|
|
48
|
-
"@webex/test-helper-chai": "3.6.0",
|
|
49
|
-
"@webex/test-helper-mocha": "3.6.0",
|
|
50
|
-
"@webex/test-helper-mock-webex": "3.6.0",
|
|
51
|
-
"@webex/test-helper-retry": "3.6.0",
|
|
52
|
-
"@webex/test-helper-test-users": "3.6.0",
|
|
46
|
+
"@webex/plugin-meetings": "3.7.0-next.1",
|
|
47
|
+
"@webex/plugin-rooms": "3.6.0-next.8",
|
|
48
|
+
"@webex/test-helper-chai": "3.6.0-next.4",
|
|
49
|
+
"@webex/test-helper-mocha": "3.6.0-next.4",
|
|
50
|
+
"@webex/test-helper-mock-webex": "3.6.0-next.4",
|
|
51
|
+
"@webex/test-helper-retry": "3.6.0-next.4",
|
|
52
|
+
"@webex/test-helper-test-users": "3.6.0-next.4",
|
|
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.6.0",
|
|
65
|
-
"@webex/internal-media-core": "2.
|
|
66
|
-
"@webex/internal-plugin-conversation": "3.6.0",
|
|
67
|
-
"@webex/internal-plugin-device": "3.6.0",
|
|
68
|
-
"@webex/internal-plugin-llm": "3.6.0",
|
|
69
|
-
"@webex/internal-plugin-mercury": "3.6.0",
|
|
70
|
-
"@webex/internal-plugin-metrics": "3.6.0",
|
|
71
|
-
"@webex/internal-plugin-support": "3.6.0",
|
|
72
|
-
"@webex/internal-plugin-user": "3.6.0",
|
|
73
|
-
"@webex/internal-plugin-voicea": "3.
|
|
74
|
-
"@webex/media-helpers": "3.6.0",
|
|
75
|
-
"@webex/plugin-people": "3.6.0",
|
|
76
|
-
"@webex/plugin-rooms": "3.6.0",
|
|
64
|
+
"@webex/common": "3.6.0-next.4",
|
|
65
|
+
"@webex/internal-media-core": "2.12.2",
|
|
66
|
+
"@webex/internal-plugin-conversation": "3.6.0-next.8",
|
|
67
|
+
"@webex/internal-plugin-device": "3.6.0-next.4",
|
|
68
|
+
"@webex/internal-plugin-llm": "3.6.0-next.6",
|
|
69
|
+
"@webex/internal-plugin-mercury": "3.6.0-next.6",
|
|
70
|
+
"@webex/internal-plugin-metrics": "3.6.0-next.4",
|
|
71
|
+
"@webex/internal-plugin-support": "3.6.0-next.8",
|
|
72
|
+
"@webex/internal-plugin-user": "3.6.0-next.4",
|
|
73
|
+
"@webex/internal-plugin-voicea": "3.7.0-next.1",
|
|
74
|
+
"@webex/media-helpers": "3.6.0-next.5",
|
|
75
|
+
"@webex/plugin-people": "3.6.0-next.6",
|
|
76
|
+
"@webex/plugin-rooms": "3.6.0-next.8",
|
|
77
77
|
"@webex/web-capabilities": "^1.4.0",
|
|
78
|
-
"@webex/webex-core": "3.6.0",
|
|
78
|
+
"@webex/webex-core": "3.6.0-next.4",
|
|
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.
|
|
94
|
+
"version": "3.7.0-next.1"
|
|
95
95
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {ERROR_DICTIONARY} from '../../constants';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Error occurred while the webinar required registration
|
|
5
|
+
*/
|
|
6
|
+
export default class WebinarRegistrationError 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(
|
|
17
|
+
message: string = ERROR_DICTIONARY.WebinarRegistrationError.MESSAGE,
|
|
18
|
+
error: any = null
|
|
19
|
+
) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = ERROR_DICTIONARY.WebinarRegistrationError.NAME;
|
|
22
|
+
this.sdkMessage = ERROR_DICTIONARY.WebinarRegistrationError.MESSAGE;
|
|
23
|
+
this.error = error;
|
|
24
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
25
|
+
this.code = ERROR_DICTIONARY.WebinarRegistrationError.CODE;
|
|
26
|
+
}
|
|
27
|
+
}
|
package/src/config.ts
CHANGED
package/src/constants.ts
CHANGED
|
@@ -356,6 +356,11 @@ export const EVENT_TRIGGERS = {
|
|
|
356
356
|
'meeting:controls:view-the-participants-list:updated',
|
|
357
357
|
MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
|
|
358
358
|
MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',
|
|
359
|
+
MEETING_CONTROLS_STAGE_VIEW_UPDATED: 'meeting:controls:stage-view:updated',
|
|
360
|
+
MEETING_CONTROLS_WEBCAST_UPDATED: 'meeting:controls:webcast:updated',
|
|
361
|
+
MEETING_CONTROLS_MEETING_FULL_UPDATED: 'meeting:controls:meeting-full:updated',
|
|
362
|
+
MEETING_CONTROLS_PRACTICE_SESSION_STATUS_UPDATED:
|
|
363
|
+
'meeting:controls:practice-session-status:updated',
|
|
359
364
|
// Locus URL changed
|
|
360
365
|
MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
|
|
361
366
|
MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
|
|
@@ -524,6 +529,11 @@ export const ERROR_DICTIONARY = {
|
|
|
524
529
|
'Reconnection was not started, because there is one already in progress or reconnections are disabled in config.',
|
|
525
530
|
CODE: 15,
|
|
526
531
|
},
|
|
532
|
+
WebinarRegistrationError: {
|
|
533
|
+
NAME: 'WebinarRegistrationError',
|
|
534
|
+
MESSAGE: 'An error occurred while the webinar required registration.',
|
|
535
|
+
CODE: 16,
|
|
536
|
+
},
|
|
527
537
|
};
|
|
528
538
|
|
|
529
539
|
export const FLOOR_ACTION = {
|
|
@@ -671,7 +681,11 @@ export const LOCUSINFO = {
|
|
|
671
681
|
CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
|
|
672
682
|
CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
|
|
673
683
|
CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
|
|
684
|
+
CONTROLS_WEBCAST_CHANGED: 'CONTROLS_WEBCAST_CHANGED',
|
|
685
|
+
CONTROLS_MEETING_FULL_CHANGED: 'CONTROLS_MEETING_FULL_CHANGED',
|
|
686
|
+
CONTROLS_PRACTICE_SESSION_STATUS_UPDATED: 'CONTROLS_PRACTICE_SESSION_STATUS_UPDATED',
|
|
674
687
|
CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
|
|
688
|
+
CONTROLS_STAGE_VIEW_UPDATED: 'CONTROLS_STAGE_VIEW_UPDATED',
|
|
675
689
|
SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
|
|
676
690
|
SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
|
|
677
691
|
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
|
|
@@ -697,6 +711,7 @@ export const LOCUSINFO = {
|
|
|
697
711
|
SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
|
|
698
712
|
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
699
713
|
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
714
|
+
LINKS_RESOURCES: 'LINKS_RESOURCES',
|
|
700
715
|
},
|
|
701
716
|
};
|
|
702
717
|
|
|
@@ -939,6 +954,11 @@ export const DISPLAY_HINTS = {
|
|
|
939
954
|
// participants list
|
|
940
955
|
DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
941
956
|
ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
957
|
+
// for webinar participants list
|
|
958
|
+
DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST',
|
|
959
|
+
ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST',
|
|
960
|
+
DISABLE_SHOW_ATTENDEE_COUNT: 'DISABLE_SHOW_ATTENDEE_COUNT',
|
|
961
|
+
ENABLE_SHOW_ATTENDEE_COUNT: 'ENABLE_SHOW_ATTENDEE_COUNT',
|
|
942
962
|
|
|
943
963
|
// raise hand
|
|
944
964
|
DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
|
|
@@ -958,6 +978,16 @@ export const DISPLAY_HINTS = {
|
|
|
958
978
|
|
|
959
979
|
// Voip (audio/video)
|
|
960
980
|
VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',
|
|
981
|
+
|
|
982
|
+
// Webcast
|
|
983
|
+
WEBCAST_CONTROL_START: 'WEBCAST_CONTROL_START',
|
|
984
|
+
WEBCAST_CONTROL_STOP: 'WEBCAST_CONTROL_STOP',
|
|
985
|
+
|
|
986
|
+
// Stage View
|
|
987
|
+
STAGE_VIEW_ACTIVE: 'STAGE_VIEW_ACTIVE',
|
|
988
|
+
STAGE_VIEW_INACTIVE: 'STAGE_VIEW_INACTIVE',
|
|
989
|
+
ENABLE_STAGE_VIEW: 'ENABLE_STAGE_VIEW',
|
|
990
|
+
DISABLE_STAGE_VIEW: 'DISABLE_STAGE_VIEW',
|
|
961
991
|
};
|
|
962
992
|
|
|
963
993
|
export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
|
|
@@ -1269,6 +1299,7 @@ export const MEETING_INFO_FAILURE_REASON = {
|
|
|
1269
1299
|
WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
|
|
1270
1300
|
WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
|
|
1271
1301
|
POLICY: 'POLICY', // meeting info request violates some meeting policy
|
|
1302
|
+
WEBINAR_REGISTRATION: 'WEBINAR_REGISTRATION', // webinar need registration
|
|
1272
1303
|
OTHER: 'OTHER', // any other error (network, etc)
|
|
1273
1304
|
};
|
|
1274
1305
|
|
|
@@ -177,7 +177,12 @@ export default class ControlsOptionsManager {
|
|
|
177
177
|
* @memberof ControlsOptionsManager
|
|
178
178
|
* @returns {Promise}
|
|
179
179
|
*/
|
|
180
|
-
private setControls(setting: {
|
|
180
|
+
private setControls(setting: {
|
|
181
|
+
[Setting.muted]?: boolean;
|
|
182
|
+
[Setting.disallowUnmute]?: boolean;
|
|
183
|
+
[Setting.muteOnEntry]?: boolean;
|
|
184
|
+
[Setting.roles]?: Array<string>;
|
|
185
|
+
}): Promise<any> {
|
|
181
186
|
LoggerProxy.logger.log(
|
|
182
187
|
`ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`
|
|
183
188
|
);
|
|
@@ -190,6 +195,7 @@ export default class ControlsOptionsManager {
|
|
|
190
195
|
Object.entries(setting).forEach(([key, value]) => {
|
|
191
196
|
if (
|
|
192
197
|
!shouldSkipCheckToMergeBody &&
|
|
198
|
+
value !== undefined &&
|
|
193
199
|
!Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)
|
|
194
200
|
) {
|
|
195
201
|
error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
|
|
@@ -219,6 +225,14 @@ export default class ControlsOptionsManager {
|
|
|
219
225
|
}
|
|
220
226
|
break;
|
|
221
227
|
|
|
228
|
+
case Setting.roles:
|
|
229
|
+
if (Array.isArray(value)) {
|
|
230
|
+
body.audio = body.audio
|
|
231
|
+
? {...body.audio, [camelCase(key)]: value}
|
|
232
|
+
: {[camelCase(key)]: value};
|
|
233
|
+
}
|
|
234
|
+
break;
|
|
235
|
+
|
|
222
236
|
default:
|
|
223
237
|
error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
|
|
224
238
|
}
|
|
@@ -261,18 +275,21 @@ export default class ControlsOptionsManager {
|
|
|
261
275
|
* @param {boolean} mutedEnabled
|
|
262
276
|
* @param {boolean} disallowUnmuteEnabled
|
|
263
277
|
* @param {boolean} muteOnEntryEnabled
|
|
278
|
+
* @param {array} roles which should be muted
|
|
264
279
|
* @memberof ControlsOptionsManager
|
|
265
280
|
* @returns {Promise}
|
|
266
281
|
*/
|
|
267
282
|
public setMuteAll(
|
|
268
283
|
mutedEnabled: boolean,
|
|
269
284
|
disallowUnmuteEnabled: boolean,
|
|
270
|
-
muteOnEntryEnabled: boolean
|
|
285
|
+
muteOnEntryEnabled: boolean,
|
|
286
|
+
roles: Array<string>
|
|
271
287
|
): Promise<any> {
|
|
272
288
|
return this.setControls({
|
|
273
289
|
[Setting.muted]: mutedEnabled,
|
|
274
290
|
[Setting.disallowUnmute]: disallowUnmuteEnabled,
|
|
275
291
|
[Setting.muteOnEntry]: muteOnEntryEnabled,
|
|
292
|
+
[Setting.roles]: roles,
|
|
276
293
|
});
|
|
277
294
|
}
|
|
278
295
|
}
|
|
@@ -217,6 +217,18 @@ class Utils {
|
|
|
217
217
|
if (control.properties.enabled === false) {
|
|
218
218
|
requiredHints.push(DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST);
|
|
219
219
|
}
|
|
220
|
+
if (control.properties.panelistEnabled === true) {
|
|
221
|
+
requiredHints.push(DISPLAY_HINTS.ENABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST);
|
|
222
|
+
}
|
|
223
|
+
if (control.properties.panelistEnabled === false) {
|
|
224
|
+
requiredHints.push(DISPLAY_HINTS.DISABLE_VIEW_THE_PARTICIPANT_LIST_PANELIST);
|
|
225
|
+
}
|
|
226
|
+
if (control.properties.attendeeCount === true) {
|
|
227
|
+
requiredHints.push(DISPLAY_HINTS.ENABLE_SHOW_ATTENDEE_COUNT);
|
|
228
|
+
}
|
|
229
|
+
if (control.properties.attendeeCount === false) {
|
|
230
|
+
requiredHints.push(DISPLAY_HINTS.DISABLE_SHOW_ATTENDEE_COUNT);
|
|
231
|
+
}
|
|
220
232
|
|
|
221
233
|
return Utils.hasHints({requiredHints, displayHints});
|
|
222
234
|
}
|
package/src/index.ts
CHANGED
|
@@ -8,6 +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 WebinarRegistrationError from './common/errors/webinar-registration-error';
|
|
11
12
|
import {
|
|
12
13
|
ReclaimHostEmptyWrongKeyError,
|
|
13
14
|
ReclaimHostIsHostAlreadyError,
|
|
@@ -68,6 +69,7 @@ export {
|
|
|
68
69
|
ReclaimHostEmptyWrongKeyError,
|
|
69
70
|
Meeting,
|
|
70
71
|
MeetingInfoUtil,
|
|
72
|
+
WebinarRegistrationError,
|
|
71
73
|
};
|
|
72
74
|
|
|
73
75
|
export {RemoteMedia} from './multistream/remoteMedia';
|
|
@@ -79,7 +79,11 @@ ControlsUtils.parse = (controls: any) => {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
if (controls?.viewTheParticipantList) {
|
|
82
|
-
parsedControls.viewTheParticipantList = {
|
|
82
|
+
parsedControls.viewTheParticipantList = {
|
|
83
|
+
enabled: controls.viewTheParticipantList?.enabled ?? false,
|
|
84
|
+
panelistEnabled: controls.viewTheParticipantList?.panelistEnabled ?? false,
|
|
85
|
+
attendeeCount: controls.viewTheParticipantList?.attendeeCount ?? 0,
|
|
86
|
+
};
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
if (controls?.raiseHand) {
|
|
@@ -90,6 +94,23 @@ ControlsUtils.parse = (controls: any) => {
|
|
|
90
94
|
parsedControls.video = {enabled: controls.video.enabled};
|
|
91
95
|
}
|
|
92
96
|
|
|
97
|
+
if (controls?.webcastControl) {
|
|
98
|
+
parsedControls.webcastControl = {streaming: controls.webcastControl.streaming};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (controls?.meetingFull) {
|
|
102
|
+
parsedControls.meetingFull = {
|
|
103
|
+
meetingFull: controls.meetingFull?.meetingFull ?? false,
|
|
104
|
+
meetingPanelistFull: controls.meetingFull?.meetingPanelistFull ?? false,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (controls?.practiceSession) {
|
|
109
|
+
parsedControls.practiceSession = {
|
|
110
|
+
enabled: controls.practiceSession.enabled,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
93
114
|
return parsedControls;
|
|
94
115
|
};
|
|
95
116
|
|
|
@@ -121,7 +142,11 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
|
|
|
121
142
|
previous?.reactions?.showDisplayNameWithReactions,
|
|
122
143
|
|
|
123
144
|
hasViewTheParticipantListChanged:
|
|
124
|
-
current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled
|
|
145
|
+
current?.viewTheParticipantList?.enabled !== previous?.viewTheParticipantList?.enabled ||
|
|
146
|
+
current?.viewTheParticipantList?.panelistEnabled !==
|
|
147
|
+
previous?.viewTheParticipantList?.panelistEnabled ||
|
|
148
|
+
current?.viewTheParticipantList?.attendeeCount !==
|
|
149
|
+
previous?.viewTheParticipantList?.attendeeCount,
|
|
125
150
|
|
|
126
151
|
hasRaiseHandChanged: current?.raiseHand?.enabled !== previous?.raiseHand?.enabled,
|
|
127
152
|
|
|
@@ -167,6 +192,25 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
|
|
|
167
192
|
hasVideoEnabledChanged:
|
|
168
193
|
newControls.video?.enabled !== undefined &&
|
|
169
194
|
!isEqual(previous?.videoEnabled, current?.videoEnabled),
|
|
195
|
+
|
|
196
|
+
hasWebcastChanged: !isEqual(
|
|
197
|
+
previous?.webcastControl?.streaming,
|
|
198
|
+
current?.webcastControl?.streaming
|
|
199
|
+
),
|
|
200
|
+
|
|
201
|
+
hasMeetingFullChanged:
|
|
202
|
+
!isEqual(previous?.meetingFull?.meetingFull, current?.meetingFull?.meetingFull) ||
|
|
203
|
+
!isEqual(
|
|
204
|
+
previous?.meetingFull?.meetingPanelistFull,
|
|
205
|
+
current?.meetingFull?.meetingPanelistFull
|
|
206
|
+
),
|
|
207
|
+
|
|
208
|
+
hasPracticeSessionEnabledChanged: !isEqual(
|
|
209
|
+
previous?.practiceSession?.enabled,
|
|
210
|
+
current?.practiceSession?.enabled
|
|
211
|
+
),
|
|
212
|
+
|
|
213
|
+
hasStageViewChanged: !isEqual(previous?.videoLayout, current?.videoLayout),
|
|
170
214
|
},
|
|
171
215
|
};
|
|
172
216
|
};
|
|
@@ -6,6 +6,7 @@ FullState.parse = (fullState) => ({
|
|
|
6
6
|
type: fullState.type || FULL_STATE.UNKNOWN,
|
|
7
7
|
meetingState: fullState.state,
|
|
8
8
|
locked: fullState.locked,
|
|
9
|
+
attendeeCount: typeof fullState.attendeeCount === 'number' ? fullState.attendeeCount : 0,
|
|
9
10
|
});
|
|
10
11
|
|
|
11
12
|
FullState.getFullState = (oldFullState, newFullState) => {
|
package/src/locus-info/index.ts
CHANGED
|
@@ -64,6 +64,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
64
64
|
replace: any;
|
|
65
65
|
url: any;
|
|
66
66
|
services: any;
|
|
67
|
+
resources: any;
|
|
67
68
|
mainSessionLocusCache: any;
|
|
68
69
|
/**
|
|
69
70
|
* Constructor
|
|
@@ -263,6 +264,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
263
264
|
this.updateHostInfo(locus.host);
|
|
264
265
|
this.updateMediaShares(locus.mediaShares);
|
|
265
266
|
this.updateServices(locus.links?.services);
|
|
267
|
+
this.updateResources(locus.links?.resources);
|
|
266
268
|
}
|
|
267
269
|
|
|
268
270
|
/**
|
|
@@ -452,6 +454,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
452
454
|
this.updateIdentifiers(locus.identities);
|
|
453
455
|
this.updateEmbeddedApps(locus.embeddedApps);
|
|
454
456
|
this.updateServices(locus.links?.services);
|
|
457
|
+
this.updateResources(locus.links?.resources);
|
|
455
458
|
this.compareAndUpdate();
|
|
456
459
|
// update which required to compare different objects from locus
|
|
457
460
|
}
|
|
@@ -805,6 +808,10 @@ export default class LocusInfo extends EventsScope {
|
|
|
805
808
|
hasRaiseHandChanged,
|
|
806
809
|
hasVideoChanged,
|
|
807
810
|
hasInterpretationChanged,
|
|
811
|
+
hasWebcastChanged,
|
|
812
|
+
hasMeetingFullChanged,
|
|
813
|
+
hasPracticeSessionEnabledChanged,
|
|
814
|
+
hasStageViewChanged,
|
|
808
815
|
},
|
|
809
816
|
current,
|
|
810
817
|
} = ControlsUtils.getControls(this.controls, controls);
|
|
@@ -1008,6 +1015,38 @@ export default class LocusInfo extends EventsScope {
|
|
|
1008
1015
|
);
|
|
1009
1016
|
}
|
|
1010
1017
|
|
|
1018
|
+
if (hasWebcastChanged) {
|
|
1019
|
+
this.emitScoped(
|
|
1020
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
1021
|
+
LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED,
|
|
1022
|
+
{state: current.webcastControl}
|
|
1023
|
+
);
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
if (hasMeetingFullChanged) {
|
|
1027
|
+
this.emitScoped(
|
|
1028
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
1029
|
+
LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED,
|
|
1030
|
+
{state: current.meetingFull}
|
|
1031
|
+
);
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
if (hasPracticeSessionEnabledChanged) {
|
|
1035
|
+
this.emitScoped(
|
|
1036
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
1037
|
+
LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED,
|
|
1038
|
+
{state: current.practiceSession}
|
|
1039
|
+
);
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
if (hasStageViewChanged) {
|
|
1043
|
+
this.emitScoped(
|
|
1044
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
1045
|
+
LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED,
|
|
1046
|
+
{state: current.videoLayout}
|
|
1047
|
+
);
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1011
1050
|
this.controls = controls;
|
|
1012
1051
|
}
|
|
1013
1052
|
}
|
|
@@ -1064,6 +1103,27 @@ export default class LocusInfo extends EventsScope {
|
|
|
1064
1103
|
}
|
|
1065
1104
|
}
|
|
1066
1105
|
|
|
1106
|
+
/**
|
|
1107
|
+
* @param {Object} resources
|
|
1108
|
+
* @returns {undefined}
|
|
1109
|
+
* @memberof LocusInfo
|
|
1110
|
+
*/
|
|
1111
|
+
updateResources(resources: Record<'webcastInstance', {url: string}>) {
|
|
1112
|
+
if (resources && !isEqual(this.resources, resources)) {
|
|
1113
|
+
this.resources = resources;
|
|
1114
|
+
this.emitScoped(
|
|
1115
|
+
{
|
|
1116
|
+
file: 'locus-info',
|
|
1117
|
+
function: 'updateResources',
|
|
1118
|
+
},
|
|
1119
|
+
LOCUSINFO.EVENTS.LINKS_RESOURCES,
|
|
1120
|
+
{
|
|
1121
|
+
resources,
|
|
1122
|
+
}
|
|
1123
|
+
);
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1067
1127
|
/**
|
|
1068
1128
|
* @param {Object} fullState
|
|
1069
1129
|
* @returns {undefined}
|
package/src/locus-info/parser.ts
CHANGED
|
@@ -771,7 +771,14 @@ export default class Parser {
|
|
|
771
771
|
)}, Action: ${lociComparison}`
|
|
772
772
|
);
|
|
773
773
|
|
|
774
|
-
|
|
774
|
+
try {
|
|
775
|
+
this.onDeltaAction(lociComparison, newLoci);
|
|
776
|
+
} catch (error) {
|
|
777
|
+
LoggerProxy.logger.error(
|
|
778
|
+
'Locus-info:parser#processDeltaEvent --> Error in onDeltaAction',
|
|
779
|
+
error
|
|
780
|
+
);
|
|
781
|
+
}
|
|
775
782
|
}
|
|
776
783
|
|
|
777
784
|
this.nextEvent();
|