@webex/plugin-meetings 3.12.0-next.81 → 3.12.0-next.83
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/aiEnableRequest/index.js +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/member/util.js +27 -0
- package/dist/member/util.js.map +1 -1
- package/dist/members/index.js +93 -42
- package/dist/members/index.js.map +1 -1
- package/dist/types/member/util.d.ts +8 -0
- package/dist/types/members/index.d.ts +12 -1
- package/dist/webinar/index.js +1 -1
- package/package.json +13 -13
- package/src/member/util.ts +26 -0
- package/src/members/index.ts +59 -3
- package/test/unit/spec/member/util.js +65 -0
- package/test/unit/spec/members/index.js +155 -0
|
@@ -191,7 +191,7 @@ var AIEnableRequest = _webexCore.WebexPlugin.extend({
|
|
|
191
191
|
method: _constants.HTTP_VERBS.PUT
|
|
192
192
|
});
|
|
193
193
|
},
|
|
194
|
-
version: "3.12.0-next.
|
|
194
|
+
version: "3.12.0-next.83"
|
|
195
195
|
});
|
|
196
196
|
var _default = exports.default = AIEnableRequest;
|
|
197
197
|
//# sourceMappingURL=index.js.map
|
package/dist/breakouts/index.js
CHANGED
|
@@ -1133,7 +1133,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
1133
1133
|
this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
|
|
1134
1134
|
}
|
|
1135
1135
|
},
|
|
1136
|
-
version: "3.12.0-next.
|
|
1136
|
+
version: "3.12.0-next.83"
|
|
1137
1137
|
});
|
|
1138
1138
|
var _default = exports.default = Breakouts;
|
|
1139
1139
|
//# sourceMappingURL=index.js.map
|
|
@@ -381,7 +381,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
|
|
|
381
381
|
throw error;
|
|
382
382
|
});
|
|
383
383
|
},
|
|
384
|
-
version: "3.12.0-next.
|
|
384
|
+
version: "3.12.0-next.83"
|
|
385
385
|
});
|
|
386
386
|
var _default = exports.default = SimultaneousInterpretation;
|
|
387
387
|
//# sourceMappingURL=index.js.map
|
|
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
|
|
|
18
18
|
languageCode: 'number',
|
|
19
19
|
languageName: 'string'
|
|
20
20
|
},
|
|
21
|
-
version: "3.12.0-next.
|
|
21
|
+
version: "3.12.0-next.83"
|
|
22
22
|
});
|
|
23
23
|
var _default = exports.default = SILanguage;
|
|
24
24
|
//# sourceMappingURL=siLanguage.js.map
|
package/dist/member/util.js
CHANGED
|
@@ -6,6 +6,8 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
|
+
var _set = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/set"));
|
|
10
|
+
var _from = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/from"));
|
|
9
11
|
var _types = require("./types");
|
|
10
12
|
var _constants = require("../constants");
|
|
11
13
|
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
|
@@ -374,6 +376,31 @@ var MemberUtil = {
|
|
|
374
376
|
});
|
|
375
377
|
});
|
|
376
378
|
return participantUrl;
|
|
379
|
+
},
|
|
380
|
+
/**
|
|
381
|
+
* Collects all CSIs reported for a participant across all their devices,
|
|
382
|
+
* looking at both the top-level `csis` array and any `mediaSessions[].csi` values.
|
|
383
|
+
*
|
|
384
|
+
* @param {Object} participant - The locus participant object.
|
|
385
|
+
* @returns {Array<number>} unique CSIs for this participant
|
|
386
|
+
*/
|
|
387
|
+
extractCsis: function extractCsis(participant) {
|
|
388
|
+
var _participant$devices2;
|
|
389
|
+
var csis = new _set.default();
|
|
390
|
+
participant === null || participant === void 0 ? void 0 : (_participant$devices2 = participant.devices) === null || _participant$devices2 === void 0 ? void 0 : _participant$devices2.forEach(function (device) {
|
|
391
|
+
var _device$csis, _device$mediaSessions;
|
|
392
|
+
device === null || device === void 0 ? void 0 : (_device$csis = device.csis) === null || _device$csis === void 0 ? void 0 : _device$csis.forEach(function (csi) {
|
|
393
|
+
if (typeof csi === 'number') {
|
|
394
|
+
csis.add(csi);
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
device === null || device === void 0 ? void 0 : (_device$mediaSessions = device.mediaSessions) === null || _device$mediaSessions === void 0 ? void 0 : _device$mediaSessions.forEach(function (mediaSession) {
|
|
398
|
+
if (typeof (mediaSession === null || mediaSession === void 0 ? void 0 : mediaSession.csi) === 'number') {
|
|
399
|
+
csis.add(mediaSession.csi);
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
});
|
|
403
|
+
return (0, _from.default)(csis);
|
|
377
404
|
}
|
|
378
405
|
};
|
|
379
406
|
var _default = exports.default = MemberUtil;
|
package/dist/member/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_constants","_parameter","_interopRequireDefault","MemberUtil","canReclaimHost","participant","ParameterError","canReclaimHostRole","canApproveAIEnablement","attendeeRequestAiAssistantNotAllowed","getControlsRoles","_participant$controls","_participant$controls2","controls","role","roles","isBrb","_participant$controls3","_participant$controls4","brb","enabled","hasRole","controlRole","_MemberUtil$getContro","some","type","hasCohost","ServerRoles","Cohost","hasModerator","Moderator","hasPresenter","Presenter","extractControlRoles","cohost","moderator","presenter","isUser","_USER_","isModerator","isGuest","guest","isDevice","_RESOURCE_ROOM_","isModeratorAssignmentProhibited","moderatorAssignmentNotAllowed","isPresenterAssignmentProhibited","presenterAssignmentNotAllowed","isAttendeeAssignmentProhibited","attendeeAssignmentNotAllowed","isSame","id","person","isNotAdmitted","status","devices","intent","_WAIT_","_IN_LOBBY_","_IN_MEETING_","isAudioMuted","isMuted","AUDIO_STATUS","AUDIO","isVideoMuted","VIDEO_STATUS","VIDEO","isHandRaised","_participant$controls5","_participant$controls6","hand","raised","isBreakoutsSupported","doesNotSupportBreakouts","isSupportsSingleUserAutoEndMeeting","doesNotSupportSingleUserAutoEndMeeting","isInterpretationSupported","doesNotSupportSiInterpreter","isLiveAnnotationSupported","annotatorAssignmentNotAllowed","statusAccessor","controlsAccessor","_participant$controls7","_participant$controls8","_participant$status","remoteMute","muted","localStatus","_RECEIVE_ONLY_","_SEND_RECEIVE_","getRecordingMember","record","recording","meta","modifiedBy","isRecording","localRecord","isRemovable","isSelf","isInMeeting","_CALL_","isMutable","extractStatus","length","_NOT_IN_MEETING_","state","_JOINED_","_IDLE_","foundDevice","find","device","_OBSERVE_","_LEFT_","extractId","extractMediaStatus","_participant$status2","_participant$status3","audio","audioStatus","video","videoStatus","extractName","name","extractPairedWithParticipantUrl","_participant$devices","participantUrl","forEach","_device$intents","intents","associatedWith","_default","exports","default"],"sources":["util.ts"],"sourcesContent":["import {\n IExternalRoles,\n ServerRoles,\n ServerRoleShape,\n IMediaStatus,\n Participant,\n ParticipantUrl,\n} from './types';\nimport {\n _USER_,\n _RESOURCE_ROOM_,\n _OBSERVE_,\n _WAIT_,\n _LEFT_,\n _JOINED_,\n _IDLE_,\n _IN_LOBBY_,\n _NOT_IN_MEETING_,\n _IN_MEETING_,\n AUDIO_STATUS,\n VIDEO_STATUS,\n _SEND_RECEIVE_,\n _RECEIVE_ONLY_,\n _CALL_,\n VIDEO,\n AUDIO,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst MemberUtil = {\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n canReclaimHost: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'canReclaimHostRole could not be processed, participant is undefined.'\n );\n }\n\n return participant.canReclaimHostRole || false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n canApproveAIEnablement: (participant) => {\n if (!participant) {\n return false;\n }\n\n return !participant.attendeeRequestAiAssistantNotAllowed;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {[ServerRoleShape]}\n */\n getControlsRoles: (participant: Participant): Array<ServerRoleShape> =>\n participant?.controls?.role?.roles,\n\n /**\n * Checks if the participant has the brb status enabled.\n *\n * @param {Participant} participant - The locus participant object.\n * @returns {boolean} - True if the participant has brb enabled, false otherwise.\n */\n isBrb: (participant: Participant): boolean => participant.controls?.brb?.enabled || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @param {ServerRoles} controlRole the search role\n * @returns {Boolean}\n */\n hasRole: (participant: Participant, controlRole: ServerRoles): boolean =>\n MemberUtil.getControlsRoles(participant)?.some(\n (role) => role.type === controlRole && role.hasRole\n ),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasCohost: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Cohost) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasModerator: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Moderator) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasPresenter: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Presenter) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {IExternalRoles}\n */\n extractControlRoles: (participant: Participant): IExternalRoles => {\n const roles = {\n cohost: MemberUtil.hasCohost(participant),\n moderator: MemberUtil.hasModerator(participant),\n presenter: MemberUtil.hasPresenter(participant),\n };\n\n return roles;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isUser: (participant: Participant) => participant && participant.type === _USER_,\n\n isModerator: (participant: Participant) => participant && participant.moderator,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isGuest: (participant: Participant) => participant && participant.guest,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isDevice: (participant: Participant) => participant && participant.type === _RESOURCE_ROOM_,\n\n isModeratorAssignmentProhibited: (participant: Participant) =>\n participant && participant.moderatorAssignmentNotAllowed,\n\n isPresenterAssignmentProhibited: (participant: Participant) =>\n participant && participant.presenterAssignmentNotAllowed,\n\n isAttendeeAssignmentProhibited: (participant: Participant) =>\n !!(participant && participant.attendeeAssignmentNotAllowed),\n\n /**\n * checks to see if the participant id is the same as the passed id\n * there are multiple ids that can be used\n * @param {Object} participant - The locus participant object.\n * @param {String} id\n * @returns {Boolean}\n */\n isSame: (participant: Participant, id: string) =>\n participant && (participant.id === id || (participant.person && participant.person.id === id)),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @param {Boolean} isGuest\n * @param {String} status\n * @returns {Boolean}\n */\n isNotAdmitted: (participant: Participant, isGuest: boolean, status: string): boolean =>\n participant &&\n participant.guest &&\n ((participant.devices &&\n participant.devices[0] &&\n participant.devices[0].intent &&\n participant.devices[0].intent.type === _WAIT_ &&\n // @ts-ignore\n isGuest &&\n status === _IN_LOBBY_) ||\n // @ts-ignore\n !status === _IN_MEETING_),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isAudioMuted: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Audio could not be processed, participant is undefined.');\n }\n\n return MemberUtil.isMuted(participant, AUDIO_STATUS, AUDIO);\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isVideoMuted: (participant: Participant): boolean => {\n if (!participant) {\n throw new ParameterError('Video could not be processed, participant is undefined.');\n }\n\n return MemberUtil.isMuted(participant, VIDEO_STATUS, VIDEO);\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isHandRaised: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Raise hand could not be processed, participant is undefined.');\n }\n\n return participant.controls?.hand?.raised || false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isBreakoutsSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Breakout support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportBreakouts;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isSupportsSingleUserAutoEndMeeting: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Single user auto end meeting support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportSingleUserAutoEndMeeting;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isInterpretationSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Interpretation support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportSiInterpreter;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isLiveAnnotationSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'LiveAnnotation support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.annotatorAssignmentNotAllowed;\n },\n\n /**\n * utility method for audio/video muted status\n * @param {any} participant\n * @param {String} statusAccessor\n * @param {String} controlsAccessor\n * @returns {Boolean | undefined}\n */\n isMuted: (participant: Participant, statusAccessor: string, controlsAccessor: string) => {\n // check remote mute\n const remoteMute = participant?.controls?.[controlsAccessor]?.muted;\n if (remoteMute === true) {\n return true;\n }\n\n // check local mute\n const localStatus = participant?.status?.[statusAccessor];\n if (localStatus === _RECEIVE_ONLY_) {\n return true;\n }\n if (localStatus === _SEND_RECEIVE_) {\n return false;\n }\n\n return remoteMute;\n },\n\n /**\n * utility method for getting the recording member for later comparison\n * @param {Object} controls\n * @returns {String|null}\n */\n getRecordingMember: (controls: any) => {\n if (!controls) {\n return null;\n }\n if (controls.record && controls.record.recording && controls.record.meta) {\n return controls.record.meta.modifiedBy;\n }\n\n return null;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isRecording: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Recording could not be processed, participant is undefined.');\n }\n if (participant.controls && participant.controls.localRecord) {\n return participant.controls.localRecord.recording;\n }\n\n return false;\n },\n\n isRemovable: (isSelf, isGuest, isInMeeting, type) => {\n if (isGuest || isSelf) {\n return false;\n }\n if (type === _CALL_) {\n return false;\n }\n if (isInMeeting) {\n return true;\n }\n\n return false;\n },\n\n isMutable: (isSelf, isDevice, isInMeeting, isMuted, type) => {\n if (!isInMeeting) {\n return false;\n }\n if (isMuted) {\n return false;\n }\n if (type === _CALL_) {\n return false;\n }\n if (isSelf || isDevice) {\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractStatus: (participant: Participant) => {\n if (!(participant && participant.devices && participant.devices.length)) {\n return _NOT_IN_MEETING_;\n }\n if (participant.state === _JOINED_) {\n return _IN_MEETING_;\n }\n if (participant.state === _IDLE_) {\n if (participant.devices && participant.devices.length > 0) {\n const foundDevice = participant.devices.find(\n (device) =>\n device.intent && (device.intent.type === _WAIT_ || device.intent.type === _OBSERVE_)\n );\n\n return foundDevice ? _IN_LOBBY_ : _NOT_IN_MEETING_;\n }\n\n return _NOT_IN_MEETING_;\n }\n if (participant.state === _LEFT_) {\n return _NOT_IN_MEETING_;\n }\n\n return _NOT_IN_MEETING_;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractId: (participant: Participant) => {\n if (participant) {\n return participant.id;\n }\n\n return null;\n },\n\n /**\n * extracts the media status from nested participant object\n * @param {Object} participant - The locus participant object.\n * @returns {Object}\n */\n extractMediaStatus: (participant: Participant): IMediaStatus => {\n if (!participant) {\n throw new ParameterError('Media status could not be extracted, participant is undefined.');\n }\n\n return {\n audio: participant.status?.audioStatus,\n video: participant.status?.videoStatus,\n };\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractName: (participant: Participant) => {\n if (participant && participant.person) {\n return participant.person.name;\n }\n\n return null;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractPairedWithParticipantUrl: (participant: Participant): ParticipantUrl | undefined => {\n let participantUrl;\n\n participant?.devices?.forEach((device) => {\n device?.intents?.forEach((intent) => {\n if (intent?.type === _OBSERVE_ && intent?.associatedWith) {\n participantUrl = intent.associatedWith;\n }\n });\n });\n\n return participantUrl;\n },\n};\nexport default MemberUtil;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_types","require","_constants","_parameter","_interopRequireDefault","MemberUtil","canReclaimHost","participant","ParameterError","canReclaimHostRole","canApproveAIEnablement","attendeeRequestAiAssistantNotAllowed","getControlsRoles","_participant$controls","_participant$controls2","controls","role","roles","isBrb","_participant$controls3","_participant$controls4","brb","enabled","hasRole","controlRole","_MemberUtil$getContro","some","type","hasCohost","ServerRoles","Cohost","hasModerator","Moderator","hasPresenter","Presenter","extractControlRoles","cohost","moderator","presenter","isUser","_USER_","isModerator","isGuest","guest","isDevice","_RESOURCE_ROOM_","isModeratorAssignmentProhibited","moderatorAssignmentNotAllowed","isPresenterAssignmentProhibited","presenterAssignmentNotAllowed","isAttendeeAssignmentProhibited","attendeeAssignmentNotAllowed","isSame","id","person","isNotAdmitted","status","devices","intent","_WAIT_","_IN_LOBBY_","_IN_MEETING_","isAudioMuted","isMuted","AUDIO_STATUS","AUDIO","isVideoMuted","VIDEO_STATUS","VIDEO","isHandRaised","_participant$controls5","_participant$controls6","hand","raised","isBreakoutsSupported","doesNotSupportBreakouts","isSupportsSingleUserAutoEndMeeting","doesNotSupportSingleUserAutoEndMeeting","isInterpretationSupported","doesNotSupportSiInterpreter","isLiveAnnotationSupported","annotatorAssignmentNotAllowed","statusAccessor","controlsAccessor","_participant$controls7","_participant$controls8","_participant$status","remoteMute","muted","localStatus","_RECEIVE_ONLY_","_SEND_RECEIVE_","getRecordingMember","record","recording","meta","modifiedBy","isRecording","localRecord","isRemovable","isSelf","isInMeeting","_CALL_","isMutable","extractStatus","length","_NOT_IN_MEETING_","state","_JOINED_","_IDLE_","foundDevice","find","device","_OBSERVE_","_LEFT_","extractId","extractMediaStatus","_participant$status2","_participant$status3","audio","audioStatus","video","videoStatus","extractName","name","extractPairedWithParticipantUrl","_participant$devices","participantUrl","forEach","_device$intents","intents","associatedWith","extractCsis","_participant$devices2","csis","_set","default","_device$csis","_device$mediaSessions","csi","add","mediaSessions","mediaSession","_from","_default","exports"],"sources":["util.ts"],"sourcesContent":["import {\n IExternalRoles,\n ServerRoles,\n ServerRoleShape,\n IMediaStatus,\n Participant,\n ParticipantUrl,\n} from './types';\nimport {\n _USER_,\n _RESOURCE_ROOM_,\n _OBSERVE_,\n _WAIT_,\n _LEFT_,\n _JOINED_,\n _IDLE_,\n _IN_LOBBY_,\n _NOT_IN_MEETING_,\n _IN_MEETING_,\n AUDIO_STATUS,\n VIDEO_STATUS,\n _SEND_RECEIVE_,\n _RECEIVE_ONLY_,\n _CALL_,\n VIDEO,\n AUDIO,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst MemberUtil = {\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n canReclaimHost: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'canReclaimHostRole could not be processed, participant is undefined.'\n );\n }\n\n return participant.canReclaimHostRole || false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n canApproveAIEnablement: (participant) => {\n if (!participant) {\n return false;\n }\n\n return !participant.attendeeRequestAiAssistantNotAllowed;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {[ServerRoleShape]}\n */\n getControlsRoles: (participant: Participant): Array<ServerRoleShape> =>\n participant?.controls?.role?.roles,\n\n /**\n * Checks if the participant has the brb status enabled.\n *\n * @param {Participant} participant - The locus participant object.\n * @returns {boolean} - True if the participant has brb enabled, false otherwise.\n */\n isBrb: (participant: Participant): boolean => participant.controls?.brb?.enabled || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @param {ServerRoles} controlRole the search role\n * @returns {Boolean}\n */\n hasRole: (participant: Participant, controlRole: ServerRoles): boolean =>\n MemberUtil.getControlsRoles(participant)?.some(\n (role) => role.type === controlRole && role.hasRole\n ),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasCohost: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Cohost) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasModerator: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Moderator) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasPresenter: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Presenter) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {IExternalRoles}\n */\n extractControlRoles: (participant: Participant): IExternalRoles => {\n const roles = {\n cohost: MemberUtil.hasCohost(participant),\n moderator: MemberUtil.hasModerator(participant),\n presenter: MemberUtil.hasPresenter(participant),\n };\n\n return roles;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isUser: (participant: Participant) => participant && participant.type === _USER_,\n\n isModerator: (participant: Participant) => participant && participant.moderator,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isGuest: (participant: Participant) => participant && participant.guest,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isDevice: (participant: Participant) => participant && participant.type === _RESOURCE_ROOM_,\n\n isModeratorAssignmentProhibited: (participant: Participant) =>\n participant && participant.moderatorAssignmentNotAllowed,\n\n isPresenterAssignmentProhibited: (participant: Participant) =>\n participant && participant.presenterAssignmentNotAllowed,\n\n isAttendeeAssignmentProhibited: (participant: Participant) =>\n !!(participant && participant.attendeeAssignmentNotAllowed),\n\n /**\n * checks to see if the participant id is the same as the passed id\n * there are multiple ids that can be used\n * @param {Object} participant - The locus participant object.\n * @param {String} id\n * @returns {Boolean}\n */\n isSame: (participant: Participant, id: string) =>\n participant && (participant.id === id || (participant.person && participant.person.id === id)),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @param {Boolean} isGuest\n * @param {String} status\n * @returns {Boolean}\n */\n isNotAdmitted: (participant: Participant, isGuest: boolean, status: string): boolean =>\n participant &&\n participant.guest &&\n ((participant.devices &&\n participant.devices[0] &&\n participant.devices[0].intent &&\n participant.devices[0].intent.type === _WAIT_ &&\n // @ts-ignore\n isGuest &&\n status === _IN_LOBBY_) ||\n // @ts-ignore\n !status === _IN_MEETING_),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isAudioMuted: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Audio could not be processed, participant is undefined.');\n }\n\n return MemberUtil.isMuted(participant, AUDIO_STATUS, AUDIO);\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isVideoMuted: (participant: Participant): boolean => {\n if (!participant) {\n throw new ParameterError('Video could not be processed, participant is undefined.');\n }\n\n return MemberUtil.isMuted(participant, VIDEO_STATUS, VIDEO);\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isHandRaised: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Raise hand could not be processed, participant is undefined.');\n }\n\n return participant.controls?.hand?.raised || false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isBreakoutsSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Breakout support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportBreakouts;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isSupportsSingleUserAutoEndMeeting: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Single user auto end meeting support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportSingleUserAutoEndMeeting;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isInterpretationSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Interpretation support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportSiInterpreter;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isLiveAnnotationSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'LiveAnnotation support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.annotatorAssignmentNotAllowed;\n },\n\n /**\n * utility method for audio/video muted status\n * @param {any} participant\n * @param {String} statusAccessor\n * @param {String} controlsAccessor\n * @returns {Boolean | undefined}\n */\n isMuted: (participant: Participant, statusAccessor: string, controlsAccessor: string) => {\n // check remote mute\n const remoteMute = participant?.controls?.[controlsAccessor]?.muted;\n if (remoteMute === true) {\n return true;\n }\n\n // check local mute\n const localStatus = participant?.status?.[statusAccessor];\n if (localStatus === _RECEIVE_ONLY_) {\n return true;\n }\n if (localStatus === _SEND_RECEIVE_) {\n return false;\n }\n\n return remoteMute;\n },\n\n /**\n * utility method for getting the recording member for later comparison\n * @param {Object} controls\n * @returns {String|null}\n */\n getRecordingMember: (controls: any) => {\n if (!controls) {\n return null;\n }\n if (controls.record && controls.record.recording && controls.record.meta) {\n return controls.record.meta.modifiedBy;\n }\n\n return null;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isRecording: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Recording could not be processed, participant is undefined.');\n }\n if (participant.controls && participant.controls.localRecord) {\n return participant.controls.localRecord.recording;\n }\n\n return false;\n },\n\n isRemovable: (isSelf, isGuest, isInMeeting, type) => {\n if (isGuest || isSelf) {\n return false;\n }\n if (type === _CALL_) {\n return false;\n }\n if (isInMeeting) {\n return true;\n }\n\n return false;\n },\n\n isMutable: (isSelf, isDevice, isInMeeting, isMuted, type) => {\n if (!isInMeeting) {\n return false;\n }\n if (isMuted) {\n return false;\n }\n if (type === _CALL_) {\n return false;\n }\n if (isSelf || isDevice) {\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractStatus: (participant: Participant) => {\n if (!(participant && participant.devices && participant.devices.length)) {\n return _NOT_IN_MEETING_;\n }\n if (participant.state === _JOINED_) {\n return _IN_MEETING_;\n }\n if (participant.state === _IDLE_) {\n if (participant.devices && participant.devices.length > 0) {\n const foundDevice = participant.devices.find(\n (device) =>\n device.intent && (device.intent.type === _WAIT_ || device.intent.type === _OBSERVE_)\n );\n\n return foundDevice ? _IN_LOBBY_ : _NOT_IN_MEETING_;\n }\n\n return _NOT_IN_MEETING_;\n }\n if (participant.state === _LEFT_) {\n return _NOT_IN_MEETING_;\n }\n\n return _NOT_IN_MEETING_;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractId: (participant: Participant) => {\n if (participant) {\n return participant.id;\n }\n\n return null;\n },\n\n /**\n * extracts the media status from nested participant object\n * @param {Object} participant - The locus participant object.\n * @returns {Object}\n */\n extractMediaStatus: (participant: Participant): IMediaStatus => {\n if (!participant) {\n throw new ParameterError('Media status could not be extracted, participant is undefined.');\n }\n\n return {\n audio: participant.status?.audioStatus,\n video: participant.status?.videoStatus,\n };\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractName: (participant: Participant) => {\n if (participant && participant.person) {\n return participant.person.name;\n }\n\n return null;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractPairedWithParticipantUrl: (participant: Participant): ParticipantUrl | undefined => {\n let participantUrl;\n\n participant?.devices?.forEach((device) => {\n device?.intents?.forEach((intent) => {\n if (intent?.type === _OBSERVE_ && intent?.associatedWith) {\n participantUrl = intent.associatedWith;\n }\n });\n });\n\n return participantUrl;\n },\n\n /**\n * Collects all CSIs reported for a participant across all their devices,\n * looking at both the top-level `csis` array and any `mediaSessions[].csi` values.\n *\n * @param {Object} participant - The locus participant object.\n * @returns {Array<number>} unique CSIs for this participant\n */\n extractCsis: (participant: Participant): number[] => {\n const csis = new Set<number>();\n\n participant?.devices?.forEach((device: any) => {\n device?.csis?.forEach((csi: number) => {\n if (typeof csi === 'number') {\n csis.add(csi);\n }\n });\n device?.mediaSessions?.forEach((mediaSession: any) => {\n if (typeof mediaSession?.csi === 'number') {\n csis.add(mediaSession.csi);\n }\n });\n });\n\n return Array.from(csis);\n },\n};\nexport default MemberUtil;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/members/index.js
CHANGED
|
@@ -12,6 +12,7 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
12
12
|
value: true
|
|
13
13
|
});
|
|
14
14
|
exports.default = void 0;
|
|
15
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
15
16
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
16
17
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
17
18
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
|
|
@@ -26,12 +27,13 @@ var _webexCore = require("@webex/webex-core");
|
|
|
26
27
|
var _constants = require("../constants");
|
|
27
28
|
var _triggerProxy = _interopRequireDefault(require("../common/events/trigger-proxy"));
|
|
28
29
|
var _member = _interopRequireDefault(require("../member"));
|
|
30
|
+
var _util = _interopRequireDefault(require("../member/util"));
|
|
29
31
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
30
32
|
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
|
31
33
|
var _reclaimHostRoleErrors = require("../common/errors/reclaim-host-role-errors");
|
|
32
34
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
33
35
|
var _request = _interopRequireDefault(require("./request"));
|
|
34
|
-
var
|
|
36
|
+
var _util2 = _interopRequireDefault(require("./util"));
|
|
35
37
|
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
36
38
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
37
39
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
@@ -110,6 +112,14 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
110
112
|
(0, _defineProperty2.default)(_this, "recordingId", void 0);
|
|
111
113
|
(0, _defineProperty2.default)(_this, "selfId", void 0);
|
|
112
114
|
(0, _defineProperty2.default)(_this, "type", void 0);
|
|
115
|
+
/**
|
|
116
|
+
* Map of CSI -> memberId that previously used the CSI in a Locus update.
|
|
117
|
+
* Keyed by CSI so findMemberByCsi can resolve it in O(1).
|
|
118
|
+
* Kept here (rather than on each Member) so it survives members being removed
|
|
119
|
+
* and re-added (e.g. when entering/leaving a breakout session).
|
|
120
|
+
* @private
|
|
121
|
+
*/
|
|
122
|
+
(0, _defineProperty2.default)(_this, "memberIdByHistoryCsi", new _map.default());
|
|
113
123
|
(0, _defineProperty2.default)(_this, "namespace", _constants.MEETINGS);
|
|
114
124
|
_this.membersRequest = new _request.default({
|
|
115
125
|
meeting: attrs.meeting
|
|
@@ -297,6 +307,15 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
297
307
|
}, {
|
|
298
308
|
key: "clearMembers",
|
|
299
309
|
value: function clearMembers() {
|
|
310
|
+
var _this2 = this;
|
|
311
|
+
// capture CSIs of all current members before reset so findMemberByCsi can
|
|
312
|
+
// still resolve them if a member is later re-added (e.g. when leaving a
|
|
313
|
+
// breakout session)
|
|
314
|
+
(0, _values.default)(this.membersCollection.getAll()).forEach(function (member) {
|
|
315
|
+
_util.default.extractCsis(member.participant).forEach(function (csi) {
|
|
316
|
+
return _this2.memberIdByHistoryCsi.set(csi, member.id);
|
|
317
|
+
});
|
|
318
|
+
});
|
|
300
319
|
this.membersCollection.reset();
|
|
301
320
|
_triggerProxy.default.trigger(this, {
|
|
302
321
|
file: 'members',
|
|
@@ -315,13 +334,13 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
315
334
|
}, {
|
|
316
335
|
key: "updateRelationsBetweenMembers",
|
|
317
336
|
value: function updateRelationsBetweenMembers(membersUpdate) {
|
|
318
|
-
var
|
|
337
|
+
var _this3 = this;
|
|
319
338
|
var updatePairedMembers = function updatePairedMembers(membersList) {
|
|
320
339
|
membersList.forEach(function (member) {
|
|
321
340
|
if (!member.pairedWith.participantUrl) {
|
|
322
341
|
// if we don't have a participantUrl set, it may be that we had it in the past and not anymore, so cleanup the rest of the data
|
|
323
342
|
if (member.pairedWith.memberId) {
|
|
324
|
-
var pairedMember =
|
|
343
|
+
var pairedMember = _this3.membersCollection.get(member.pairedWith.memberId);
|
|
325
344
|
if (pairedMember) {
|
|
326
345
|
// remove member from pairedMember's associatedUsers array
|
|
327
346
|
pairedMember.associatedUsers.delete(member.id);
|
|
@@ -337,7 +356,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
337
356
|
member.pairedWith.memberId = undefined;
|
|
338
357
|
} else if (member.pairedWith.memberId === undefined) {
|
|
339
358
|
// we have participantUrl set but not memberId, so find the member and set it
|
|
340
|
-
var _pairedMember = (0, _values.default)(
|
|
359
|
+
var _pairedMember = (0, _values.default)(_this3.membersCollection.getAll()).find(function (m) {
|
|
341
360
|
var _m$participant;
|
|
342
361
|
return ((_m$participant = m.participant) === null || _m$participant === void 0 ? void 0 : _m$participant.url) === member.pairedWith.participantUrl;
|
|
343
362
|
});
|
|
@@ -526,9 +545,18 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
526
545
|
}, {
|
|
527
546
|
key: "removeMembers",
|
|
528
547
|
value: function removeMembers(removedMembers) {
|
|
529
|
-
var
|
|
548
|
+
var _this4 = this;
|
|
530
549
|
removedMembers.forEach(function (memberId) {
|
|
531
|
-
|
|
550
|
+
// capture CSIs before removal so findMemberByCsi can still resolve them
|
|
551
|
+
// if the member is later re-added (e.g. when leaving a breakout session)
|
|
552
|
+
// with a participant payload that no longer contains the original CSIs
|
|
553
|
+
var existingMember = _this4.membersCollection.get(memberId);
|
|
554
|
+
if (existingMember) {
|
|
555
|
+
_util.default.extractCsis(existingMember.participant).forEach(function (csi) {
|
|
556
|
+
return _this4.memberIdByHistoryCsi.set(csi, memberId);
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
_this4.membersCollection.remove(memberId);
|
|
532
560
|
});
|
|
533
561
|
}
|
|
534
562
|
|
|
@@ -543,24 +571,35 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
543
571
|
}, {
|
|
544
572
|
key: "constructMembers",
|
|
545
573
|
value: function constructMembers(list, isUpdate) {
|
|
546
|
-
var
|
|
574
|
+
var _this5 = this;
|
|
547
575
|
list.forEach(function (member) {
|
|
548
576
|
if (isUpdate) {
|
|
549
577
|
// some member props are generated by SDK and need to be preserved on update,
|
|
550
578
|
// because they depend on relationships with other members so they need to be handled
|
|
551
579
|
// at the end, once all members are updated - this is done in updateRelationsBetweenMembers()
|
|
552
580
|
var propsToKeepOnUpdate = ['pairedWith.memberId'];
|
|
553
|
-
var existingMember =
|
|
581
|
+
var existingMember = _this5.membersCollection.get(member.id);
|
|
554
582
|
if (existingMember) {
|
|
583
|
+
var _existingMember$parti, _member$participant;
|
|
555
584
|
propsToKeepOnUpdate.forEach(function (prop) {
|
|
556
585
|
var existingValue = (0, _lodash.get)(existingMember, prop);
|
|
557
586
|
if (existingValue !== undefined) {
|
|
558
587
|
(0, _lodash.set)(member, prop, existingValue);
|
|
559
588
|
}
|
|
560
589
|
});
|
|
590
|
+
|
|
591
|
+
// remember CSIs the member used previously so findMemberByCsi can still
|
|
592
|
+
// resolve a CSI even after participant.devices[].csis no longer contains it.
|
|
593
|
+
// Skip re-extracting when devices haven't changed - existing history already covers them.
|
|
594
|
+
var devicesUnchanged = (0, _lodash.isEqual)((_existingMember$parti = existingMember.participant) === null || _existingMember$parti === void 0 ? void 0 : _existingMember$parti.devices, (_member$participant = member.participant) === null || _member$participant === void 0 ? void 0 : _member$participant.devices);
|
|
595
|
+
if (!devicesUnchanged) {
|
|
596
|
+
_util.default.extractCsis(existingMember.participant).forEach(function (csi) {
|
|
597
|
+
return _this5.memberIdByHistoryCsi.set(csi, member.id);
|
|
598
|
+
});
|
|
599
|
+
}
|
|
561
600
|
}
|
|
562
601
|
}
|
|
563
|
-
|
|
602
|
+
_this5.membersCollection.set(member.id, member);
|
|
564
603
|
});
|
|
565
604
|
}
|
|
566
605
|
|
|
@@ -733,7 +772,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
733
772
|
}, {
|
|
734
773
|
key: "update",
|
|
735
774
|
value: function update(participants) {
|
|
736
|
-
var
|
|
775
|
+
var _this6 = this;
|
|
737
776
|
var membersUpdate = {
|
|
738
777
|
added: [],
|
|
739
778
|
updated: []
|
|
@@ -743,26 +782,26 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
743
782
|
if (participant.hideInRoster) {
|
|
744
783
|
return;
|
|
745
784
|
}
|
|
746
|
-
var existing =
|
|
785
|
+
var existing = _this6.membersCollection.get(participant.id);
|
|
747
786
|
if (existing) {
|
|
748
787
|
// TODO: compare existing member to new participant coming in properties and determine if updated (this helps for non delta events)
|
|
749
788
|
// on client re renders, but we will have to determine what values to compare to determine difference, premature optimization
|
|
750
789
|
membersUpdate.updated.push(new _member.default(participant, {
|
|
751
|
-
recordingId:
|
|
752
|
-
selfId:
|
|
753
|
-
hostId:
|
|
754
|
-
contentSharingId:
|
|
755
|
-
whiteboardSharingId:
|
|
756
|
-
type:
|
|
790
|
+
recordingId: _this6.recordingId,
|
|
791
|
+
selfId: _this6.selfId,
|
|
792
|
+
hostId: _this6.hostId,
|
|
793
|
+
contentSharingId: _this6.mediaShareContentId,
|
|
794
|
+
whiteboardSharingId: _this6.mediaShareWhiteboardId,
|
|
795
|
+
type: _this6.type
|
|
757
796
|
}));
|
|
758
797
|
} else {
|
|
759
798
|
membersUpdate.added.push(new _member.default(participant, {
|
|
760
|
-
recordingId:
|
|
761
|
-
selfId:
|
|
762
|
-
hostId:
|
|
763
|
-
contentSharingId:
|
|
764
|
-
whiteboardSharingId:
|
|
765
|
-
type:
|
|
799
|
+
recordingId: _this6.recordingId,
|
|
800
|
+
selfId: _this6.selfId,
|
|
801
|
+
hostId: _this6.hostId,
|
|
802
|
+
contentSharingId: _this6.mediaShareContentId,
|
|
803
|
+
whiteboardSharingId: _this6.mediaShareWhiteboardId,
|
|
804
|
+
type: _this6.type
|
|
766
805
|
}));
|
|
767
806
|
}
|
|
768
807
|
});
|
|
@@ -783,10 +822,10 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
783
822
|
if (!this.locusUrl) {
|
|
784
823
|
return _promise.default.reject(new _parameter.default('The associated locus url for this meeting object must be defined.'));
|
|
785
824
|
}
|
|
786
|
-
if ((invitee === null || invitee === void 0 ? void 0 : invitee.skipEmailValidation) !== true &&
|
|
825
|
+
if ((invitee === null || invitee === void 0 ? void 0 : invitee.skipEmailValidation) !== true && _util2.default.isInvalidInvitee(invitee)) {
|
|
787
826
|
return _promise.default.reject(new _parameter.default('The invitee must be defined with either a valid email, emailAddress or phoneNumber property.'));
|
|
788
827
|
}
|
|
789
|
-
var options =
|
|
828
|
+
var options = _util2.default.generateAddMemberOptions(invitee, this.locusUrl, alertIfActive);
|
|
790
829
|
return this.membersRequest.addMembers(options);
|
|
791
830
|
}
|
|
792
831
|
|
|
@@ -802,10 +841,10 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
802
841
|
if (!this.locusUrl) {
|
|
803
842
|
return _promise.default.reject(new _parameter.default('The associated locus url for this meeting object must be defined.'));
|
|
804
843
|
}
|
|
805
|
-
if (
|
|
844
|
+
if (_util2.default.isInvalidInvitee(invitee)) {
|
|
806
845
|
return _promise.default.reject(new _parameter.default('The invitee must be defined with a valid phoneNumber property.'));
|
|
807
846
|
}
|
|
808
|
-
var options =
|
|
847
|
+
var options = _util2.default.cancelPhoneInviteOptions(invitee, this.locusUrl);
|
|
809
848
|
return this.membersRequest.cancelPhoneInvite(options);
|
|
810
849
|
}
|
|
811
850
|
|
|
@@ -826,7 +865,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
826
865
|
if (!(invitee !== null && invitee !== void 0 && invitee.memberId)) {
|
|
827
866
|
return _promise.default.reject(new _parameter.default('The invitee must be defined with a memberId property.'));
|
|
828
867
|
}
|
|
829
|
-
var options =
|
|
868
|
+
var options = _util2.default.cancelInviteByMemberIdOptions(invitee, this.locusUrl);
|
|
830
869
|
return this.membersRequest.cancelInviteByMemberId(options);
|
|
831
870
|
}
|
|
832
871
|
|
|
@@ -846,7 +885,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
846
885
|
}
|
|
847
886
|
var options = _objectSpread({
|
|
848
887
|
sessionLocusUrls: sessionLocusUrls
|
|
849
|
-
},
|
|
888
|
+
}, _util2.default.generateAdmitMemberOptions(memberIds, this.locusUrl));
|
|
850
889
|
return this.membersRequest.admitMember(options);
|
|
851
890
|
}
|
|
852
891
|
|
|
@@ -866,7 +905,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
866
905
|
if (!memberId) {
|
|
867
906
|
return _promise.default.reject(new _parameter.default('The member id must be defined to remove the member.'));
|
|
868
907
|
}
|
|
869
|
-
var options =
|
|
908
|
+
var options = _util2.default.generateRemoveMemberOptions(memberId, this.locusUrl);
|
|
870
909
|
return this.membersRequest.removeMember(options);
|
|
871
910
|
}
|
|
872
911
|
|
|
@@ -890,7 +929,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
890
929
|
if (!memberId) {
|
|
891
930
|
return _promise.default.reject(new _parameter.default('The member id must be defined to mute the member.'));
|
|
892
931
|
}
|
|
893
|
-
var options =
|
|
932
|
+
var options = _util2.default.generateMuteMemberOptions(memberId, mute, this.locusUrl, isAudio);
|
|
894
933
|
return this.membersRequest.muteMember(options);
|
|
895
934
|
}
|
|
896
935
|
|
|
@@ -911,7 +950,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
911
950
|
if (!memberId) {
|
|
912
951
|
return _promise.default.reject(new _parameter.default('The member id must be defined to assign the roles to a member.'));
|
|
913
952
|
}
|
|
914
|
-
var options =
|
|
953
|
+
var options = _util2.default.generateRoleAssignmentMemberOptions(memberId, roles, this.locusUrl);
|
|
915
954
|
return this.membersRequest.assignRolesMember(options).catch(function (error) {
|
|
916
955
|
var _error$body;
|
|
917
956
|
var errorCode = (_error$body = error.body) === null || _error$body === void 0 ? void 0 : _error$body.errorCode;
|
|
@@ -946,7 +985,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
946
985
|
if (!memberId) {
|
|
947
986
|
return _promise.default.reject(new _parameter.default('The member id must be defined to move the member to lobby.'));
|
|
948
987
|
}
|
|
949
|
-
var body =
|
|
988
|
+
var body = _util2.default.getMoveMemberToLobbyRequestBody(memberId);
|
|
950
989
|
return this.membersRequest.moveToLobbyMember({
|
|
951
990
|
locusUrl: this.locusUrl,
|
|
952
991
|
memberId: memberId
|
|
@@ -971,7 +1010,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
971
1010
|
if (!memberId) {
|
|
972
1011
|
return _promise.default.reject(new _parameter.default('The member id must be defined to raise/lower the hand of the member.'));
|
|
973
1012
|
}
|
|
974
|
-
var options =
|
|
1013
|
+
var options = _util2.default.generateRaiseHandMemberOptions(memberId, raise, this.locusUrl);
|
|
975
1014
|
return this.membersRequest.raiseOrLowerHandMember(options);
|
|
976
1015
|
}
|
|
977
1016
|
|
|
@@ -992,7 +1031,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
992
1031
|
if (!requestingMemberId) {
|
|
993
1032
|
return _promise.default.reject(new _parameter.default('The requestingMemberId must be defined to lower all hands in a meeting.'));
|
|
994
1033
|
}
|
|
995
|
-
var options =
|
|
1034
|
+
var options = _util2.default.generateLowerAllHandsMemberOptions(requestingMemberId, this.locusUrl, roles);
|
|
996
1035
|
return this.membersRequest.lowerAllHandsMember(options);
|
|
997
1036
|
}
|
|
998
1037
|
|
|
@@ -1014,7 +1053,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1014
1053
|
if (!memberId) {
|
|
1015
1054
|
return _promise.default.reject(new _parameter.default('The member id must be defined to transfer host to the member.'));
|
|
1016
1055
|
}
|
|
1017
|
-
var options =
|
|
1056
|
+
var options = _util2.default.generateTransferHostMemberOptions(memberId, moderator, this.locusUrl);
|
|
1018
1057
|
return this.membersRequest.transferHostToMember(options);
|
|
1019
1058
|
}
|
|
1020
1059
|
|
|
@@ -1047,13 +1086,16 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1047
1086
|
});
|
|
1048
1087
|
var url = device === null || device === void 0 ? void 0 : device.url;
|
|
1049
1088
|
if (locusUrl && url) {
|
|
1050
|
-
var options =
|
|
1089
|
+
var options = _util2.default.genderateSendDTMFOptions(url, tones, memberId, locusUrl);
|
|
1051
1090
|
return this.membersRequest.sendDialPadKey(options);
|
|
1052
1091
|
}
|
|
1053
1092
|
return _promise.default.reject(new Error('Members:index#sendDialPadKey --> cannot send DTMF, meeting does not have a connection to the "locus" call control service.'));
|
|
1054
1093
|
}
|
|
1055
1094
|
|
|
1056
|
-
/** Finds a member that has any device with a csi matching provided value
|
|
1095
|
+
/** Finds a member that has any device with a csi matching provided value.
|
|
1096
|
+
* Falls back to the `memberIdByHistoryCsi` map so that a CSI a member used in
|
|
1097
|
+
* a previous Locus update can still be resolved even if it is no longer
|
|
1098
|
+
* present in `participant.devices[].csis`.
|
|
1057
1099
|
*
|
|
1058
1100
|
* @param {number} csi
|
|
1059
1101
|
* @returns {Member}
|
|
@@ -1061,10 +1103,11 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1061
1103
|
}, {
|
|
1062
1104
|
key: "findMemberByCsi",
|
|
1063
1105
|
value: function findMemberByCsi(csi) {
|
|
1064
|
-
|
|
1065
|
-
|
|
1106
|
+
var members = (0, _values.default)(this.membersCollection.getAll());
|
|
1107
|
+
var currentMatch = members.find(function (member) {
|
|
1108
|
+
var _member$participant2, _member$participant2$;
|
|
1066
1109
|
return (// @ts-ignore
|
|
1067
|
-
(_member$
|
|
1110
|
+
(_member$participant2 = member.participant) === null || _member$participant2 === void 0 ? void 0 : (_member$participant2$ = _member$participant2.devices) === null || _member$participant2$ === void 0 ? void 0 : _member$participant2$.find(function (device) {
|
|
1068
1111
|
var _device$csis;
|
|
1069
1112
|
return (_device$csis = device.csis) === null || _device$csis === void 0 ? void 0 : _device$csis.find(function (memberCsi) {
|
|
1070
1113
|
return memberCsi === csi;
|
|
@@ -1072,6 +1115,14 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1072
1115
|
})
|
|
1073
1116
|
);
|
|
1074
1117
|
});
|
|
1118
|
+
if (currentMatch) {
|
|
1119
|
+
return currentMatch;
|
|
1120
|
+
}
|
|
1121
|
+
var historyMemberId = this.memberIdByHistoryCsi.get(csi);
|
|
1122
|
+
if (historyMemberId) {
|
|
1123
|
+
return this.membersCollection.get(historyMemberId);
|
|
1124
|
+
}
|
|
1125
|
+
return undefined;
|
|
1075
1126
|
}
|
|
1076
1127
|
|
|
1077
1128
|
/**
|
|
@@ -1123,7 +1174,7 @@ var Members = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
|
|
|
1123
1174
|
return _promise.default.reject(new _parameter.default('The member id must be defined to edit display name of the member.'));
|
|
1124
1175
|
}
|
|
1125
1176
|
var locusUrl = this.locusUrl;
|
|
1126
|
-
var options =
|
|
1177
|
+
var options = _util2.default.generateEditDisplayNameMemberOptions(memberId, requestingParticipantId, alias, locusUrl, suffix);
|
|
1127
1178
|
return this.membersRequest.editDisplayNameMember(options);
|
|
1128
1179
|
}
|
|
1129
1180
|
}]);
|