import { StatelessWebexPlugin } from '@webex/webex-core'; import Member from '../member'; import MembersCollection from './collection'; import { ReceiveSlotManager } from '../multistream/receiveSlotManager'; import { MediaRequestManager } from '../multistream/mediaRequestManager'; import { ServerRoleShape } from './types'; import { Invitee } from '../meeting/type'; /** * @class Members */ export default class Members extends StatelessWebexPlugin { hostId: any; locusUrl: any; mediaShareContentId: any; mediaShareWhiteboardId: any; membersCollection: MembersCollection; membersRequest: any; receiveSlotManager: ReceiveSlotManager; mediaRequestManagers: { audio: MediaRequestManager; video: MediaRequestManager; }; recordingId: any; selfId: any; type: any; namespace: string; /** * * @param {Object} attrs * @param {Object} options * @memberof Members */ constructor(attrs: any, options: object); /** * Internal update the self Id value * @param {Object} payload * @param {Object} payload.newSelf * @param {Object} payload.oldSelf * @returns {undefined} * @private * @memberof Members */ locusSelfUpdate(payload: { newSelf: any; oldSelf: any; }): void; /** * Internal update the hostId value * @param {Object} payload * @param {Object} payload.newHost * @param {Object} payload.oldHost * @returns {undefined} * @private * @memberof Members */ locusHostUpdate(payload: { newHost: any; oldHost: any; }): void; /** * clear member collection * @returns {void} * @private * @memberof Members */ clearMembers(): void; /** * Updates properties on members that rely on information from other members. * This function MUST be called only after the membersCollection has been fully updated * @param {UpdatedMembers} membersUpdate * @returns {Object} membersCollection * @private * @memberof Members */ private updateRelationsBetweenMembers; /** * when new participant updates come in, both delta and full participants, update them in members collection * delta object in the event will have {updated, added} and full will be the full membersCollection * @param {Object} payload * @param {Object} payload.participants new/updated participants * @param {Boolean} payload.isReplace whether to replace the whole members collection * @param {Object} payload.removedParticipantIds ids of the removed participants * @returns {undefined} * @private * @memberof Members */ locusParticipantsUpdate(payload: { participants: object; isReplace?: boolean; removedParticipantIds?: Array; }): void; /** * Internal update the content id * @param {Object} payload * @param {Object} payload.current * @param {Object} payload.previous * @returns {undefined} * @private * @memberof Members */ locusMediaSharesUpdate(payload: { current: any; previous: any; }): void; /** * Internal update the locus url value * @param {Object} payload * @param {String} payload.locusUrl * @returns {undefined} * @private * @memberof Members */ locusUrlUpdate(payload: any): void; /** * Internal update the type of meeting * @param {Object} payload * @param {String} payload.type * @returns {undefined} * @private * @memberof Members */ locusFullStateTypeUpdate(payload: { type: string; }): void; /** * sets values in the members collection for updated and added properties from delta * @param {UpdatedMembers} membersUpdate * @returns {Object} membersCollection * @private * @memberof Members */ private handleMembersUpdate; /** * removes members from the collection * @param {Array} removedMembers removed members ids * @returns {void} */ private removeMembers; /** * set members to the member collection from each updated/added lists as passed in * @param {Array} list * @param {boolean} isUpdate * @returns {undefined} * @private * @memberof Members */ private constructMembers; /** * Internal update the participants value * @param {Object} payload * @returns {UpdatedMembers} * @private * @memberof Members */ private handleLocusInfoUpdatedParticipants; /** * Update the locus Url * @param {Object} locus * @param {String} [locusUrl] optional, takes precedence * @throws {ParameterError} * @returns {undefined} * @public * @memberof Members */ setLocusUrl(locus: any, locusUrl?: string): void; /** * Update the host id * @param {Object} locus * @param {String} [hostId] optional, takes precedence * @throws {ParameterError} * @returns {undefined} * @public * @memberof Members */ setHostId(locus: any, hostId?: string): void; /** * Update the type * @param {Object} fullState * @param {String} [type] optional, takes precedence * @throws {ParameterError} * @returns {undefined} * @public * @memberof Members */ setType(fullState: any, type?: string): void; /** * Update the self Id * @param {Object} locus * @param {String} [selfId] optional, takes precedence * @throws {Error} * @returns {undefined} * @memberof Members */ setSelfId(locus: any, selfId?: string): void; /** * Update the media share content id * @param {Object} locus * @param {String} [contentId] optional, takes precedence * @throws {Error} * @returns {undefined} * @memberof Members */ setMediaShareContentId(locus: any, contentId?: string): void; /** * Update the media share whiteboard id * @param {Object} locus * @param {String} [whiteboardId] optional, takes precedence * @throws {Error} * @returns {undefined} * @memberof Members */ setMediaShareWhiteboardId(locus: any, whiteboardId?: string): void; /** * Find all the updates, and added members * Removed/left members will end up in updates * Each array contains only members * @param {Array} participants the locus participants * @returns {UpdatedMembers} {added: {Array}, updated: {Array}} * @private * @memberof Members */ private update; /** * Adds a guest Member to the associated meeting * @param {Invitee} invitee * @param {Boolean} [alertIfActive] * @returns {Promise} * @memberof Members */ addMember(invitee: Invitee, alertIfActive?: boolean): any; /** * Cancels an outgoing PSTN call to the associated meeting * @param {Invitee} invitee * @returns {Promise} * @memberof Members */ cancelPhoneInvite(invitee: Invitee): any; /** * Cancels an SIP/phone call to the associated meeting * @param {Invitee} invitee * @param {String} invitee.memberId - The memberId of the invitee * @param {Boolean} [invitee.isInternalNumber] - When cancel phone invitation, if the number is internal * @returns {Promise} * @memberof Members */ cancelInviteByMemberId(invitee: Invitee): any; /** * Admits waiting members (invited guests to meeting) * @param {Array} memberIds * @param {Object} sessionLocusUrls: {authorizingLocusUrl, mainLocusUrl} * @returns {Promise} * @public * @memberof Members */ admitMembers(memberIds: Array, sessionLocusUrls?: { authorizingLocusUrl: string; mainLocusUrl: string; }): any; /** * Removes a member from the meeting * @param {String} memberId * @returns {Promise} * @public * @memberof Members */ removeMember(memberId: string): any; /** * Audio mutes another member in a meeting * @param {String} memberId * @param {boolean} [mute] default true * @param {boolean} [isAudio] default true * @returns {Promise} * @public * @memberof Members */ muteMember(memberId: string, mute?: boolean, isAudio?: boolean): any; /** * Assign role(s) to a member in the meeting * @param {String} memberId * @param {[ServerRoleShape]} roles - to assign an array of roles * @returns {Promise} * @public * @memberof Members */ assignRoles(memberId: string, roles: Array): any; /** * Moves a meeting member into the lobby. * @param {String} memberId -- The ID of the member to move. * @returns {Promise} -- Resolves with the lobby‐move response. * @public * @memberof Members */ moveToLobby(memberId: string): any; /** * Raise or lower the hand of a member in a meeting * @param {String} memberId * @param {boolean} [raise] - to raise hand (=true) or lower (=false), default: true * @returns {Promise} * @public * @memberof Members */ raiseOrLowerHand(memberId: string, raise?: boolean): any; /** * Lower all hands of members in a meeting * @param {String} requestingMemberId - id of the participant which requested the lower all hands * @param {array} roles which should be lowered * @returns {Promise} * @public * @memberof Members */ lowerAllHands(requestingMemberId: string, roles: Array): any; /** * Transfers the host to another member * @param {String} memberId * @param {boolean} [moderator] default true * @returns {Promise} * @public * @memberof Members */ transferHostToMember(memberId: string, moderator?: boolean): any; /** * Sends DTMF tones for the PSTN member of a meeting * @param {String} tones a string of one or more DTMF tones to send * @param {String} memberId member id * @returns {Promise} * @public * @memberof Members */ sendDialPadKey(tones?: string, memberId?: string): any; /** Finds a member that has any device with a csi matching provided value * * @param {number} csi * @returns {Member} */ findMemberByCsi(csi: any): Member; /** * Returns an array of a member's CSIs matching the mediaType and mediaContent * * @param {string} memberId * @param {string} mediaType 'audio' or 'video' * @param {string} mediaContent 'main' or 'slides' * @returns {Member} */ getCsisForMember(memberId: any, mediaType?: string, mediaContent?: string): any[]; /** * Edit display name of participants in a meeting * @param {string} memberId - id of the participant who is receiving request * @param {string} requestingParticipantId - id of the participant who is sending request (optional) * @param {string} [alias] - alias name * @param {string} [suffix] - name suffix (optional) * @returns {Promise} * @public * @memberof Members */ editDisplayName(memberId: string, requestingParticipantId: string, alias: string, suffix?: string): any; }