@webex/plugin-meetings 3.0.0-beta.289 → 3.0.0-beta.290
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +11 -0
- package/dist/member/util.js.map +1 -1
- package/dist/members/types.js.map +1 -1
- package/dist/members/util.js +15 -4
- package/dist/members/util.js.map +1 -1
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/members/types.d.ts +1 -0
- package/dist/types/members/util.d.ts +5 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +19 -19
- package/src/member/index.ts +9 -0
- package/src/member/util.ts +14 -0
- package/src/members/types.ts +1 -0
- package/src/members/util.ts +15 -1
- package/test/unit/spec/member/index.js +8 -7
- package/test/unit/spec/member/util.js +32 -0
- package/test/unit/spec/members/utils.js +26 -0
package/dist/breakouts/index.js
CHANGED
|
@@ -1041,7 +1041,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
1041
1041
|
this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
|
|
1042
1042
|
}
|
|
1043
1043
|
},
|
|
1044
|
-
version: "3.0.0-beta.
|
|
1044
|
+
version: "3.0.0-beta.290"
|
|
1045
1045
|
});
|
|
1046
1046
|
var _default = Breakouts;
|
|
1047
1047
|
exports.default = _default;
|
package/dist/member/index.js
CHANGED
|
@@ -32,6 +32,7 @@ var Member = /*#__PURE__*/function () {
|
|
|
32
32
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
33
33
|
(0, _classCallCheck2.default)(this, Member);
|
|
34
34
|
(0, _defineProperty2.default)(this, "associatedUser", void 0);
|
|
35
|
+
(0, _defineProperty2.default)(this, "canReclaimHost", void 0);
|
|
35
36
|
(0, _defineProperty2.default)(this, "id", void 0);
|
|
36
37
|
(0, _defineProperty2.default)(this, "isAudioMuted", void 0);
|
|
37
38
|
(0, _defineProperty2.default)(this, "isContentSharing", void 0);
|
|
@@ -60,6 +61,13 @@ var Member = /*#__PURE__*/function () {
|
|
|
60
61
|
(0, _defineProperty2.default)(this, "supportLiveAnnotation", void 0);
|
|
61
62
|
(0, _defineProperty2.default)(this, "type", void 0);
|
|
62
63
|
(0, _defineProperty2.default)(this, "namespace", _constants.MEETINGS);
|
|
64
|
+
/**
|
|
65
|
+
* @instance
|
|
66
|
+
* @type {Boolean}
|
|
67
|
+
* @public
|
|
68
|
+
* @memberof Member
|
|
69
|
+
*/
|
|
70
|
+
this.canReclaimHost = false;
|
|
63
71
|
/**
|
|
64
72
|
* The server participant object
|
|
65
73
|
* @instance
|
|
@@ -279,6 +287,7 @@ var Member = /*#__PURE__*/function () {
|
|
|
279
287
|
value: function processParticipant(participant) {
|
|
280
288
|
this.participant = participant;
|
|
281
289
|
if (participant) {
|
|
290
|
+
this.canReclaimHost = _util.default.canReclaimHost(participant);
|
|
282
291
|
this.id = _util.default.extractId(participant);
|
|
283
292
|
this.name = _util.default.extractName(participant);
|
|
284
293
|
this.isAudioMuted = _util.default.isAudioMuted(participant);
|
package/dist/member/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Member","participant","options","MEETINGS","id","name","isAudioMuted","isVideoMuted","isHandRaised","supportsBreakouts","supportLiveAnnotation","isSelf","isHost","isGuest","isInLobby","isInMeeting","isNotAdmitted","isContentSharing","status","isDevice","isUser","associatedUser","isRecording","isMutable","isRemovable","type","isModerator","isModeratorAssignmentProhibited","roles","mediaStatus","audio","video","processParticipant","processParticipantOptions","processMember","MemberUtil","extractId","extractName","isBreakoutsSupported","supportsInterpretation","isInterpretationSupported","isLiveAnnotationSupported","processStatus","processRoles","processIsSelf","selfId","processIsHost","hostId","processIsContentSharing","contentSharingId","processType","processIsRecording","recordingId","extractMediaStatus","extractStatus","_IN_LOBBY_","_IN_MEETING_","_NOT_IN_MEETING_","flag","sharingId","isSame","isAssociatedSame","extractControlRoles"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_} from '../constants';\nimport {IExternalRoles, IMediaStatus, ParticipantWithRoles} from './types';\n\nimport MemberUtil from './util';\n\n/**\n * @class Member\n */\nexport default class Member {\n associatedUser: any;\n id: any;\n isAudioMuted: any;\n isContentSharing: any;\n isDevice: any;\n isGuest: any;\n isHandRaised: any;\n isHost: any;\n isInLobby: any;\n isInMeeting: any;\n isModerator: any;\n isModeratorAssignmentProhibited: any;\n isMutable: any;\n isNotAdmitted: any;\n isRecording: any;\n isRemovable: any;\n isSelf: any;\n isUser: any;\n isVideoMuted: any;\n roles: IExternalRoles;\n mediaStatus: IMediaStatus;\n name: any;\n participant: any;\n status: any;\n supportsBreakouts: boolean;\n supportsInterpretation: boolean;\n supportLiveAnnotation: boolean;\n type: any;\n namespace = MEETINGS;\n\n /**\n * @param {Object} participant - the locus participant\n * @param {Object} [options] - constructor params\n * @param {String} options.selfId\n * @param {String} options.hostId\n * @param {String} options.contentSharingId\n * @param {String} options.type\n * @returns {Member}\n * @memberof Member\n */\n constructor(\n participant: object,\n options:\n | {\n selfId: string;\n hostId: string;\n contentSharingId: string;\n type: string;\n }\n | any = {}\n ) {\n /**\n * The server participant object\n * @instance\n * @type {Object}\n * @private\n * @memberof Member\n */\n this.participant = null;\n /**\n * The member id\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.id = null;\n /**\n * The member name\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.name = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isAudioMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isVideoMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHandRaised = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportsBreakouts = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportLiveAnnotation = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isSelf = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHost = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isGuest = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInLobby = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInMeeting = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isNotAdmitted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isContentSharing = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.status = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isDevice = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isUser = null;\n /**\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.associatedUser = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRecording = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isMutable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRemovable = null;\n /**\n * @instance\n * @type {String}\n * @private\n * @memberof Member\n */\n this.type = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModerator = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModeratorAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {IExternalRoles}\n * @public\n * @memberof Member\n */\n this.roles = null;\n\n /**\n * @instance\n * @type {IMediaStatus}\n * @public\n * @memberof Member\n * @example {audio: MediaStatus.RECVONLY, video: MediaStatus.SENDRECV}\n */\n this.mediaStatus = {\n audio: null,\n video: null,\n };\n\n // TODO: more participant types\n // such as native client, web client, is a device, what type of phone, etc\n this.processParticipant(participant);\n this.processParticipantOptions(participant, options);\n this.processMember();\n }\n\n /**\n * set all the participant values extracted directly from locus participant\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipant(participant: object) {\n this.participant = participant;\n if (participant) {\n this.id = MemberUtil.extractId(participant);\n this.name = MemberUtil.extractName(participant);\n this.isAudioMuted = MemberUtil.isAudioMuted(participant);\n this.isVideoMuted = MemberUtil.isVideoMuted(participant);\n this.isHandRaised = MemberUtil.isHandRaised(participant);\n this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);\n this.supportsInterpretation = MemberUtil.isInterpretationSupported(participant);\n this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);\n this.isGuest = MemberUtil.isGuest(participant);\n this.isUser = MemberUtil.isUser(participant);\n this.isDevice = MemberUtil.isDevice(participant);\n this.isModerator = MemberUtil.isModerator(participant);\n this.isModeratorAssignmentProhibited =\n MemberUtil.isModeratorAssignmentProhibited(participant);\n this.processStatus(participant);\n this.processRoles(participant as ParticipantWithRoles);\n // must be done last\n this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);\n }\n }\n\n /**\n * Use the members options and participant values to set on the member\n * @param {Object} participant the locus participant object\n * @param {Object} options the passed in options, what was set on members\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipantOptions(participant: object, options: any) {\n if (participant && options) {\n this.processIsSelf(participant, options.selfId);\n this.processIsHost(participant, options.hostId);\n this.processIsContentSharing(participant, options.contentSharingId);\n this.processType(options.type);\n this.processIsRecording(participant, options.recordingId);\n }\n }\n\n /**\n * processes what already exists on the member to determine other info about the member\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processMember() {\n // must occur after self, guest, meeting, and type properties are calculated\n this.isRemovable = MemberUtil.isRemovable(\n this.isSelf,\n this.isGuest,\n this.isInMeeting,\n this.type\n );\n // must occur after self, device, meeting, mute status, and type properties are calculated\n this.isMutable = MemberUtil.isMutable(\n this.isSelf,\n this.isDevice,\n this.isInMeeting,\n this.isAudioMuted,\n this.type\n );\n\n this.mediaStatus = MemberUtil.extractMediaStatus(this.participant);\n }\n\n /**\n * set the status on member object\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processStatus(participant: object) {\n this.status = MemberUtil.extractStatus(participant);\n switch (this.status) {\n case _IN_LOBBY_:\n this.isInLobby = true;\n this.isInMeeting = false;\n break;\n case _IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = true;\n break;\n case _NOT_IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = false;\n break;\n default:\n this.isInLobby = false;\n this.isInMeeting = false;\n }\n }\n\n /**\n * set the isContentSharing on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsContentSharing(flag: boolean) {\n this.isContentSharing = flag;\n }\n\n /**\n * set the isHost on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsHost(flag: boolean) {\n this.isHost = flag;\n }\n\n /**\n * set the isSelf on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsSelf(flag: boolean) {\n this.isSelf = flag;\n }\n\n /**\n * determine if this member is content sharing\n * @param {Object} participant\n * @param {String} sharingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsContentSharing(participant: object, sharingId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isContentSharing = MemberUtil.isSame(participant, sharingId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isContentSharing = MemberUtil.isAssociatedSame(participant, sharingId);\n }\n }\n\n /**\n * Determine if this member is recording\n * @param {Object} participant\n * @param {String} recordingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsRecording(participant: object, recordingId: string) {\n this.isRecording = MemberUtil.isSame(participant, recordingId);\n }\n\n /**\n * determine if this member is the self\n * @param {Object} participant\n * @param {String} selfId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsSelf(participant: object, selfId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isSelf = MemberUtil.isSame(participant, selfId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isSelf = MemberUtil.isAssociatedSame(participant, selfId);\n this.associatedUser = selfId;\n }\n }\n\n /**\n * determine if this member is the host\n * @param {Object} participant\n * @param {String} hostId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsHost(participant: object, hostId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isHost = MemberUtil.isSame(participant, hostId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isHost = MemberUtil.isAssociatedSame(participant, hostId);\n }\n }\n\n /**\n * process the roles that have been applied to this member\n * @param {Object} participant\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processRoles(participant: ParticipantWithRoles) {\n this.roles = MemberUtil.extractControlRoles(participant);\n }\n\n /**\n * set the type for the member, could be MEETING or CALL\n * @param {String} type\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processType(type: string) {\n this.type = type;\n }\n}\n"],"mappings":";;;;;;;;;;;AAGA;AAGA;AANA;AACA;AACA;AAMA;AACA;AACA;AAFA,IAGqBA,MAAM;EA+BzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,gBACEC,WAAmB,EASnB;IAAA,IARAC,OAOO,uEAAG,CAAC,CAAC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,iDArBFC,mBAAQ;IAuBlB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACF,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACG,EAAE,GAAG,IAAI;IACd;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAC7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,+BAA+B,GAAG,IAAI;;IAE3C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,KAAK,GAAG,IAAI;;IAEjB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG;MACjBC,KAAK,EAAE,IAAI;MACXC,KAAK,EAAE;IACT,CAAC;;IAED;IACA;IACA,IAAI,CAACC,kBAAkB,CAAC/B,WAAW,CAAC;IACpC,IAAI,CAACgC,yBAAyB,CAAChC,WAAW,EAAEC,OAAO,CAAC;IACpD,IAAI,CAACgC,aAAa,EAAE;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,4BAA2BjC,WAAmB,EAAE;MAC9C,IAAI,CAACA,WAAW,GAAGA,WAAW;MAC9B,IAAIA,WAAW,EAAE;QACf,IAAI,CAACG,EAAE,GAAG+B,aAAU,CAACC,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"}
|
|
1
|
+
{"version":3,"names":["Member","participant","options","MEETINGS","canReclaimHost","id","name","isAudioMuted","isVideoMuted","isHandRaised","supportsBreakouts","supportLiveAnnotation","isSelf","isHost","isGuest","isInLobby","isInMeeting","isNotAdmitted","isContentSharing","status","isDevice","isUser","associatedUser","isRecording","isMutable","isRemovable","type","isModerator","isModeratorAssignmentProhibited","roles","mediaStatus","audio","video","processParticipant","processParticipantOptions","processMember","MemberUtil","extractId","extractName","isBreakoutsSupported","supportsInterpretation","isInterpretationSupported","isLiveAnnotationSupported","processStatus","processRoles","processIsSelf","selfId","processIsHost","hostId","processIsContentSharing","contentSharingId","processType","processIsRecording","recordingId","extractMediaStatus","extractStatus","_IN_LOBBY_","_IN_MEETING_","_NOT_IN_MEETING_","flag","sharingId","isSame","isAssociatedSame","extractControlRoles"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {MEETINGS, _IN_LOBBY_, _NOT_IN_MEETING_, _IN_MEETING_} from '../constants';\nimport {IExternalRoles, IMediaStatus, ParticipantWithRoles} from './types';\n\nimport MemberUtil from './util';\n\n/**\n * @class Member\n */\nexport default class Member {\n associatedUser: any;\n canReclaimHost: boolean;\n id: any;\n isAudioMuted: any;\n isContentSharing: any;\n isDevice: any;\n isGuest: any;\n isHandRaised: any;\n isHost: any;\n isInLobby: any;\n isInMeeting: any;\n isModerator: any;\n isModeratorAssignmentProhibited: any;\n isMutable: any;\n isNotAdmitted: any;\n isRecording: any;\n isRemovable: any;\n isSelf: any;\n isUser: any;\n isVideoMuted: any;\n roles: IExternalRoles;\n mediaStatus: IMediaStatus;\n name: any;\n participant: any;\n status: any;\n supportsBreakouts: boolean;\n supportsInterpretation: boolean;\n supportLiveAnnotation: boolean;\n type: any;\n namespace = MEETINGS;\n\n /**\n * @param {Object} participant - the locus participant\n * @param {Object} [options] - constructor params\n * @param {String} options.selfId\n * @param {String} options.hostId\n * @param {String} options.contentSharingId\n * @param {String} options.type\n * @returns {Member}\n * @memberof Member\n */\n constructor(\n participant: object,\n options:\n | {\n selfId: string;\n hostId: string;\n contentSharingId: string;\n type: string;\n }\n | any = {}\n ) {\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.canReclaimHost = false;\n /**\n * The server participant object\n * @instance\n * @type {Object}\n * @private\n * @memberof Member\n */\n this.participant = null;\n /**\n * The member id\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.id = null;\n /**\n * The member name\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.name = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isAudioMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isVideoMuted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHandRaised = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportsBreakouts = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.supportLiveAnnotation = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isSelf = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isHost = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isGuest = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInLobby = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isInMeeting = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isNotAdmitted = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isContentSharing = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.status = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isDevice = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isUser = null;\n /**\n * Is this member associated to another user by way of pairing (typical of devices)\n * @instance\n * @type {String}\n * @public\n * @memberof Member\n */\n this.associatedUser = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRecording = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isMutable = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isRemovable = null;\n /**\n * @instance\n * @type {String}\n * @private\n * @memberof Member\n */\n this.type = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModerator = null;\n /**\n * @instance\n * @type {Boolean}\n * @public\n * @memberof Member\n */\n this.isModeratorAssignmentProhibited = null;\n\n /**\n * @instance\n * @type {IExternalRoles}\n * @public\n * @memberof Member\n */\n this.roles = null;\n\n /**\n * @instance\n * @type {IMediaStatus}\n * @public\n * @memberof Member\n * @example {audio: MediaStatus.RECVONLY, video: MediaStatus.SENDRECV}\n */\n this.mediaStatus = {\n audio: null,\n video: null,\n };\n\n // TODO: more participant types\n // such as native client, web client, is a device, what type of phone, etc\n this.processParticipant(participant);\n this.processParticipantOptions(participant, options);\n this.processMember();\n }\n\n /**\n * set all the participant values extracted directly from locus participant\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipant(participant: object) {\n this.participant = participant;\n if (participant) {\n this.canReclaimHost = MemberUtil.canReclaimHost(participant);\n this.id = MemberUtil.extractId(participant);\n this.name = MemberUtil.extractName(participant);\n this.isAudioMuted = MemberUtil.isAudioMuted(participant);\n this.isVideoMuted = MemberUtil.isVideoMuted(participant);\n this.isHandRaised = MemberUtil.isHandRaised(participant);\n this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);\n this.supportsInterpretation = MemberUtil.isInterpretationSupported(participant);\n this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);\n this.isGuest = MemberUtil.isGuest(participant);\n this.isUser = MemberUtil.isUser(participant);\n this.isDevice = MemberUtil.isDevice(participant);\n this.isModerator = MemberUtil.isModerator(participant);\n this.isModeratorAssignmentProhibited =\n MemberUtil.isModeratorAssignmentProhibited(participant);\n this.processStatus(participant);\n this.processRoles(participant as ParticipantWithRoles);\n // must be done last\n this.isNotAdmitted = MemberUtil.isNotAdmitted(participant, this.isGuest, this.status);\n }\n }\n\n /**\n * Use the members options and participant values to set on the member\n * @param {Object} participant the locus participant object\n * @param {Object} options the passed in options, what was set on members\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processParticipantOptions(participant: object, options: any) {\n if (participant && options) {\n this.processIsSelf(participant, options.selfId);\n this.processIsHost(participant, options.hostId);\n this.processIsContentSharing(participant, options.contentSharingId);\n this.processType(options.type);\n this.processIsRecording(participant, options.recordingId);\n }\n }\n\n /**\n * processes what already exists on the member to determine other info about the member\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processMember() {\n // must occur after self, guest, meeting, and type properties are calculated\n this.isRemovable = MemberUtil.isRemovable(\n this.isSelf,\n this.isGuest,\n this.isInMeeting,\n this.type\n );\n // must occur after self, device, meeting, mute status, and type properties are calculated\n this.isMutable = MemberUtil.isMutable(\n this.isSelf,\n this.isDevice,\n this.isInMeeting,\n this.isAudioMuted,\n this.type\n );\n\n this.mediaStatus = MemberUtil.extractMediaStatus(this.participant);\n }\n\n /**\n * set the status on member object\n * @param {Object} participant the locus participant object\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processStatus(participant: object) {\n this.status = MemberUtil.extractStatus(participant);\n switch (this.status) {\n case _IN_LOBBY_:\n this.isInLobby = true;\n this.isInMeeting = false;\n break;\n case _IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = true;\n break;\n case _NOT_IN_MEETING_:\n this.isInLobby = false;\n this.isInMeeting = false;\n break;\n default:\n this.isInLobby = false;\n this.isInMeeting = false;\n }\n }\n\n /**\n * set the isContentSharing on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsContentSharing(flag: boolean) {\n this.isContentSharing = flag;\n }\n\n /**\n * set the isHost on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsHost(flag: boolean) {\n this.isHost = flag;\n }\n\n /**\n * set the isSelf on member\n * @param {Boolean} flag\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public setIsSelf(flag: boolean) {\n this.isSelf = flag;\n }\n\n /**\n * determine if this member is content sharing\n * @param {Object} participant\n * @param {String} sharingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsContentSharing(participant: object, sharingId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isContentSharing = MemberUtil.isSame(participant, sharingId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isContentSharing = MemberUtil.isAssociatedSame(participant, sharingId);\n }\n }\n\n /**\n * Determine if this member is recording\n * @param {Object} participant\n * @param {String} recordingId\n * @returns {undefined}\n * @public\n * @memberof Member\n */\n public processIsRecording(participant: object, recordingId: string) {\n this.isRecording = MemberUtil.isSame(participant, recordingId);\n }\n\n /**\n * determine if this member is the self\n * @param {Object} participant\n * @param {String} selfId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsSelf(participant: object, selfId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isSelf = MemberUtil.isSame(participant, selfId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isSelf = MemberUtil.isAssociatedSame(participant, selfId);\n this.associatedUser = selfId;\n }\n }\n\n /**\n * determine if this member is the host\n * @param {Object} participant\n * @param {String} hostId\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processIsHost(participant: object, hostId: string) {\n if (MemberUtil.isUser(participant)) {\n this.isHost = MemberUtil.isSame(participant, hostId);\n } else if (MemberUtil.isDevice(participant)) {\n this.isHost = MemberUtil.isAssociatedSame(participant, hostId);\n }\n }\n\n /**\n * process the roles that have been applied to this member\n * @param {Object} participant\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processRoles(participant: ParticipantWithRoles) {\n this.roles = MemberUtil.extractControlRoles(participant);\n }\n\n /**\n * set the type for the member, could be MEETING or CALL\n * @param {String} type\n * @returns {undefined}\n * @private\n * @memberof Member\n */\n private processType(type: string) {\n this.type = type;\n }\n}\n"],"mappings":";;;;;;;;;;;AAGA;AAGA;AANA;AACA;AACA;AAMA;AACA;AACA;AAFA,IAGqBA,MAAM;EAgCzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,gBACEC,WAAmB,EASnB;IAAA,IARAC,OAOO,uEAAG,CAAC,CAAC;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA,iDArBFC,mBAAQ;IAuBlB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,cAAc,GAAG,KAAK;IAC3B;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACH,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACI,EAAE,GAAG,IAAI;IACd;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAC7B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,+BAA+B,GAAG,IAAI;;IAE3C;AACJ;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,KAAK,GAAG,IAAI;;IAEjB;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAI,CAACC,WAAW,GAAG;MACjBC,KAAK,EAAE,IAAI;MACXC,KAAK,EAAE;IACT,CAAC;;IAED;IACA;IACA,IAAI,CAACC,kBAAkB,CAAChC,WAAW,CAAC;IACpC,IAAI,CAACiC,yBAAyB,CAACjC,WAAW,EAAEC,OAAO,CAAC;IACpD,IAAI,CAACiC,aAAa,EAAE;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,4BAA2BlC,WAAmB,EAAE;MAC9C,IAAI,CAACA,WAAW,GAAGA,WAAW;MAC9B,IAAIA,WAAW,EAAE;QACf,IAAI,CAACG,cAAc,GAAGgC,aAAU,CAAChC,cAAc,CAACH,WAAW,CAAC;QAC5D,IAAI,CAACI,EAAE,GAAG+B,aAAU,CAACC,SAAS,CAACpC,WAAW,CAAC;QAC3C,IAAI,CAACK,IAAI,GAAG8B,aAAU,CAACE,WAAW,CAACrC,WAAW,CAAC;QAC/C,IAAI,CAACM,YAAY,GAAG6B,aAAU,CAAC7B,YAAY,CAACN,WAAW,CAAC;QACxD,IAAI,CAACO,YAAY,GAAG4B,aAAU,CAAC5B,YAAY,CAACP,WAAW,CAAC;QACxD,IAAI,CAACQ,YAAY,GAAG2B,aAAU,CAAC3B,YAAY,CAACR,WAAW,CAAC;QACxD,IAAI,CAACS,iBAAiB,GAAG0B,aAAU,CAACG,oBAAoB,CAACtC,WAAW,CAAC;QACrE,IAAI,CAACuC,sBAAsB,GAAGJ,aAAU,CAACK,yBAAyB,CAACxC,WAAW,CAAC;QAC/E,IAAI,CAACU,qBAAqB,GAAGyB,aAAU,CAACM,yBAAyB,CAACzC,WAAW,CAAC;QAC9E,IAAI,CAACa,OAAO,GAAGsB,aAAU,CAACtB,OAAO,CAACb,WAAW,CAAC;QAC9C,IAAI,CAACoB,MAAM,GAAGe,aAAU,CAACf,MAAM,CAACpB,WAAW,CAAC;QAC5C,IAAI,CAACmB,QAAQ,GAAGgB,aAAU,CAAChB,QAAQ,CAACnB,WAAW,CAAC;QAChD,IAAI,CAAC0B,WAAW,GAAGS,aAAU,CAACT,WAAW,CAAC1B,WAAW,CAAC;QACtD,IAAI,CAAC2B,+BAA+B,GAClCQ,aAAU,CAACR,+BAA+B,CAAC3B,WAAW,CAAC;QACzD,IAAI,CAAC0C,aAAa,CAAC1C,WAAW,CAAC;QAC/B,IAAI,CAAC2C,YAAY,CAAC3C,WAAW,CAAyB;QACtD;QACA,IAAI,CAACgB,aAAa,GAAGmB,aAAU,CAACnB,aAAa,CAAChB,WAAW,EAAE,IAAI,CAACa,OAAO,EAAE,IAAI,CAACK,MAAM,CAAC;MACvF;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,mCAAkClB,WAAmB,EAAEC,OAAY,EAAE;MACnE,IAAID,WAAW,IAAIC,OAAO,EAAE;QAC1B,IAAI,CAAC2C,aAAa,CAAC5C,WAAW,EAAEC,OAAO,CAAC4C,MAAM,CAAC;QAC/C,IAAI,CAACC,aAAa,CAAC9C,WAAW,EAAEC,OAAO,CAAC8C,MAAM,CAAC;QAC/C,IAAI,CAACC,uBAAuB,CAAChD,WAAW,EAAEC,OAAO,CAACgD,gBAAgB,CAAC;QACnE,IAAI,CAACC,WAAW,CAACjD,OAAO,CAACwB,IAAI,CAAC;QAC9B,IAAI,CAAC0B,kBAAkB,CAACnD,WAAW,EAAEC,OAAO,CAACmD,WAAW,CAAC;MAC3D;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,yBAAwB;MACtB;MACA,IAAI,CAAC5B,WAAW,GAAGW,aAAU,CAACX,WAAW,CACvC,IAAI,CAACb,MAAM,EACX,IAAI,CAACE,OAAO,EACZ,IAAI,CAACE,WAAW,EAChB,IAAI,CAACU,IAAI,CACV;MACD;MACA,IAAI,CAACF,SAAS,GAAGY,aAAU,CAACZ,SAAS,CACnC,IAAI,CAACZ,MAAM,EACX,IAAI,CAACQ,QAAQ,EACb,IAAI,CAACJ,WAAW,EAChB,IAAI,CAACT,YAAY,EACjB,IAAI,CAACmB,IAAI,CACV;MAED,IAAI,CAACI,WAAW,GAAGM,aAAU,CAACkB,kBAAkB,CAAC,IAAI,CAACrD,WAAW,CAAC;IACpE;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,uBAAsBA,WAAmB,EAAE;MACzC,IAAI,CAACkB,MAAM,GAAGiB,aAAU,CAACmB,aAAa,CAACtD,WAAW,CAAC;MACnD,QAAQ,IAAI,CAACkB,MAAM;QACjB,KAAKqC,qBAAU;UACb,IAAI,CAACzC,SAAS,GAAG,IAAI;UACrB,IAAI,CAACC,WAAW,GAAG,KAAK;UACxB;QACF,KAAKyC,uBAAY;UACf,IAAI,CAAC1C,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,IAAI;UACvB;QACF,KAAK0C,2BAAgB;UACnB,IAAI,CAAC3C,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,KAAK;UACxB;QACF;UACE,IAAI,CAACD,SAAS,GAAG,KAAK;UACtB,IAAI,CAACC,WAAW,GAAG,KAAK;MAAC;IAE/B;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,6BAA2B2C,IAAa,EAAE;MACxC,IAAI,CAACzC,gBAAgB,GAAGyC,IAAI;IAC9B;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,mBAAiBA,IAAa,EAAE;MAC9B,IAAI,CAAC9C,MAAM,GAAG8C,IAAI;IACpB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,mBAAiBA,IAAa,EAAE;MAC9B,IAAI,CAAC/C,MAAM,GAAG+C,IAAI;IACpB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,iCAA+B1D,WAAmB,EAAE2D,SAAiB,EAAE;MACrE,IAAIxB,aAAU,CAACf,MAAM,CAACpB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACiB,gBAAgB,GAAGkB,aAAU,CAACyB,MAAM,CAAC5D,WAAW,EAAE2D,SAAS,CAAC;MACnE,CAAC,MAAM,IAAIxB,aAAU,CAAChB,QAAQ,CAACnB,WAAW,CAAC,EAAE;QAC3C,IAAI,CAACiB,gBAAgB,GAAGkB,aAAU,CAAC0B,gBAAgB,CAAC7D,WAAW,EAAE2D,SAAS,CAAC;MAC7E;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,4BAA0B3D,WAAmB,EAAEoD,WAAmB,EAAE;MAClE,IAAI,CAAC9B,WAAW,GAAGa,aAAU,CAACyB,MAAM,CAAC5D,WAAW,EAAEoD,WAAW,CAAC;IAChE;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,uBAAsBpD,WAAmB,EAAE6C,MAAc,EAAE;MACzD,IAAIV,aAAU,CAACf,MAAM,CAACpB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACW,MAAM,GAAGwB,aAAU,CAACyB,MAAM,CAAC5D,WAAW,EAAE6C,MAAM,CAAC;MACtD,CAAC,MAAM,IAAIV,aAAU,CAAChB,QAAQ,CAACnB,WAAW,CAAC,EAAE;QAC3C,IAAI,CAACW,MAAM,GAAGwB,aAAU,CAAC0B,gBAAgB,CAAC7D,WAAW,EAAE6C,MAAM,CAAC;QAC9D,IAAI,CAACxB,cAAc,GAAGwB,MAAM;MAC9B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA;IAAA,OAQA,uBAAsB7C,WAAmB,EAAE+C,MAAc,EAAE;MACzD,IAAIZ,aAAU,CAACf,MAAM,CAACpB,WAAW,CAAC,EAAE;QAClC,IAAI,CAACY,MAAM,GAAGuB,aAAU,CAACyB,MAAM,CAAC5D,WAAW,EAAE+C,MAAM,CAAC;MACtD,CAAC,MAAM,IAAIZ,aAAU,CAAChB,QAAQ,CAACnB,WAAW,CAAC,EAAE;QAC3C,IAAI,CAACY,MAAM,GAAGuB,aAAU,CAAC0B,gBAAgB,CAAC7D,WAAW,EAAE+C,MAAM,CAAC;MAChE;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,sBAAqB/C,WAAiC,EAAE;MACtD,IAAI,CAAC4B,KAAK,GAAGO,aAAU,CAAC2B,mBAAmB,CAAC9D,WAAW,CAAC;IAC1D;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,qBAAoByB,IAAY,EAAE;MAChC,IAAI,CAACA,IAAI,GAAGA,IAAI;IAClB;EAAC;EAAA;AAAA;AAAA"}
|
package/dist/member/util.js
CHANGED
|
@@ -11,6 +11,17 @@ var _constants = require("../constants");
|
|
|
11
11
|
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
|
12
12
|
var MemberUtil = {};
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* @param {Object} participant the locus participant
|
|
16
|
+
* @returns {Boolean}
|
|
17
|
+
*/
|
|
18
|
+
MemberUtil.canReclaimHost = function (participant) {
|
|
19
|
+
if (!participant) {
|
|
20
|
+
throw new _parameter.default('canReclaimHostRole could not be processed, participant is undefined.');
|
|
21
|
+
}
|
|
22
|
+
return participant.canReclaimHostRole || false;
|
|
23
|
+
};
|
|
24
|
+
|
|
14
25
|
/**
|
|
15
26
|
* @param {Object} participant the locus participant
|
|
16
27
|
* @returns {[ServerRoleShape]}
|
package/dist/member/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MemberUtil","getControlsRoles","participant","controls","role","roles","hasRole","controlRole","some","type","hasCohost","ServerRoles","Cohost","hasModerator","Moderator","hasPresenter","Presenter","extractControlRoles","cohost","moderator","presenter","isUser","_USER_","isModerator","isGuest","guest","isDevice","_RESOURCE_ROOM_","isModeratorAssignmentProhibited","moderatorAssignmentNotAllowed","isSame","id","person","isAssociatedSame","associatedUsers","user","isNotAdmitted","status","devices","intent","_WAIT_","_IN_LOBBY_","_IN_MEETING_","isAudioMuted","ParameterError","isMuted","AUDIO_STATUS","AUDIO","isVideoMuted","VIDEO_STATUS","VIDEO","isHandRaised","hand","raised","isBreakoutsSupported","doesNotSupportBreakouts","isInterpretationSupported","doesNotSupportSiInterpreter","isLiveAnnotationSupported","annotatorAssignmentNotAllowed","statusAccessor","controlsAccessor","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","audio","audioStatus","video","videoStatus","extractName","name"],"sources":["util.ts"],"sourcesContent":["import {\n IExternalRoles,\n ParticipantWithRoles,\n ServerRoles,\n ServerRoleShape,\n IMediaStatus,\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: any = {};\n\n/**\n * @param {Object} participant the locus participant\n * @returns {[ServerRoleShape]}\n */\nMemberUtil.getControlsRoles = (participant: ParticipantWithRoles): Array<ServerRoleShape> =>\n participant?.controls?.role?.roles;\n\n/**\n * @param {Object} participant the locus participant\n * @param {ServerRoles} controlRole the search role\n * @returns {Boolean}\n */\nMemberUtil.hasRole = (participant: any, 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\n * @returns {Boolean}\n */\nMemberUtil.hasCohost = (participant: ParticipantWithRoles): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Cohost) || false;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.hasModerator = (participant: ParticipantWithRoles): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Moderator) || false;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.hasPresenter = (participant: ParticipantWithRoles): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Presenter) || false;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {IExternalRoles}\n */\nMemberUtil.extractControlRoles = (participant: ParticipantWithRoles): 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\n * @returns {Boolean}\n */\nMemberUtil.isUser = (participant: any) => participant && participant.type === _USER_;\n\nMemberUtil.isModerator = (participant) => participant && participant.moderator;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.isGuest = (participant: any) => participant && participant.guest;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.isDevice = (participant: any) => participant && participant.type === _RESOURCE_ROOM_;\n\nMemberUtil.isModeratorAssignmentProhibited = (participant) =>\n participant && participant.moderatorAssignmentNotAllowed;\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\n * @param {String} id\n * @returns {Boolean}\n */\nMemberUtil.isSame = (participant: any, id: string) =>\n participant && (participant.id === id || (participant.person && participant.person.id === id));\n\n/**\n * checks to see if the participant id is the same as the passed id for associated devices\n * there are multiple ids that can be used\n * @param {Object} participant the locus participant\n * @param {String} id\n * @returns {Boolean}\n */\nMemberUtil.isAssociatedSame = (participant: any, id: string) =>\n participant &&\n participant.associatedUsers &&\n participant.associatedUsers.some(\n (user) => user.id === id || (user.person && user.person.id === id)\n );\n\n/**\n * @param {Object} participant the locus participant\n * @param {Boolean} isGuest\n * @param {String} status\n * @returns {Boolean}\n */\nMemberUtil.isNotAdmitted = (participant: any, 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\n * @returns {Boolean}\n */\nMemberUtil.isAudioMuted = (participant: any) => {\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\n * @returns {Boolean}\n */\nMemberUtil.isVideoMuted = (participant: any): 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\n * @returns {Boolean}\n */\nMemberUtil.isHandRaised = (participant: any) => {\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\n * @returns {Boolean}\n */\nMemberUtil.isBreakoutsSupported = (participant) => {\n if (!participant) {\n throw new ParameterError('Breakout support could not be processed, participant is undefined.');\n }\n\n return !participant.doesNotSupportBreakouts;\n};\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.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\n * @returns {Boolean}\n */\nMemberUtil.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 */\nMemberUtil.isMuted = (participant: any, 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 */\nMemberUtil.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\n * @returns {Boolean}\n */\nMemberUtil.isRecording = (participant: any) => {\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\nMemberUtil.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\nMemberUtil.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\n * @returns {String}\n */\nMemberUtil.extractStatus = (participant: any) => {\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\n * @returns {String}\n */\nMemberUtil.extractId = (participant: any) => {\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\n * @returns {Object}\n */\nMemberUtil.extractMediaStatus = (participant: any): 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\n * @returns {String}\n */\nMemberUtil.extractName = (participant: any) => {\n if (participant && participant.person) {\n return participant.person.name;\n }\n\n return null;\n};\n\nexport default MemberUtil;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MemberUtil","canReclaimHost","participant","ParameterError","canReclaimHostRole","getControlsRoles","controls","role","roles","hasRole","controlRole","some","type","hasCohost","ServerRoles","Cohost","hasModerator","Moderator","hasPresenter","Presenter","extractControlRoles","cohost","moderator","presenter","isUser","_USER_","isModerator","isGuest","guest","isDevice","_RESOURCE_ROOM_","isModeratorAssignmentProhibited","moderatorAssignmentNotAllowed","isSame","id","person","isAssociatedSame","associatedUsers","user","isNotAdmitted","status","devices","intent","_WAIT_","_IN_LOBBY_","_IN_MEETING_","isAudioMuted","isMuted","AUDIO_STATUS","AUDIO","isVideoMuted","VIDEO_STATUS","VIDEO","isHandRaised","hand","raised","isBreakoutsSupported","doesNotSupportBreakouts","isInterpretationSupported","doesNotSupportSiInterpreter","isLiveAnnotationSupported","annotatorAssignmentNotAllowed","statusAccessor","controlsAccessor","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","audio","audioStatus","video","videoStatus","extractName","name"],"sources":["util.ts"],"sourcesContent":["import {\n IExternalRoles,\n ParticipantWithRoles,\n ServerRoles,\n ServerRoleShape,\n IMediaStatus,\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: any = {};\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.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\n * @returns {[ServerRoleShape]}\n */\nMemberUtil.getControlsRoles = (participant: ParticipantWithRoles): Array<ServerRoleShape> =>\n participant?.controls?.role?.roles;\n\n/**\n * @param {Object} participant the locus participant\n * @param {ServerRoles} controlRole the search role\n * @returns {Boolean}\n */\nMemberUtil.hasRole = (participant: any, 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\n * @returns {Boolean}\n */\nMemberUtil.hasCohost = (participant: ParticipantWithRoles): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Cohost) || false;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.hasModerator = (participant: ParticipantWithRoles): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Moderator) || false;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.hasPresenter = (participant: ParticipantWithRoles): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Presenter) || false;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {IExternalRoles}\n */\nMemberUtil.extractControlRoles = (participant: ParticipantWithRoles): 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\n * @returns {Boolean}\n */\nMemberUtil.isUser = (participant: any) => participant && participant.type === _USER_;\n\nMemberUtil.isModerator = (participant) => participant && participant.moderator;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.isGuest = (participant: any) => participant && participant.guest;\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.isDevice = (participant: any) => participant && participant.type === _RESOURCE_ROOM_;\n\nMemberUtil.isModeratorAssignmentProhibited = (participant) =>\n participant && participant.moderatorAssignmentNotAllowed;\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\n * @param {String} id\n * @returns {Boolean}\n */\nMemberUtil.isSame = (participant: any, id: string) =>\n participant && (participant.id === id || (participant.person && participant.person.id === id));\n\n/**\n * checks to see if the participant id is the same as the passed id for associated devices\n * there are multiple ids that can be used\n * @param {Object} participant the locus participant\n * @param {String} id\n * @returns {Boolean}\n */\nMemberUtil.isAssociatedSame = (participant: any, id: string) =>\n participant &&\n participant.associatedUsers &&\n participant.associatedUsers.some(\n (user) => user.id === id || (user.person && user.person.id === id)\n );\n\n/**\n * @param {Object} participant the locus participant\n * @param {Boolean} isGuest\n * @param {String} status\n * @returns {Boolean}\n */\nMemberUtil.isNotAdmitted = (participant: any, 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\n * @returns {Boolean}\n */\nMemberUtil.isAudioMuted = (participant: any) => {\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\n * @returns {Boolean}\n */\nMemberUtil.isVideoMuted = (participant: any): 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\n * @returns {Boolean}\n */\nMemberUtil.isHandRaised = (participant: any) => {\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\n * @returns {Boolean}\n */\nMemberUtil.isBreakoutsSupported = (participant) => {\n if (!participant) {\n throw new ParameterError('Breakout support could not be processed, participant is undefined.');\n }\n\n return !participant.doesNotSupportBreakouts;\n};\n\n/**\n * @param {Object} participant the locus participant\n * @returns {Boolean}\n */\nMemberUtil.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\n * @returns {Boolean}\n */\nMemberUtil.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 */\nMemberUtil.isMuted = (participant: any, 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 */\nMemberUtil.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\n * @returns {Boolean}\n */\nMemberUtil.isRecording = (participant: any) => {\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\nMemberUtil.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\nMemberUtil.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\n * @returns {String}\n */\nMemberUtil.extractStatus = (participant: any) => {\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\n * @returns {String}\n */\nMemberUtil.extractId = (participant: any) => {\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\n * @returns {Object}\n */\nMemberUtil.extractMediaStatus = (participant: any): 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\n * @returns {String}\n */\nMemberUtil.extractName = (participant: any) => {\n if (participant && participant.person) {\n return participant.person.name;\n }\n\n return null;\n};\n\nexport default MemberUtil;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ServerRoles"],"sources":["types.ts"],"sourcesContent":["export enum ServerRoles {\n Cohost = 'COHOST',\n Moderator = 'MODERATOR',\n Presenter = 'PRESENTER',\n}\n\nexport type ServerRoleShape = {\n type: ServerRoles;\n hasRole: boolean;\n};\n\nexport type RoleAssignmentOptions = {\n roles: Array<ServerRoleShape>;\n locusUrl: string;\n memberId: string;\n};\n\nexport type RoleAssignmentBody = {\n role: {\n roles: Array<ServerRoleShape>;\n };\n};\n\nexport type RoleAssignmentRequest = {\n method: string;\n uri: string;\n body: RoleAssignmentBody;\n};\n"],"mappings":";;;;;;;IAAYA,WAAW;AAAA;AAAA,WAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;AAAA,GAAXA,WAAW,2BAAXA,WAAW"}
|
|
1
|
+
{"version":3,"names":["ServerRoles"],"sources":["types.ts"],"sourcesContent":["export enum ServerRoles {\n Cohost = 'COHOST',\n Moderator = 'MODERATOR',\n Presenter = 'PRESENTER',\n}\n\nexport type ServerRoleShape = {\n type: ServerRoles;\n hasRole: boolean;\n hostKey?: string;\n};\n\nexport type RoleAssignmentOptions = {\n roles: Array<ServerRoleShape>;\n locusUrl: string;\n memberId: string;\n};\n\nexport type RoleAssignmentBody = {\n role: {\n roles: Array<ServerRoleShape>;\n };\n};\n\nexport type RoleAssignmentRequest = {\n method: string;\n uri: string;\n body: RoleAssignmentBody;\n};\n"],"mappings":";;;;;;;IAAYA,WAAW;AAAA;AAAA,WAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;AAAA,GAAXA,WAAW,2BAAXA,WAAW"}
|
package/dist/members/util.js
CHANGED
|
@@ -198,6 +198,20 @@ var MembersUtil = {
|
|
|
198
198
|
body: body
|
|
199
199
|
};
|
|
200
200
|
},
|
|
201
|
+
/**
|
|
202
|
+
* @param {ServerRoleShape} role
|
|
203
|
+
* @returns {ServerRoleShape} the role shape to be added to the body
|
|
204
|
+
*/
|
|
205
|
+
getAddedRoleShape: function getAddedRoleShape(role) {
|
|
206
|
+
var roleShape = {
|
|
207
|
+
type: role.type,
|
|
208
|
+
hasRole: role.hasRole
|
|
209
|
+
};
|
|
210
|
+
if (role.hostKey) {
|
|
211
|
+
roleShape.hostKey = role.hostKey;
|
|
212
|
+
}
|
|
213
|
+
return roleShape;
|
|
214
|
+
},
|
|
201
215
|
/**
|
|
202
216
|
* @param {RoleAssignmentOptions} options
|
|
203
217
|
* @returns {RoleAssignmentRequest} the request parameters (method, uri, body) needed to make a addMember request
|
|
@@ -209,10 +223,7 @@ var MembersUtil = {
|
|
|
209
223
|
}
|
|
210
224
|
};
|
|
211
225
|
options.roles.forEach(function (role) {
|
|
212
|
-
body.role.roles.push(
|
|
213
|
-
type: role.type,
|
|
214
|
-
hasRole: role.hasRole
|
|
215
|
-
});
|
|
226
|
+
body.role.roles.push(MembersUtil.getAddedRoleShape(role));
|
|
216
227
|
});
|
|
217
228
|
var uri = "".concat(options.locusUrl, "/").concat(_constants.PARTICIPANT, "/").concat(options.memberId, "/").concat(_constants.CONTROLS);
|
|
218
229
|
return {
|
package/dist/members/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MembersUtil","generateAddMemberOptions","invitee","locusUrl","alertIfActive","generateAdmitMemberOptions","memberIds","getAddMemberBody","options","invitees","address","emailAddress","email","phoneNumber","getAdmitMemberRequestBody","sessionLocusUrls","body","admit","participantIds","authorizingLocusUrl","getAdmitMemberRequestParams","format","baseUrl","mainLocusUrl","uri","CONTROLS","method","HTTP_VERBS","PUT","getAddMemberRequestParams","requestParams","isInvalidInvitee","DIALER_REGEX","E164_FORMAT","test","VALID_EMAIL_ADDRESS","getRemoveMemberRequestParams","reason","PARTICIPANT","memberId","LEAVE","generateTransferHostMemberOptions","transfer","moderator","generateRemoveMemberOptions","removal","_FORCED_","generateMuteMemberOptions","status","isAudio","muted","generateRaiseHandMemberOptions","raised","generateRoleAssignmentMemberOptions","roles","generateLowerAllHandsMemberOptions","requestingParticipantId","generateEditDisplayNameMemberOptions","alias","getMuteMemberRequestParams","property","PATCH","getRoleAssignmentMemberRequestParams","role","forEach","push","type","hasRole","getRaiseHandMemberRequestParams","hand","getLowerAllHandsMemberRequestParams","editDisplayNameMemberRequestParams","aliasValue","ALIAS","POST","getTransferHostToMemberRequestParams","genderateSendDTMFOptions","url","tones","generateSendDTMFRequestParams","device","dtmf","correlationId","uuid","v4","direction","SEND_DTMF_ENDPOINT","cancelPhoneInviteOptions","generateCancelInviteRequestParams","actionType","_REMOVE_"],"sources":["util.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {\n HTTP_VERBS,\n CONTROLS,\n _FORCED_,\n LEAVE,\n PARTICIPANT,\n VALID_EMAIL_ADDRESS,\n DIALER_REGEX,\n SEND_DTMF_ENDPOINT,\n _REMOVE_,\n ALIAS,\n} from '../constants';\n\nimport {RoleAssignmentOptions, RoleAssignmentRequest, ServerRoleShape} from './types';\n\nconst MembersUtil = {\n /**\n * @param {Object} invitee with emailAddress, email or phoneNumber\n * @param {String} locusUrl\n * @param {Boolean} alertIfActive\n * @returns {Object} the format object\n */\n generateAddMemberOptions: (invitee: object, locusUrl: string, alertIfActive: boolean) => ({\n invitee,\n locusUrl,\n alertIfActive,\n }),\n\n /**\n * @param {Array} memberIds\n * @param {String} locusUrl\n * @returns {Object} the format object\n */\n generateAdmitMemberOptions: (memberIds: Array<any>, locusUrl: string) => ({\n locusUrl,\n memberIds,\n }),\n\n /**\n * @param {Object} options with {invitee: {emailAddress, email, phoneNumber}, alertIfActive}\n * @returns {Object} with {invitees: [{address}], alertIfActive}\n */\n getAddMemberBody: (options: any) => ({\n invitees: [\n {\n address:\n options.invitee.emailAddress || options.invitee.email || options.invitee.phoneNumber,\n },\n ],\n alertIfActive: options.alertIfActive,\n }),\n\n /**\n * @param {Object} options with {memberIds, authorizingLocusUrl}\n * @returns {Object} admit with {memberIds}\n */\n getAdmitMemberRequestBody: (options: any) => {\n const {memberIds, sessionLocusUrls} = options;\n const body: any = {admit: {participantIds: memberIds}};\n if (sessionLocusUrls) {\n const {authorizingLocusUrl} = sessionLocusUrls;\n\n return {authorizingLocusUrl, ...body};\n }\n\n return body;\n },\n\n /**\n * @param {Object} format with {memberIds, locusUrl, sessionLocusUrls}\n * @returns {Object} the request parameters (method, uri, body) needed to make a admitMember request\n * if a host/cohost is in a breakout session, the locus url should be the main session locus url\n */\n getAdmitMemberRequestParams: (format: any) => {\n const body = MembersUtil.getAdmitMemberRequestBody(format);\n const {locusUrl, sessionLocusUrls} = format;\n const baseUrl = sessionLocusUrls?.mainLocusUrl || locusUrl;\n const uri = `${baseUrl}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n },\n\n /**\n * @param {Object} format with {invitee {emailAddress, email, phoneNumber}, locusUrl, alertIfActive}\n * @returns {Object} the request parameters (method, uri, body) needed to make a addMember request\n */\n getAddMemberRequestParams: (format: any) => {\n const body = MembersUtil.getAddMemberBody(format);\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: format.locusUrl,\n body,\n };\n\n return requestParams;\n },\n\n isInvalidInvitee: (invitee) => {\n if (!(invitee && (invitee.email || invitee.emailAddress || invitee.phoneNumber))) {\n return true;\n }\n\n if (invitee.phoneNumber) {\n return !DIALER_REGEX.E164_FORMAT.test(invitee.phoneNumber);\n }\n\n return !VALID_EMAIL_ADDRESS.test(invitee.email || invitee.emailAddress);\n },\n\n getRemoveMemberRequestParams: (options) => {\n const body = {\n reason: options.reason,\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${LEAVE}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n },\n\n generateTransferHostMemberOptions: (transfer, moderator, locusUrl) => ({\n moderator,\n locusUrl,\n memberId: transfer,\n }),\n\n generateRemoveMemberOptions: (removal, locusUrl) => ({\n reason: _FORCED_,\n memberId: removal,\n locusUrl,\n }),\n\n generateMuteMemberOptions: (memberId, status, locusUrl, isAudio) => ({\n memberId,\n muted: status,\n locusUrl,\n isAudio,\n }),\n\n generateRaiseHandMemberOptions: (memberId, status, locusUrl) => ({\n memberId,\n raised: status,\n locusUrl,\n }),\n\n /**\n * @param {String} memberId\n * @param {[ServerRoleShape]} roles\n * @param {String} locusUrl\n * @returns {RoleAssignmentOptions}\n */\n generateRoleAssignmentMemberOptions: (\n memberId: string,\n roles: Array<ServerRoleShape>,\n locusUrl: string\n ): RoleAssignmentOptions => ({\n memberId,\n roles,\n locusUrl,\n }),\n\n generateLowerAllHandsMemberOptions: (requestingParticipantId, locusUrl) => ({\n requestingParticipantId,\n locusUrl,\n }),\n\n /**\n * @param {String} memberId id of the participant who is receiving request\n * @param {String} requestingParticipantId id of the participant who is sending request (optional)\n * @param {String} alias alias name\n * @param {String} locusUrl url\n * @returns {Object} consists of {memberID: string, requestingParticipantId: string, alias: string, locusUrl: string}\n */\n generateEditDisplayNameMemberOptions: (memberId, requestingParticipantId, alias, locusUrl) => ({\n memberId,\n requestingParticipantId,\n alias,\n locusUrl,\n }),\n\n getMuteMemberRequestParams: (options) => {\n const property = options.isAudio === false ? 'video' : 'audio';\n const body = {\n [property]: {\n muted: options.muted,\n },\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n /**\n * @param {RoleAssignmentOptions} options\n * @returns {RoleAssignmentRequest} the request parameters (method, uri, body) needed to make a addMember request\n */\n getRoleAssignmentMemberRequestParams: (options: RoleAssignmentOptions): RoleAssignmentRequest => {\n const body = {role: {roles: []}};\n options.roles.forEach((role) => {\n body.role.roles.push({type: role.type, hasRole: role.hasRole});\n });\n\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n getRaiseHandMemberRequestParams: (options) => {\n const body = {\n hand: {\n raised: options.raised,\n },\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n getLowerAllHandsMemberRequestParams: (options) => {\n const body = {\n hand: {\n raised: false,\n },\n requestingParticipantId: options.requestingParticipantId,\n };\n const uri = `${options.locusUrl}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n /**\n * @param {Object} options with format of {locusUrl: string, requestingParticipantId: string}\n * @returns {Object} request parameters (method, uri, body) needed to make a editDisplayName request\n */\n editDisplayNameMemberRequestParams: (options) => {\n const body = {\n aliasValue: options.alias,\n requestingParticipantId: options.requestingParticipantId,\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${ALIAS}`;\n\n return {\n method: HTTP_VERBS.POST,\n uri,\n body,\n };\n },\n\n getTransferHostToMemberRequestParams: (options) => {\n const body = {\n role: {\n moderator: options.moderator,\n },\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n genderateSendDTMFOptions: (url, tones, memberId, locusUrl) => ({\n url,\n tones,\n memberId,\n locusUrl,\n }),\n\n generateSendDTMFRequestParams: ({url, tones, memberId, locusUrl}) => {\n const body = {\n device: {\n url,\n },\n memberId,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n direction: 'transmit',\n },\n };\n const uri = `${locusUrl}/${PARTICIPANT}/${memberId}/${SEND_DTMF_ENDPOINT}`;\n\n return {\n method: HTTP_VERBS.POST,\n uri,\n body,\n };\n },\n\n cancelPhoneInviteOptions: (invitee, locusUrl) => ({\n invitee,\n locusUrl,\n }),\n\n generateCancelInviteRequestParams: (options) => {\n const body = {\n actionType: _REMOVE_,\n invitees: [\n {\n address: options.invitee.phoneNumber,\n },\n ],\n };\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: options.locusUrl,\n body,\n };\n\n return requestParams;\n },\n};\n\nexport default MembersUtil;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MembersUtil","generateAddMemberOptions","invitee","locusUrl","alertIfActive","generateAdmitMemberOptions","memberIds","getAddMemberBody","options","invitees","address","emailAddress","email","phoneNumber","getAdmitMemberRequestBody","sessionLocusUrls","body","admit","participantIds","authorizingLocusUrl","getAdmitMemberRequestParams","format","baseUrl","mainLocusUrl","uri","CONTROLS","method","HTTP_VERBS","PUT","getAddMemberRequestParams","requestParams","isInvalidInvitee","DIALER_REGEX","E164_FORMAT","test","VALID_EMAIL_ADDRESS","getRemoveMemberRequestParams","reason","PARTICIPANT","memberId","LEAVE","generateTransferHostMemberOptions","transfer","moderator","generateRemoveMemberOptions","removal","_FORCED_","generateMuteMemberOptions","status","isAudio","muted","generateRaiseHandMemberOptions","raised","generateRoleAssignmentMemberOptions","roles","generateLowerAllHandsMemberOptions","requestingParticipantId","generateEditDisplayNameMemberOptions","alias","getMuteMemberRequestParams","property","PATCH","getAddedRoleShape","role","roleShape","type","hasRole","hostKey","getRoleAssignmentMemberRequestParams","forEach","push","getRaiseHandMemberRequestParams","hand","getLowerAllHandsMemberRequestParams","editDisplayNameMemberRequestParams","aliasValue","ALIAS","POST","getTransferHostToMemberRequestParams","genderateSendDTMFOptions","url","tones","generateSendDTMFRequestParams","device","dtmf","correlationId","uuid","v4","direction","SEND_DTMF_ENDPOINT","cancelPhoneInviteOptions","generateCancelInviteRequestParams","actionType","_REMOVE_"],"sources":["util.ts"],"sourcesContent":["import uuid from 'uuid';\nimport {\n HTTP_VERBS,\n CONTROLS,\n _FORCED_,\n LEAVE,\n PARTICIPANT,\n VALID_EMAIL_ADDRESS,\n DIALER_REGEX,\n SEND_DTMF_ENDPOINT,\n _REMOVE_,\n ALIAS,\n} from '../constants';\n\nimport {RoleAssignmentOptions, RoleAssignmentRequest, ServerRoleShape} from './types';\n\nconst MembersUtil = {\n /**\n * @param {Object} invitee with emailAddress, email or phoneNumber\n * @param {String} locusUrl\n * @param {Boolean} alertIfActive\n * @returns {Object} the format object\n */\n generateAddMemberOptions: (invitee: object, locusUrl: string, alertIfActive: boolean) => ({\n invitee,\n locusUrl,\n alertIfActive,\n }),\n\n /**\n * @param {Array} memberIds\n * @param {String} locusUrl\n * @returns {Object} the format object\n */\n generateAdmitMemberOptions: (memberIds: Array<any>, locusUrl: string) => ({\n locusUrl,\n memberIds,\n }),\n\n /**\n * @param {Object} options with {invitee: {emailAddress, email, phoneNumber}, alertIfActive}\n * @returns {Object} with {invitees: [{address}], alertIfActive}\n */\n getAddMemberBody: (options: any) => ({\n invitees: [\n {\n address:\n options.invitee.emailAddress || options.invitee.email || options.invitee.phoneNumber,\n },\n ],\n alertIfActive: options.alertIfActive,\n }),\n\n /**\n * @param {Object} options with {memberIds, authorizingLocusUrl}\n * @returns {Object} admit with {memberIds}\n */\n getAdmitMemberRequestBody: (options: any) => {\n const {memberIds, sessionLocusUrls} = options;\n const body: any = {admit: {participantIds: memberIds}};\n if (sessionLocusUrls) {\n const {authorizingLocusUrl} = sessionLocusUrls;\n\n return {authorizingLocusUrl, ...body};\n }\n\n return body;\n },\n\n /**\n * @param {Object} format with {memberIds, locusUrl, sessionLocusUrls}\n * @returns {Object} the request parameters (method, uri, body) needed to make a admitMember request\n * if a host/cohost is in a breakout session, the locus url should be the main session locus url\n */\n getAdmitMemberRequestParams: (format: any) => {\n const body = MembersUtil.getAdmitMemberRequestBody(format);\n const {locusUrl, sessionLocusUrls} = format;\n const baseUrl = sessionLocusUrls?.mainLocusUrl || locusUrl;\n const uri = `${baseUrl}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n },\n\n /**\n * @param {Object} format with {invitee {emailAddress, email, phoneNumber}, locusUrl, alertIfActive}\n * @returns {Object} the request parameters (method, uri, body) needed to make a addMember request\n */\n getAddMemberRequestParams: (format: any) => {\n const body = MembersUtil.getAddMemberBody(format);\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: format.locusUrl,\n body,\n };\n\n return requestParams;\n },\n\n isInvalidInvitee: (invitee) => {\n if (!(invitee && (invitee.email || invitee.emailAddress || invitee.phoneNumber))) {\n return true;\n }\n\n if (invitee.phoneNumber) {\n return !DIALER_REGEX.E164_FORMAT.test(invitee.phoneNumber);\n }\n\n return !VALID_EMAIL_ADDRESS.test(invitee.email || invitee.emailAddress);\n },\n\n getRemoveMemberRequestParams: (options) => {\n const body = {\n reason: options.reason,\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${LEAVE}`;\n\n return {\n method: HTTP_VERBS.PUT,\n uri,\n body,\n };\n },\n\n generateTransferHostMemberOptions: (transfer, moderator, locusUrl) => ({\n moderator,\n locusUrl,\n memberId: transfer,\n }),\n\n generateRemoveMemberOptions: (removal, locusUrl) => ({\n reason: _FORCED_,\n memberId: removal,\n locusUrl,\n }),\n\n generateMuteMemberOptions: (memberId, status, locusUrl, isAudio) => ({\n memberId,\n muted: status,\n locusUrl,\n isAudio,\n }),\n\n generateRaiseHandMemberOptions: (memberId, status, locusUrl) => ({\n memberId,\n raised: status,\n locusUrl,\n }),\n\n /**\n * @param {String} memberId\n * @param {[ServerRoleShape]} roles\n * @param {String} locusUrl\n * @returns {RoleAssignmentOptions}\n */\n generateRoleAssignmentMemberOptions: (\n memberId: string,\n roles: Array<ServerRoleShape>,\n locusUrl: string\n ): RoleAssignmentOptions => ({\n memberId,\n roles,\n locusUrl,\n }),\n\n generateLowerAllHandsMemberOptions: (requestingParticipantId, locusUrl) => ({\n requestingParticipantId,\n locusUrl,\n }),\n\n /**\n * @param {String} memberId id of the participant who is receiving request\n * @param {String} requestingParticipantId id of the participant who is sending request (optional)\n * @param {String} alias alias name\n * @param {String} locusUrl url\n * @returns {Object} consists of {memberID: string, requestingParticipantId: string, alias: string, locusUrl: string}\n */\n generateEditDisplayNameMemberOptions: (memberId, requestingParticipantId, alias, locusUrl) => ({\n memberId,\n requestingParticipantId,\n alias,\n locusUrl,\n }),\n\n getMuteMemberRequestParams: (options) => {\n const property = options.isAudio === false ? 'video' : 'audio';\n const body = {\n [property]: {\n muted: options.muted,\n },\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n /**\n * @param {ServerRoleShape} role\n * @returns {ServerRoleShape} the role shape to be added to the body\n */\n getAddedRoleShape: (role: ServerRoleShape): ServerRoleShape => {\n const roleShape: ServerRoleShape = {type: role.type, hasRole: role.hasRole};\n\n if (role.hostKey) {\n roleShape.hostKey = role.hostKey;\n }\n\n return roleShape;\n },\n\n /**\n * @param {RoleAssignmentOptions} options\n * @returns {RoleAssignmentRequest} the request parameters (method, uri, body) needed to make a addMember request\n */\n getRoleAssignmentMemberRequestParams: (options: RoleAssignmentOptions): RoleAssignmentRequest => {\n const body = {role: {roles: []}};\n options.roles.forEach((role) => {\n body.role.roles.push(MembersUtil.getAddedRoleShape(role));\n });\n\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n getRaiseHandMemberRequestParams: (options) => {\n const body = {\n hand: {\n raised: options.raised,\n },\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n getLowerAllHandsMemberRequestParams: (options) => {\n const body = {\n hand: {\n raised: false,\n },\n requestingParticipantId: options.requestingParticipantId,\n };\n const uri = `${options.locusUrl}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n /**\n * @param {Object} options with format of {locusUrl: string, requestingParticipantId: string}\n * @returns {Object} request parameters (method, uri, body) needed to make a editDisplayName request\n */\n editDisplayNameMemberRequestParams: (options) => {\n const body = {\n aliasValue: options.alias,\n requestingParticipantId: options.requestingParticipantId,\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${ALIAS}`;\n\n return {\n method: HTTP_VERBS.POST,\n uri,\n body,\n };\n },\n\n getTransferHostToMemberRequestParams: (options) => {\n const body = {\n role: {\n moderator: options.moderator,\n },\n };\n const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;\n\n return {\n method: HTTP_VERBS.PATCH,\n uri,\n body,\n };\n },\n\n genderateSendDTMFOptions: (url, tones, memberId, locusUrl) => ({\n url,\n tones,\n memberId,\n locusUrl,\n }),\n\n generateSendDTMFRequestParams: ({url, tones, memberId, locusUrl}) => {\n const body = {\n device: {\n url,\n },\n memberId,\n dtmf: {\n correlationId: uuid.v4(),\n tones,\n direction: 'transmit',\n },\n };\n const uri = `${locusUrl}/${PARTICIPANT}/${memberId}/${SEND_DTMF_ENDPOINT}`;\n\n return {\n method: HTTP_VERBS.POST,\n uri,\n body,\n };\n },\n\n cancelPhoneInviteOptions: (invitee, locusUrl) => ({\n invitee,\n locusUrl,\n }),\n\n generateCancelInviteRequestParams: (options) => {\n const body = {\n actionType: _REMOVE_,\n invitees: [\n {\n address: options.invitee.phoneNumber,\n },\n ],\n };\n const requestParams = {\n method: HTTP_VERBS.PUT,\n uri: options.locusUrl,\n body,\n };\n\n return requestParams;\n },\n};\n\nexport default MembersUtil;\n"],"mappings":"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"}
|
|
@@ -121,6 +121,11 @@ declare const MembersUtil: {
|
|
|
121
121
|
};
|
|
122
122
|
};
|
|
123
123
|
};
|
|
124
|
+
/**
|
|
125
|
+
* @param {ServerRoleShape} role
|
|
126
|
+
* @returns {ServerRoleShape} the role shape to be added to the body
|
|
127
|
+
*/
|
|
128
|
+
getAddedRoleShape: (role: ServerRoleShape) => ServerRoleShape;
|
|
124
129
|
/**
|
|
125
130
|
* @param {RoleAssignmentOptions} options
|
|
126
131
|
* @returns {RoleAssignmentRequest} the request parameters (method, uri, body) needed to make a addMember request
|
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "3.0.0-beta.
|
|
65
|
+
version: "3.0.0-beta.290"
|
|
66
66
|
});
|
|
67
67
|
var _default = Webinar;
|
|
68
68
|
exports.default = _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.290",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.290",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.290",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.290",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.290",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.290",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.290",
|
|
41
41
|
"chai": "^4.3.4",
|
|
42
42
|
"chai-as-promised": "^7.1.1",
|
|
43
43
|
"jsdom-global": "3.0.2",
|
|
@@ -46,19 +46,19 @@
|
|
|
46
46
|
"typescript": "^4.7.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@webex/common": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.290",
|
|
50
50
|
"@webex/internal-media-core": "2.1.0",
|
|
51
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
52
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
58
|
-
"@webex/media-helpers": "3.0.0-beta.
|
|
59
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
60
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
61
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.290",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.290",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.290",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.290",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.290",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.290",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.290",
|
|
58
|
+
"@webex/media-helpers": "3.0.0-beta.290",
|
|
59
|
+
"@webex/plugin-people": "3.0.0-beta.290",
|
|
60
|
+
"@webex/plugin-rooms": "3.0.0-beta.290",
|
|
61
|
+
"@webex/webex-core": "3.0.0-beta.290",
|
|
62
62
|
"ampersand-collection": "^2.0.2",
|
|
63
63
|
"bowser": "^2.11.0",
|
|
64
64
|
"btoa": "^1.2.1",
|
package/src/member/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ import MemberUtil from './util';
|
|
|
11
11
|
*/
|
|
12
12
|
export default class Member {
|
|
13
13
|
associatedUser: any;
|
|
14
|
+
canReclaimHost: boolean;
|
|
14
15
|
id: any;
|
|
15
16
|
isAudioMuted: any;
|
|
16
17
|
isContentSharing: any;
|
|
@@ -61,6 +62,13 @@ export default class Member {
|
|
|
61
62
|
}
|
|
62
63
|
| any = {}
|
|
63
64
|
) {
|
|
65
|
+
/**
|
|
66
|
+
* @instance
|
|
67
|
+
* @type {Boolean}
|
|
68
|
+
* @public
|
|
69
|
+
* @memberof Member
|
|
70
|
+
*/
|
|
71
|
+
this.canReclaimHost = false;
|
|
64
72
|
/**
|
|
65
73
|
* The server participant object
|
|
66
74
|
* @instance
|
|
@@ -278,6 +286,7 @@ export default class Member {
|
|
|
278
286
|
private processParticipant(participant: object) {
|
|
279
287
|
this.participant = participant;
|
|
280
288
|
if (participant) {
|
|
289
|
+
this.canReclaimHost = MemberUtil.canReclaimHost(participant);
|
|
281
290
|
this.id = MemberUtil.extractId(participant);
|
|
282
291
|
this.name = MemberUtil.extractName(participant);
|
|
283
292
|
this.isAudioMuted = MemberUtil.isAudioMuted(participant);
|
package/src/member/util.ts
CHANGED
|
@@ -28,6 +28,20 @@ import ParameterError from '../common/errors/parameter';
|
|
|
28
28
|
|
|
29
29
|
const MemberUtil: any = {};
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* @param {Object} participant the locus participant
|
|
33
|
+
* @returns {Boolean}
|
|
34
|
+
*/
|
|
35
|
+
MemberUtil.canReclaimHost = (participant) => {
|
|
36
|
+
if (!participant) {
|
|
37
|
+
throw new ParameterError(
|
|
38
|
+
'canReclaimHostRole could not be processed, participant is undefined.'
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return participant.canReclaimHostRole || false;
|
|
43
|
+
};
|
|
44
|
+
|
|
31
45
|
/**
|
|
32
46
|
* @param {Object} participant the locus participant
|
|
33
47
|
* @returns {[ServerRoleShape]}
|
package/src/members/types.ts
CHANGED
package/src/members/util.ts
CHANGED
|
@@ -201,6 +201,20 @@ const MembersUtil = {
|
|
|
201
201
|
};
|
|
202
202
|
},
|
|
203
203
|
|
|
204
|
+
/**
|
|
205
|
+
* @param {ServerRoleShape} role
|
|
206
|
+
* @returns {ServerRoleShape} the role shape to be added to the body
|
|
207
|
+
*/
|
|
208
|
+
getAddedRoleShape: (role: ServerRoleShape): ServerRoleShape => {
|
|
209
|
+
const roleShape: ServerRoleShape = {type: role.type, hasRole: role.hasRole};
|
|
210
|
+
|
|
211
|
+
if (role.hostKey) {
|
|
212
|
+
roleShape.hostKey = role.hostKey;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return roleShape;
|
|
216
|
+
},
|
|
217
|
+
|
|
204
218
|
/**
|
|
205
219
|
* @param {RoleAssignmentOptions} options
|
|
206
220
|
* @returns {RoleAssignmentRequest} the request parameters (method, uri, body) needed to make a addMember request
|
|
@@ -208,7 +222,7 @@ const MembersUtil = {
|
|
|
208
222
|
getRoleAssignmentMemberRequestParams: (options: RoleAssignmentOptions): RoleAssignmentRequest => {
|
|
209
223
|
const body = {role: {roles: []}};
|
|
210
224
|
options.roles.forEach((role) => {
|
|
211
|
-
body.role.roles.push(
|
|
225
|
+
body.role.roles.push(MembersUtil.getAddedRoleShape(role));
|
|
212
226
|
});
|
|
213
227
|
|
|
214
228
|
const uri = `${options.locusUrl}/${PARTICIPANT}/${options.memberId}/${CONTROLS}`;
|
|
@@ -17,13 +17,7 @@ describe('member', () => {
|
|
|
17
17
|
assert.exists(member.supportsInterpretation);
|
|
18
18
|
assert.exists(member.supportsBreakouts);
|
|
19
19
|
assert.exists(member.supportLiveAnnotation);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
it('checks that processParticipant calls isHandRaised', () => {
|
|
23
|
-
sinon.spy(MemberUtil, 'isHandRaised');
|
|
24
|
-
member.processParticipant(participant);
|
|
25
|
-
|
|
26
|
-
assert.calledOnceWithExactly(MemberUtil.isHandRaised, participant);
|
|
20
|
+
assert.exists(member.canReclaimHost);
|
|
27
21
|
});
|
|
28
22
|
|
|
29
23
|
describe('roles', () => {
|
|
@@ -49,6 +43,13 @@ describe('member', () => {
|
|
|
49
43
|
|
|
50
44
|
assert.calledOnceWithExactly(MemberUtil.isHandRaised, participant);
|
|
51
45
|
});
|
|
46
|
+
|
|
47
|
+
it('checks that processParticipant calls canReclaimHost', () => {
|
|
48
|
+
sinon.spy(MemberUtil, 'canReclaimHost');
|
|
49
|
+
member.processParticipant(participant);
|
|
50
|
+
|
|
51
|
+
assert.calledOnceWithExactly(MemberUtil.canReclaimHost, participant);
|
|
52
|
+
});
|
|
52
53
|
})
|
|
53
54
|
|
|
54
55
|
describe('#processMember', () => {
|
|
@@ -50,6 +50,38 @@ describe('plugin-meetings', () => {
|
|
|
50
50
|
});
|
|
51
51
|
});
|
|
52
52
|
|
|
53
|
+
describe('MemberUtil.canReclaimHost', () => {
|
|
54
|
+
it('throws error when there is no participant', () => {
|
|
55
|
+
assert.throws(() => {
|
|
56
|
+
MemberUtil.canReclaimHost();
|
|
57
|
+
}, 'canReclaimHostRole could not be processed, participant is undefined.');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('returns true when canReclaimHostRole is true', () => {
|
|
61
|
+
const participant = {
|
|
62
|
+
canReclaimHostRole: true,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
assert.isTrue(MemberUtil.canReclaimHost(participant));
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('returns false when canReclaimHostRole is false', () => {
|
|
69
|
+
const participant = {
|
|
70
|
+
canReclaimHostRole: false,
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
assert.isFalse(MemberUtil.canReclaimHost(participant));
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('returns false when canReclaimHostRole is falsy', () => {
|
|
77
|
+
const participant = {
|
|
78
|
+
canReclaimHostRole: undefined,
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
assert.isFalse(MemberUtil.canReclaimHost(participant));
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
53
85
|
describe('MemberUtil.extractControlRoles', () => {
|
|
54
86
|
it('happy path extract control roles', () => {
|
|
55
87
|
const participant = {
|
|
@@ -59,6 +59,32 @@ describe('plugin-meetings', () => {
|
|
|
59
59
|
},
|
|
60
60
|
});
|
|
61
61
|
});
|
|
62
|
+
|
|
63
|
+
it('returns the correct request params with a hostKey', () => {
|
|
64
|
+
const format = {
|
|
65
|
+
locusUrl: 'locusUrl',
|
|
66
|
+
memberId: 'test',
|
|
67
|
+
roles: [
|
|
68
|
+
{type: 'PRESENTER', hasRole: true, hostKey: '123456'},
|
|
69
|
+
{type: 'MODERATOR', hasRole: false, hostKey: '123456'},
|
|
70
|
+
{type: 'COHOST', hasRole: true, hostKey: '123456'},
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
assert.deepEqual(MembersUtil.getRoleAssignmentMemberRequestParams(format), {
|
|
75
|
+
method: 'PATCH',
|
|
76
|
+
uri: `locusUrl/${PARTICIPANT}/test/${CONTROLS}`,
|
|
77
|
+
body: {
|
|
78
|
+
role: {
|
|
79
|
+
roles: [
|
|
80
|
+
{type: 'PRESENTER', hasRole: true, hostKey: '123456'},
|
|
81
|
+
{type: 'MODERATOR', hasRole: false, hostKey: '123456'},
|
|
82
|
+
{type: 'COHOST', hasRole: true, hostKey: '123456'},
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
});
|
|
62
88
|
});
|
|
63
89
|
|
|
64
90
|
describe('#generateRaiseHandMemberOptions', () => {
|