@webex/plugin-meetings 3.9.0-next.23 → 3.9.0-next.25
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/constants.js +4 -0
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/index.js +22 -5
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +11 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +17 -3
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +2 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +74 -32
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/request.js +48 -14
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +3 -0
- package/dist/meeting/util.js.map +1 -1
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/util.js +10 -0
- package/dist/member/util.js.map +1 -1
- package/dist/types/constants.d.ts +3 -0
- package/dist/types/controls-options-manager/index.d.ts +9 -1
- package/dist/types/locus-info/index.d.ts +2 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
- package/dist/types/meeting/index.d.ts +14 -0
- package/dist/types/meeting/request.d.ts +16 -0
- package/dist/types/meeting/util.d.ts +1 -0
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/util.d.ts +5 -0
- package/dist/webinar/index.js +1 -1
- package/package.json +1 -1
- package/src/constants.ts +6 -0
- package/src/controls-options-manager/index.ts +26 -5
- package/src/locus-info/controlsUtils.ts +18 -0
- package/src/locus-info/index.ts +14 -4
- package/src/meeting/in-meeting-actions.ts +4 -0
- package/src/meeting/index.ts +67 -20
- package/src/meeting/request.ts +38 -0
- package/src/meeting/util.ts +3 -0
- package/src/member/index.ts +10 -0
- package/src/member/util.ts +14 -0
- package/test/unit/spec/controls-options-manager/index.js +47 -0
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/locus-info/index.js +39 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
- package/test/unit/spec/meeting/index.js +41 -2
- package/test/unit/spec/meeting/utils.js +1 -0
- package/test/unit/spec/member/util.js +24 -0
package/dist/member/util.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_types","require","_constants","_parameter","_interopRequireDefault","MemberUtil","canReclaimHost","participant","ParameterError","canReclaimHostRole","getControlsRoles","_participant$controls","_participant$controls2","controls","role","roles","isBrb","_participant$controls3","_participant$controls4","brb","enabled","hasRole","controlRole","_MemberUtil$getContro","some","type","hasCohost","ServerRoles","Cohost","hasModerator","Moderator","hasPresenter","Presenter","extractControlRoles","cohost","moderator","presenter","isUser","_USER_","isModerator","isGuest","guest","isDevice","_RESOURCE_ROOM_","isModeratorAssignmentProhibited","moderatorAssignmentNotAllowed","isPresenterAssignmentProhibited","presenterAssignmentNotAllowed","isSame","id","person","isNotAdmitted","status","devices","intent","_WAIT_","_IN_LOBBY_","_IN_MEETING_","isAudioMuted","isMuted","AUDIO_STATUS","AUDIO","isVideoMuted","VIDEO_STATUS","VIDEO","isHandRaised","_participant$controls5","_participant$controls6","hand","raised","isBreakoutsSupported","doesNotSupportBreakouts","isInterpretationSupported","doesNotSupportSiInterpreter","isLiveAnnotationSupported","annotatorAssignmentNotAllowed","statusAccessor","controlsAccessor","_participant$controls7","_participant$controls8","_participant$status","remoteMute","muted","localStatus","_RECEIVE_ONLY_","_SEND_RECEIVE_","getRecordingMember","record","recording","meta","modifiedBy","isRecording","localRecord","isRemovable","isSelf","isInMeeting","_CALL_","isMutable","extractStatus","length","_NOT_IN_MEETING_","state","_JOINED_","_IDLE_","foundDevice","find","device","_OBSERVE_","_LEFT_","extractId","extractMediaStatus","_participant$status2","_participant$status3","audio","audioStatus","video","videoStatus","extractName","name","extractPairedWithParticipantUrl","_participant$devices","participantUrl","forEach","_device$intents","intents","associatedWith","_default","exports","default"],"sources":["util.ts"],"sourcesContent":["import {\n IExternalRoles,\n ServerRoles,\n ServerRoleShape,\n IMediaStatus,\n Participant,\n ParticipantUrl,\n} from './types';\nimport {\n _USER_,\n _RESOURCE_ROOM_,\n _OBSERVE_,\n _WAIT_,\n _LEFT_,\n _JOINED_,\n _IDLE_,\n _IN_LOBBY_,\n _NOT_IN_MEETING_,\n _IN_MEETING_,\n AUDIO_STATUS,\n VIDEO_STATUS,\n _SEND_RECEIVE_,\n _RECEIVE_ONLY_,\n _CALL_,\n VIDEO,\n AUDIO,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst MemberUtil = {\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n canReclaimHost: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'canReclaimHostRole could not be processed, participant is undefined.'\n );\n }\n\n return participant.canReclaimHostRole || false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {[ServerRoleShape]}\n */\n getControlsRoles: (participant: Participant): Array<ServerRoleShape> =>\n participant?.controls?.role?.roles,\n\n /**\n * Checks if the participant has the brb status enabled.\n *\n * @param {Participant} participant - The locus participant object.\n * @returns {boolean} - True if the participant has brb enabled, false otherwise.\n */\n isBrb: (participant: Participant): boolean => participant.controls?.brb?.enabled || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @param {ServerRoles} controlRole the search role\n * @returns {Boolean}\n */\n hasRole: (participant: Participant, controlRole: ServerRoles): boolean =>\n MemberUtil.getControlsRoles(participant)?.some(\n (role) => role.type === controlRole && role.hasRole\n ),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasCohost: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Cohost) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasModerator: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Moderator) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasPresenter: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Presenter) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {IExternalRoles}\n */\n extractControlRoles: (participant: Participant): IExternalRoles => {\n const roles = {\n cohost: MemberUtil.hasCohost(participant),\n moderator: MemberUtil.hasModerator(participant),\n presenter: MemberUtil.hasPresenter(participant),\n };\n\n return roles;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isUser: (participant: Participant) => participant && participant.type === _USER_,\n\n isModerator: (participant: Participant) => participant && participant.moderator,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isGuest: (participant: Participant) => participant && participant.guest,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isDevice: (participant: Participant) => participant && participant.type === _RESOURCE_ROOM_,\n\n isModeratorAssignmentProhibited: (participant: Participant) =>\n participant && participant.moderatorAssignmentNotAllowed,\n\n isPresenterAssignmentProhibited: (participant: Participant) =>\n participant && participant.presenterAssignmentNotAllowed,\n\n /**\n * checks to see if the participant id is the same as the passed id\n * there are multiple ids that can be used\n * @param {Object} participant - The locus participant object.\n * @param {String} id\n * @returns {Boolean}\n */\n isSame: (participant: Participant, id: string) =>\n participant && (participant.id === id || (participant.person && participant.person.id === id)),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @param {Boolean} isGuest\n * @param {String} status\n * @returns {Boolean}\n */\n isNotAdmitted: (participant: Participant, isGuest: boolean, status: string): boolean =>\n participant &&\n participant.guest &&\n ((participant.devices &&\n participant.devices[0] &&\n participant.devices[0].intent &&\n participant.devices[0].intent.type === _WAIT_ &&\n // @ts-ignore\n isGuest &&\n status === _IN_LOBBY_) ||\n // @ts-ignore\n !status === _IN_MEETING_),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isAudioMuted: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Audio could not be processed, participant is undefined.');\n }\n\n return MemberUtil.isMuted(participant, AUDIO_STATUS, AUDIO);\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isVideoMuted: (participant: Participant): boolean => {\n if (!participant) {\n throw new ParameterError('Video could not be processed, participant is undefined.');\n }\n\n return MemberUtil.isMuted(participant, VIDEO_STATUS, VIDEO);\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isHandRaised: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Raise hand could not be processed, participant is undefined.');\n }\n\n return participant.controls?.hand?.raised || false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isBreakoutsSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Breakout support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportBreakouts;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isInterpretationSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Interpretation support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportSiInterpreter;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isLiveAnnotationSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'LiveAnnotation support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.annotatorAssignmentNotAllowed;\n },\n\n /**\n * utility method for audio/video muted status\n * @param {any} participant\n * @param {String} statusAccessor\n * @param {String} controlsAccessor\n * @returns {Boolean | undefined}\n */\n isMuted: (participant: Participant, statusAccessor: string, controlsAccessor: string) => {\n // check remote mute\n const remoteMute = participant?.controls?.[controlsAccessor]?.muted;\n if (remoteMute === true) {\n return true;\n }\n\n // check local mute\n const localStatus = participant?.status?.[statusAccessor];\n if (localStatus === _RECEIVE_ONLY_) {\n return true;\n }\n if (localStatus === _SEND_RECEIVE_) {\n return false;\n }\n\n return remoteMute;\n },\n\n /**\n * utility method for getting the recording member for later comparison\n * @param {Object} controls\n * @returns {String|null}\n */\n getRecordingMember: (controls: any) => {\n if (!controls) {\n return null;\n }\n if (controls.record && controls.record.recording && controls.record.meta) {\n return controls.record.meta.modifiedBy;\n }\n\n return null;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isRecording: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Recording could not be processed, participant is undefined.');\n }\n if (participant.controls && participant.controls.localRecord) {\n return participant.controls.localRecord.recording;\n }\n\n return false;\n },\n\n isRemovable: (isSelf, isGuest, isInMeeting, type) => {\n if (isGuest || isSelf) {\n return false;\n }\n if (type === _CALL_) {\n return false;\n }\n if (isInMeeting) {\n return true;\n }\n\n return false;\n },\n\n isMutable: (isSelf, isDevice, isInMeeting, isMuted, type) => {\n if (!isInMeeting) {\n return false;\n }\n if (isMuted) {\n return false;\n }\n if (type === _CALL_) {\n return false;\n }\n if (isSelf || isDevice) {\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractStatus: (participant: Participant) => {\n if (!(participant && participant.devices && participant.devices.length)) {\n return _NOT_IN_MEETING_;\n }\n if (participant.state === _JOINED_) {\n return _IN_MEETING_;\n }\n if (participant.state === _IDLE_) {\n if (participant.devices && participant.devices.length > 0) {\n const foundDevice = participant.devices.find(\n (device) =>\n device.intent && (device.intent.type === _WAIT_ || device.intent.type === _OBSERVE_)\n );\n\n return foundDevice ? _IN_LOBBY_ : _NOT_IN_MEETING_;\n }\n\n return _NOT_IN_MEETING_;\n }\n if (participant.state === _LEFT_) {\n return _NOT_IN_MEETING_;\n }\n\n return _NOT_IN_MEETING_;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractId: (participant: Participant) => {\n if (participant) {\n return participant.id;\n }\n\n return null;\n },\n\n /**\n * extracts the media status from nested participant object\n * @param {Object} participant - The locus participant object.\n * @returns {Object}\n */\n extractMediaStatus: (participant: Participant): IMediaStatus => {\n if (!participant) {\n throw new ParameterError('Media status could not be extracted, participant is undefined.');\n }\n\n return {\n audio: participant.status?.audioStatus,\n video: participant.status?.videoStatus,\n };\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractName: (participant: Participant) => {\n if (participant && participant.person) {\n return participant.person.name;\n }\n\n return null;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractPairedWithParticipantUrl: (participant: Participant): ParticipantUrl | undefined => {\n let participantUrl;\n\n participant?.devices?.forEach((device) => {\n device?.intents?.forEach((intent) => {\n if (intent?.type === _OBSERVE_ && intent?.associatedWith) {\n participantUrl = intent.associatedWith;\n }\n });\n });\n\n return participantUrl;\n },\n};\nexport default MemberUtil;\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_types","require","_constants","_parameter","_interopRequireDefault","MemberUtil","canReclaimHost","participant","ParameterError","canReclaimHostRole","getControlsRoles","_participant$controls","_participant$controls2","controls","role","roles","isBrb","_participant$controls3","_participant$controls4","brb","enabled","hasRole","controlRole","_MemberUtil$getContro","some","type","hasCohost","ServerRoles","Cohost","hasModerator","Moderator","hasPresenter","Presenter","extractControlRoles","cohost","moderator","presenter","isUser","_USER_","isModerator","isGuest","guest","isDevice","_RESOURCE_ROOM_","isModeratorAssignmentProhibited","moderatorAssignmentNotAllowed","isPresenterAssignmentProhibited","presenterAssignmentNotAllowed","isSame","id","person","isNotAdmitted","status","devices","intent","_WAIT_","_IN_LOBBY_","_IN_MEETING_","isAudioMuted","isMuted","AUDIO_STATUS","AUDIO","isVideoMuted","VIDEO_STATUS","VIDEO","isHandRaised","_participant$controls5","_participant$controls6","hand","raised","isBreakoutsSupported","doesNotSupportBreakouts","isSupportsSingleUserAutoEndMeeting","doesNotSupportSingleUserAutoEndMeeting","isInterpretationSupported","doesNotSupportSiInterpreter","isLiveAnnotationSupported","annotatorAssignmentNotAllowed","statusAccessor","controlsAccessor","_participant$controls7","_participant$controls8","_participant$status","remoteMute","muted","localStatus","_RECEIVE_ONLY_","_SEND_RECEIVE_","getRecordingMember","record","recording","meta","modifiedBy","isRecording","localRecord","isRemovable","isSelf","isInMeeting","_CALL_","isMutable","extractStatus","length","_NOT_IN_MEETING_","state","_JOINED_","_IDLE_","foundDevice","find","device","_OBSERVE_","_LEFT_","extractId","extractMediaStatus","_participant$status2","_participant$status3","audio","audioStatus","video","videoStatus","extractName","name","extractPairedWithParticipantUrl","_participant$devices","participantUrl","forEach","_device$intents","intents","associatedWith","_default","exports","default"],"sources":["util.ts"],"sourcesContent":["import {\n IExternalRoles,\n ServerRoles,\n ServerRoleShape,\n IMediaStatus,\n Participant,\n ParticipantUrl,\n} from './types';\nimport {\n _USER_,\n _RESOURCE_ROOM_,\n _OBSERVE_,\n _WAIT_,\n _LEFT_,\n _JOINED_,\n _IDLE_,\n _IN_LOBBY_,\n _NOT_IN_MEETING_,\n _IN_MEETING_,\n AUDIO_STATUS,\n VIDEO_STATUS,\n _SEND_RECEIVE_,\n _RECEIVE_ONLY_,\n _CALL_,\n VIDEO,\n AUDIO,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst MemberUtil = {\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n canReclaimHost: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'canReclaimHostRole could not be processed, participant is undefined.'\n );\n }\n\n return participant.canReclaimHostRole || false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {[ServerRoleShape]}\n */\n getControlsRoles: (participant: Participant): Array<ServerRoleShape> =>\n participant?.controls?.role?.roles,\n\n /**\n * Checks if the participant has the brb status enabled.\n *\n * @param {Participant} participant - The locus participant object.\n * @returns {boolean} - True if the participant has brb enabled, false otherwise.\n */\n isBrb: (participant: Participant): boolean => participant.controls?.brb?.enabled || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @param {ServerRoles} controlRole the search role\n * @returns {Boolean}\n */\n hasRole: (participant: Participant, controlRole: ServerRoles): boolean =>\n MemberUtil.getControlsRoles(participant)?.some(\n (role) => role.type === controlRole && role.hasRole\n ),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasCohost: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Cohost) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasModerator: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Moderator) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n hasPresenter: (participant: Participant): boolean =>\n MemberUtil.hasRole(participant, ServerRoles.Presenter) || false,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {IExternalRoles}\n */\n extractControlRoles: (participant: Participant): IExternalRoles => {\n const roles = {\n cohost: MemberUtil.hasCohost(participant),\n moderator: MemberUtil.hasModerator(participant),\n presenter: MemberUtil.hasPresenter(participant),\n };\n\n return roles;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isUser: (participant: Participant) => participant && participant.type === _USER_,\n\n isModerator: (participant: Participant) => participant && participant.moderator,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isGuest: (participant: Participant) => participant && participant.guest,\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isDevice: (participant: Participant) => participant && participant.type === _RESOURCE_ROOM_,\n\n isModeratorAssignmentProhibited: (participant: Participant) =>\n participant && participant.moderatorAssignmentNotAllowed,\n\n isPresenterAssignmentProhibited: (participant: Participant) =>\n participant && participant.presenterAssignmentNotAllowed,\n\n /**\n * checks to see if the participant id is the same as the passed id\n * there are multiple ids that can be used\n * @param {Object} participant - The locus participant object.\n * @param {String} id\n * @returns {Boolean}\n */\n isSame: (participant: Participant, id: string) =>\n participant && (participant.id === id || (participant.person && participant.person.id === id)),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @param {Boolean} isGuest\n * @param {String} status\n * @returns {Boolean}\n */\n isNotAdmitted: (participant: Participant, isGuest: boolean, status: string): boolean =>\n participant &&\n participant.guest &&\n ((participant.devices &&\n participant.devices[0] &&\n participant.devices[0].intent &&\n participant.devices[0].intent.type === _WAIT_ &&\n // @ts-ignore\n isGuest &&\n status === _IN_LOBBY_) ||\n // @ts-ignore\n !status === _IN_MEETING_),\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isAudioMuted: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Audio could not be processed, participant is undefined.');\n }\n\n return MemberUtil.isMuted(participant, AUDIO_STATUS, AUDIO);\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isVideoMuted: (participant: Participant): boolean => {\n if (!participant) {\n throw new ParameterError('Video could not be processed, participant is undefined.');\n }\n\n return MemberUtil.isMuted(participant, VIDEO_STATUS, VIDEO);\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isHandRaised: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Raise hand could not be processed, participant is undefined.');\n }\n\n return participant.controls?.hand?.raised || false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isBreakoutsSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Breakout support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportBreakouts;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isSupportsSingleUserAutoEndMeeting: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Single user auto end meeting support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportSingleUserAutoEndMeeting;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isInterpretationSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'Interpretation support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.doesNotSupportSiInterpreter;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isLiveAnnotationSupported: (participant) => {\n if (!participant) {\n throw new ParameterError(\n 'LiveAnnotation support could not be processed, participant is undefined.'\n );\n }\n\n return !participant.annotatorAssignmentNotAllowed;\n },\n\n /**\n * utility method for audio/video muted status\n * @param {any} participant\n * @param {String} statusAccessor\n * @param {String} controlsAccessor\n * @returns {Boolean | undefined}\n */\n isMuted: (participant: Participant, statusAccessor: string, controlsAccessor: string) => {\n // check remote mute\n const remoteMute = participant?.controls?.[controlsAccessor]?.muted;\n if (remoteMute === true) {\n return true;\n }\n\n // check local mute\n const localStatus = participant?.status?.[statusAccessor];\n if (localStatus === _RECEIVE_ONLY_) {\n return true;\n }\n if (localStatus === _SEND_RECEIVE_) {\n return false;\n }\n\n return remoteMute;\n },\n\n /**\n * utility method for getting the recording member for later comparison\n * @param {Object} controls\n * @returns {String|null}\n */\n getRecordingMember: (controls: any) => {\n if (!controls) {\n return null;\n }\n if (controls.record && controls.record.recording && controls.record.meta) {\n return controls.record.meta.modifiedBy;\n }\n\n return null;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {Boolean}\n */\n isRecording: (participant: Participant) => {\n if (!participant) {\n throw new ParameterError('Recording could not be processed, participant is undefined.');\n }\n if (participant.controls && participant.controls.localRecord) {\n return participant.controls.localRecord.recording;\n }\n\n return false;\n },\n\n isRemovable: (isSelf, isGuest, isInMeeting, type) => {\n if (isGuest || isSelf) {\n return false;\n }\n if (type === _CALL_) {\n return false;\n }\n if (isInMeeting) {\n return true;\n }\n\n return false;\n },\n\n isMutable: (isSelf, isDevice, isInMeeting, isMuted, type) => {\n if (!isInMeeting) {\n return false;\n }\n if (isMuted) {\n return false;\n }\n if (type === _CALL_) {\n return false;\n }\n if (isSelf || isDevice) {\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractStatus: (participant: Participant) => {\n if (!(participant && participant.devices && participant.devices.length)) {\n return _NOT_IN_MEETING_;\n }\n if (participant.state === _JOINED_) {\n return _IN_MEETING_;\n }\n if (participant.state === _IDLE_) {\n if (participant.devices && participant.devices.length > 0) {\n const foundDevice = participant.devices.find(\n (device) =>\n device.intent && (device.intent.type === _WAIT_ || device.intent.type === _OBSERVE_)\n );\n\n return foundDevice ? _IN_LOBBY_ : _NOT_IN_MEETING_;\n }\n\n return _NOT_IN_MEETING_;\n }\n if (participant.state === _LEFT_) {\n return _NOT_IN_MEETING_;\n }\n\n return _NOT_IN_MEETING_;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractId: (participant: Participant) => {\n if (participant) {\n return participant.id;\n }\n\n return null;\n },\n\n /**\n * extracts the media status from nested participant object\n * @param {Object} participant - The locus participant object.\n * @returns {Object}\n */\n extractMediaStatus: (participant: Participant): IMediaStatus => {\n if (!participant) {\n throw new ParameterError('Media status could not be extracted, participant is undefined.');\n }\n\n return {\n audio: participant.status?.audioStatus,\n video: participant.status?.videoStatus,\n };\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractName: (participant: Participant) => {\n if (participant && participant.person) {\n return participant.person.name;\n }\n\n return null;\n },\n\n /**\n * @param {Object} participant - The locus participant object.\n * @returns {String}\n */\n extractPairedWithParticipantUrl: (participant: Participant): ParticipantUrl | undefined => {\n let participantUrl;\n\n participant?.devices?.forEach((device) => {\n device?.intents?.forEach((intent) => {\n if (intent?.type === _OBSERVE_ && intent?.associatedWith) {\n participantUrl = intent.associatedWith;\n }\n });\n });\n\n return participantUrl;\n },\n};\nexport default MemberUtil;\n"],"mappings":"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"}
|
@@ -280,6 +280,7 @@ export declare const EVENT_TRIGGERS: {
|
|
280
280
|
MEETING_CONTROLS_ANNOTATION_UPDATED: string;
|
281
281
|
MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED: string;
|
282
282
|
MEETING_CONTROLS_POLLING_QA_UPDATED: string;
|
283
|
+
MEETING_CONTROLS_AUTO_END_MEETING_WARNING_UPDATED: string;
|
283
284
|
MEETING_LOCUS_URL_UPDATE: string;
|
284
285
|
MEETING_STREAM_PUBLISH_STATE_CHANGED: string;
|
285
286
|
MEETING_TRANSCRIPTION_CONNECTED: string;
|
@@ -593,6 +594,7 @@ export declare const LOCUSINFO: {
|
|
593
594
|
SELF_ADMITTED_GUEST: string;
|
594
595
|
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: string;
|
595
596
|
SELF_REMOTE_MUTE_STATUS_UPDATED: string;
|
597
|
+
CONTROLS_AUTO_END_MEETING_WARNING_CHANGED: string;
|
596
598
|
LOCAL_UNMUTE_REQUESTED: string;
|
597
599
|
LOCAL_UNMUTE_REQUIRED: string;
|
598
600
|
SELF_MODERATOR_CHANGED: string;
|
@@ -860,6 +862,7 @@ export declare const DISPLAY_HINTS: {
|
|
860
862
|
SHOW_POST_MEETING_DATA_CONSENT_PROMPT: string;
|
861
863
|
ENABLE_ANNOTATION_MEETING_OPTION: string;
|
862
864
|
DISABLE_ANNOTATION_MEETING_OPTION: string;
|
865
|
+
SHOW_AUTO_END_MEETING_WARNING: string;
|
863
866
|
ENABLE_RDC_MEETING_OPTION: string;
|
864
867
|
DISABLE_RDC_MEETING_OPTION: string;
|
865
868
|
ENABLE_ATTENDEE_START_POLLING_QA: string;
|
@@ -36,6 +36,13 @@ export default class ControlsOptionsManager {
|
|
36
36
|
* @memberof ControlsOptionsManager
|
37
37
|
*/
|
38
38
|
private locusUrl;
|
39
|
+
/**
|
40
|
+
* @instance
|
41
|
+
* @type {string}
|
42
|
+
* @private
|
43
|
+
* @memberof ControlsOptionsManager
|
44
|
+
*/
|
45
|
+
private mainLocusUrl;
|
39
46
|
/**
|
40
47
|
* @param {MeetingRequest} request
|
41
48
|
* @param {Object} options
|
@@ -65,11 +72,12 @@ export default class ControlsOptionsManager {
|
|
65
72
|
}): void;
|
66
73
|
/**
|
67
74
|
* @param {string} url
|
75
|
+
* @param {boolean} isMainLocus
|
68
76
|
* @returns {void}
|
69
77
|
* @public
|
70
78
|
* @memberof ControlsOptionsManager
|
71
79
|
*/
|
72
|
-
setLocusUrl(url: string): void;
|
80
|
+
setLocusUrl(url: string, isMainLocus?: boolean): void;
|
73
81
|
/**
|
74
82
|
* @param {Array} hints
|
75
83
|
* @returns {void}
|
@@ -303,10 +303,11 @@ export default class LocusInfo extends EventsScope {
|
|
303
303
|
/**
|
304
304
|
* handles when the locus.url is updated
|
305
305
|
* @param {String} url
|
306
|
+
* @param {Boolean} isMainLocus
|
306
307
|
* @returns {undefined}
|
307
308
|
* emits internal event locus_info_update_url
|
308
309
|
*/
|
309
|
-
updateLocusUrl(url: string): void;
|
310
|
+
updateLocusUrl(url: string, isMainLocus?: boolean): void;
|
310
311
|
/**
|
311
312
|
* @param {String} aclUrl
|
312
313
|
* @returns {undefined}
|
@@ -87,6 +87,7 @@ interface IInMeetingActions {
|
|
87
87
|
canDoVideo?: boolean;
|
88
88
|
canAnnotate?: boolean;
|
89
89
|
canUseVoip?: boolean;
|
90
|
+
showAutoEndMeetingWarning?: boolean;
|
90
91
|
supportHQV?: boolean;
|
91
92
|
supportHDV?: boolean;
|
92
93
|
canShareWhiteBoard?: boolean;
|
@@ -196,6 +197,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
196
197
|
canDoVideo: any;
|
197
198
|
canAnnotate: any;
|
198
199
|
canUseVoip: any;
|
200
|
+
showAutoEndMeetingWarning: any;
|
199
201
|
supportHQV: any;
|
200
202
|
enforceVirtualBackground: any;
|
201
203
|
supportHDV: any;
|
@@ -1908,6 +1908,20 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
1908
1908
|
* @memberof Meeting
|
1909
1909
|
*/
|
1910
1910
|
sendReaction(reactionType: ReactionServerType, skinToneType?: SkinToneType): any;
|
1911
|
+
/**
|
1912
|
+
* Extend the current meeting duration.
|
1913
|
+
*
|
1914
|
+
* @param {number} extensionMinutes - how many minutes to extend
|
1915
|
+
* @returns {Promise}
|
1916
|
+
* @public
|
1917
|
+
* @memberof Meeting
|
1918
|
+
*/
|
1919
|
+
extendMeeting({ meetingPolicyUrl, meetingInstanceId, participantId, extensionMinutes, }: {
|
1920
|
+
meetingPolicyUrl: any;
|
1921
|
+
meetingInstanceId: any;
|
1922
|
+
participantId: any;
|
1923
|
+
extensionMinutes?: number;
|
1924
|
+
}): any;
|
1911
1925
|
/**
|
1912
1926
|
* Method to enable or disable reactions inside the meeting.
|
1913
1927
|
*
|
@@ -284,6 +284,22 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
284
284
|
* @returns {Promise}
|
285
285
|
*/
|
286
286
|
sendReaction({ reactionChannelUrl, reaction, participantId }: SendReactionOptions): any;
|
287
|
+
/**
|
288
|
+
* Extend the current meeting duration.
|
289
|
+
*
|
290
|
+
* @param {Object} params - Parameters for extending the meeting.
|
291
|
+
* @param {string} params.meetingInstanceId - The unique ID of the meeting instance.
|
292
|
+
* @param {string} params.participantId - The ID of the participant requesting the extension.
|
293
|
+
* @param {number} params.extensionMinutes - The number of minutes to extend the meeting by.
|
294
|
+
* @param {string} params.meetingPolicyUrl - The base URL for meeting policy service (dynamic, from locus links)
|
295
|
+
* @returns {Promise<any>} A promise that resolves with the server response.
|
296
|
+
*/
|
297
|
+
extendMeeting({ meetingInstanceId, participantId, extensionMinutes, meetingPolicyUrl, }: {
|
298
|
+
meetingInstanceId: string;
|
299
|
+
participantId: string;
|
300
|
+
extensionMinutes: number;
|
301
|
+
meetingPolicyUrl: string;
|
302
|
+
}): any;
|
287
303
|
/**
|
288
304
|
* Make a network request to enable or disable reactions.
|
289
305
|
* @param {boolean} options.enable - determines if we need to enable or disable.
|
@@ -88,6 +88,7 @@ declare const MeetingUtil: {
|
|
88
88
|
isRealTimeTranslationEnabled: (displayHints: any) => any;
|
89
89
|
canSelectSpokenLanguages: (displayHints: any) => any;
|
90
90
|
waitingForOthersToJoin: (displayHints: any) => any;
|
91
|
+
showAutoEndMeetingWarning: (displayHints: any) => any;
|
91
92
|
canSendReactions: (originalValue: any, displayHints: any) => any;
|
92
93
|
canUserRenameSelfAndObserved: (displayHints: any) => any;
|
93
94
|
requiresPostMeetingDataConsentPrompt: (displayHints: any) => any;
|
@@ -96,6 +96,11 @@ declare const MemberUtil: {
|
|
96
96
|
* @returns {Boolean}
|
97
97
|
*/
|
98
98
|
isBreakoutsSupported: (participant: any) => boolean;
|
99
|
+
/**
|
100
|
+
* @param {Object} participant - The locus participant object.
|
101
|
+
* @returns {Boolean}
|
102
|
+
*/
|
103
|
+
isSupportsSingleUserAutoEndMeeting: (participant: any) => boolean;
|
99
104
|
/**
|
100
105
|
* @param {Object} participant - The locus participant object.
|
101
106
|
* @returns {Boolean}
|
package/dist/webinar/index.js
CHANGED
package/package.json
CHANGED
package/src/constants.ts
CHANGED
@@ -374,6 +374,8 @@ export const EVENT_TRIGGERS = {
|
|
374
374
|
MEETING_CONTROLS_REMOTE_DESKTOP_CONTROL_UPDATED:
|
375
375
|
'meeting:controls:remote-desktop-control:updated',
|
376
376
|
MEETING_CONTROLS_POLLING_QA_UPDATED: 'meeting:controls:polling-qa:updated',
|
377
|
+
MEETING_CONTROLS_AUTO_END_MEETING_WARNING_UPDATED:
|
378
|
+
'meeting:controls:auto-end-meeting-warning:updated',
|
377
379
|
// Locus URL changed
|
378
380
|
MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
|
379
381
|
MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
|
@@ -727,6 +729,7 @@ export const LOCUSINFO = {
|
|
727
729
|
SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
|
728
730
|
SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
|
729
731
|
SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
|
732
|
+
CONTROLS_AUTO_END_MEETING_WARNING_CHANGED: 'CONTROLS_AUTO_END_MEETING_WARNING_CHANGED',
|
730
733
|
LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
|
731
734
|
LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
|
732
735
|
SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
|
@@ -1052,6 +1055,9 @@ export const DISPLAY_HINTS = {
|
|
1052
1055
|
ENABLE_ANNOTATION_MEETING_OPTION: 'ENABLE_ANNOTATION_MEETING_OPTION',
|
1053
1056
|
DISABLE_ANNOTATION_MEETING_OPTION: 'DISABLE_ANNOTATION_MEETING_OPTION',
|
1054
1057
|
|
1058
|
+
// Auto End Meeting Warning
|
1059
|
+
SHOW_AUTO_END_MEETING_WARNING: 'SHOW_AUTO_END_MEETING_WARNING',
|
1060
|
+
|
1055
1061
|
// Remote Desktop Control
|
1056
1062
|
ENABLE_RDC_MEETING_OPTION: 'ENABLE_RDC_MEETING_OPTION',
|
1057
1063
|
DISABLE_RDC_MEETING_OPTION: 'DISABLE_RDC_MEETING_OPTION',
|
@@ -48,6 +48,14 @@ export default class ControlsOptionsManager {
|
|
48
48
|
*/
|
49
49
|
private locusUrl: string;
|
50
50
|
|
51
|
+
/**
|
52
|
+
* @instance
|
53
|
+
* @type {string}
|
54
|
+
* @private
|
55
|
+
* @memberof ControlsOptionsManager
|
56
|
+
*/
|
57
|
+
private mainLocusUrl: string;
|
58
|
+
|
51
59
|
/**
|
52
60
|
* @param {MeetingRequest} request
|
53
61
|
* @param {Object} options
|
@@ -87,12 +95,16 @@ export default class ControlsOptionsManager {
|
|
87
95
|
|
88
96
|
/**
|
89
97
|
* @param {string} url
|
98
|
+
* @param {boolean} isMainLocus
|
90
99
|
* @returns {void}
|
91
100
|
* @public
|
92
101
|
* @memberof ControlsOptionsManager
|
93
102
|
*/
|
94
|
-
public setLocusUrl(url: string) {
|
103
|
+
public setLocusUrl(url: string, isMainLocus?: boolean) {
|
95
104
|
this.locusUrl = url;
|
105
|
+
if (isMainLocus) {
|
106
|
+
this.mainLocusUrl = url;
|
107
|
+
}
|
96
108
|
}
|
97
109
|
|
98
110
|
/**
|
@@ -160,11 +172,16 @@ export default class ControlsOptionsManager {
|
|
160
172
|
});
|
161
173
|
|
162
174
|
return payloads.reduce((previous, payload) => {
|
175
|
+
const extraBody =
|
176
|
+
this.mainLocusUrl && this.mainLocusUrl !== this.locusUrl
|
177
|
+
? {authorizingLocusUrl: this.locusUrl}
|
178
|
+
: {};
|
179
|
+
|
163
180
|
return previous.then(() =>
|
164
181
|
// @ts-ignore
|
165
182
|
this.request.request({
|
166
|
-
uri: `${this.locusUrl}/${CONTROLS}`,
|
167
|
-
body: payload,
|
183
|
+
uri: `${this.mainLocusUrl || this.locusUrl}/${CONTROLS}`,
|
184
|
+
body: {...payload, ...extraBody},
|
168
185
|
method: HTTP_VERBS.PATCH,
|
169
186
|
})
|
170
187
|
);
|
@@ -241,11 +258,15 @@ export default class ControlsOptionsManager {
|
|
241
258
|
if (error) {
|
242
259
|
return Promise.reject(error);
|
243
260
|
}
|
261
|
+
const extraBody =
|
262
|
+
this.mainLocusUrl && this.mainLocusUrl !== this.locusUrl
|
263
|
+
? {authorizingLocusUrl: this.locusUrl}
|
264
|
+
: {};
|
244
265
|
|
245
266
|
// @ts-ignore
|
246
267
|
return this.request.request({
|
247
|
-
uri: `${this.locusUrl}/${CONTROLS}`,
|
248
|
-
body,
|
268
|
+
uri: `${this.mainLocusUrl || this.locusUrl}/${CONTROLS}`,
|
269
|
+
body: {...body, ...extraBody},
|
249
270
|
method: HTTP_VERBS.PATCH,
|
250
271
|
});
|
251
272
|
}
|
@@ -130,6 +130,15 @@ ControlsUtils.parse = (controls: any) => {
|
|
130
130
|
};
|
131
131
|
}
|
132
132
|
|
133
|
+
if (controls?.autoEndMeetingWarning) {
|
134
|
+
parsedControls.autoEndMeetingWarning = {
|
135
|
+
enabled: controls.autoEndMeetingWarning.enabled,
|
136
|
+
extensionDurationMinutes: controls.autoEndMeetingWarning.extensionDurationMinutes,
|
137
|
+
countdownDurationMinutes: controls.autoEndMeetingWarning.countdownDurationMinutes,
|
138
|
+
countdownStartedAt: controls.autoEndMeetingWarning.countdownStartedAt,
|
139
|
+
};
|
140
|
+
}
|
141
|
+
|
133
142
|
return parsedControls;
|
134
143
|
};
|
135
144
|
|
@@ -244,6 +253,15 @@ ControlsUtils.getControls = (oldControls: any, newControls: any) => {
|
|
244
253
|
|
245
254
|
hasPollingQAControlChanged:
|
246
255
|
current?.pollingQAControl?.enabled !== previous?.pollingQAControl?.enabled,
|
256
|
+
|
257
|
+
hasAutoEndMeetingChanged:
|
258
|
+
current?.autoEndMeetingWarning?.enabled !== previous?.autoEndMeetingWarning?.enabled ||
|
259
|
+
current?.autoEndMeetingWarning?.extensionDurationMinutes !==
|
260
|
+
previous?.autoEndMeetingWarning?.extensionDurationMinutes ||
|
261
|
+
current?.autoEndMeetingWarning?.countdownDurationMinutes !==
|
262
|
+
previous?.autoEndMeetingWarning?.countdownDurationMinutes ||
|
263
|
+
current?.autoEndMeetingWarning?.countdownStartedAt !==
|
264
|
+
previous?.autoEndMeetingWarning?.countdownStartedAt,
|
247
265
|
},
|
248
266
|
};
|
249
267
|
};
|
package/src/locus-info/index.ts
CHANGED
@@ -343,7 +343,7 @@ export default class LocusInfo extends EventsScope {
|
|
343
343
|
// For 1:1 space meeting the conversation Url does not exist in locus.conversation
|
344
344
|
this.updateConversationUrl(locus.conversationUrl, locus.info);
|
345
345
|
this.updateControls(locus.controls, locus.self);
|
346
|
-
this.updateLocusUrl(locus.url);
|
346
|
+
this.updateLocusUrl(locus.url, ControlsUtils.isMainSessionDTO(locus));
|
347
347
|
this.updateFullState(locus.fullState);
|
348
348
|
this.updateMeetingInfo(locus.info);
|
349
349
|
this.updateEmbeddedApps(locus.embeddedApps);
|
@@ -549,7 +549,7 @@ export default class LocusInfo extends EventsScope {
|
|
549
549
|
this.updateCreated(locus.created);
|
550
550
|
this.updateFullState(locus.fullState);
|
551
551
|
this.updateHostInfo(locus.host);
|
552
|
-
this.updateLocusUrl(locus.url);
|
552
|
+
this.updateLocusUrl(locus.url, ControlsUtils.isMainSessionDTO(locus));
|
553
553
|
this.updateMeetingInfo(locus.info, locus.self);
|
554
554
|
this.updateMediaShares(locus.mediaShares);
|
555
555
|
this.updateParticipantsUrl(locus.participantsUrl);
|
@@ -895,6 +895,7 @@ export default class LocusInfo extends EventsScope {
|
|
895
895
|
hasAnnotationControlChanged,
|
896
896
|
hasRemoteDesktopControlChanged,
|
897
897
|
hasPollingQAControlChanged,
|
898
|
+
hasAutoEndMeetingChanged,
|
898
899
|
},
|
899
900
|
current,
|
900
901
|
} = ControlsUtils.getControls(this.controls, controls);
|
@@ -1169,6 +1170,14 @@ export default class LocusInfo extends EventsScope {
|
|
1169
1170
|
);
|
1170
1171
|
}
|
1171
1172
|
|
1173
|
+
if (hasAutoEndMeetingChanged) {
|
1174
|
+
this.emitScoped(
|
1175
|
+
{file: 'locus-info', function: 'updateControls'},
|
1176
|
+
LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED,
|
1177
|
+
{state: current.autoEndMeetingWarning}
|
1178
|
+
);
|
1179
|
+
}
|
1180
|
+
|
1172
1181
|
this.controls = controls;
|
1173
1182
|
}
|
1174
1183
|
}
|
@@ -1732,10 +1741,11 @@ export default class LocusInfo extends EventsScope {
|
|
1732
1741
|
/**
|
1733
1742
|
* handles when the locus.url is updated
|
1734
1743
|
* @param {String} url
|
1744
|
+
* @param {Boolean} isMainLocus
|
1735
1745
|
* @returns {undefined}
|
1736
1746
|
* emits internal event locus_info_update_url
|
1737
1747
|
*/
|
1738
|
-
updateLocusUrl(url: string) {
|
1748
|
+
updateLocusUrl(url: string, isMainLocus = true) {
|
1739
1749
|
if (url && this.url !== url) {
|
1740
1750
|
this.url = url;
|
1741
1751
|
this.updateMeeting({locusUrl: url});
|
@@ -1745,7 +1755,7 @@ export default class LocusInfo extends EventsScope {
|
|
1745
1755
|
function: 'updateLocusUrl',
|
1746
1756
|
},
|
1747
1757
|
EVENTS.LOCUS_INFO_UPDATE_URL,
|
1748
|
-
url
|
1758
|
+
{url, isMainLocus}
|
1749
1759
|
);
|
1750
1760
|
}
|
1751
1761
|
}
|
@@ -92,6 +92,7 @@ interface IInMeetingActions {
|
|
92
92
|
canDoVideo?: boolean;
|
93
93
|
canAnnotate?: boolean;
|
94
94
|
canUseVoip?: boolean;
|
95
|
+
showAutoEndMeetingWarning?: boolean;
|
95
96
|
supportHQV?: boolean;
|
96
97
|
supportHDV?: boolean;
|
97
98
|
canShareWhiteBoard?: boolean;
|
@@ -284,6 +285,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
284
285
|
|
285
286
|
canUseVoip = null;
|
286
287
|
|
288
|
+
showAutoEndMeetingWarning = null;
|
289
|
+
|
287
290
|
supportHQV = null;
|
288
291
|
|
289
292
|
enforceVirtualBackground = null;
|
@@ -405,6 +408,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
405
408
|
canShareFile: this.canShareFile,
|
406
409
|
canShareApplication: this.canShareApplication,
|
407
410
|
canShareCamera: this.canShareCamera,
|
411
|
+
showAutoEndMeetingWarning: this.showAutoEndMeetingWarning,
|
408
412
|
canShareDesktop: this.canShareDesktop,
|
409
413
|
canShareContent: this.canShareContent,
|
410
414
|
canTransferFile: this.canTransferFile,
|
package/src/meeting/index.ts
CHANGED
@@ -2976,6 +2976,18 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
2976
2976
|
);
|
2977
2977
|
});
|
2978
2978
|
|
2979
|
+
this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED, ({state}) => {
|
2980
|
+
Trigger.trigger(
|
2981
|
+
this,
|
2982
|
+
{
|
2983
|
+
file: 'meeting/index',
|
2984
|
+
function: 'setupLocusControlsListener',
|
2985
|
+
},
|
2986
|
+
EVENT_TRIGGERS.MEETING_CONTROLS_AUTO_END_MEETING_WARNING_UPDATED,
|
2987
|
+
{state}
|
2988
|
+
);
|
2989
|
+
});
|
2990
|
+
|
2979
2991
|
this.locusInfo.on(LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED, ({state}) => {
|
2980
2992
|
Trigger.trigger(
|
2981
2993
|
this,
|
@@ -3356,27 +3368,31 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
3356
3368
|
* @memberof Meeting
|
3357
3369
|
*/
|
3358
3370
|
private setUpLocusUrlListener() {
|
3359
|
-
this.locusInfo.on(
|
3360
|
-
|
3361
|
-
|
3362
|
-
|
3363
|
-
|
3364
|
-
|
3365
|
-
|
3366
|
-
|
3367
|
-
|
3368
|
-
|
3371
|
+
this.locusInfo.on(
|
3372
|
+
EVENTS.LOCUS_INFO_UPDATE_URL,
|
3373
|
+
(payload: {url: string; isMainLocus?: boolean}) => {
|
3374
|
+
const {url, isMainLocus} = payload;
|
3375
|
+
this.members.locusUrlUpdate(url);
|
3376
|
+
this.breakouts.locusUrlUpdate(url);
|
3377
|
+
this.simultaneousInterpretation.locusUrlUpdate(url);
|
3378
|
+
this.annotation.locusUrlUpdate(url);
|
3379
|
+
this.locusUrl = url;
|
3380
|
+
this.locusId = this.locusUrl?.split('/').pop();
|
3381
|
+
this.recordingController.setLocusUrl(this.locusUrl);
|
3382
|
+
this.controlsOptionsManager.setLocusUrl(this.locusUrl, !!isMainLocus);
|
3383
|
+
this.webinar.locusUrlUpdate(url);
|
3369
3384
|
|
3370
|
-
|
3371
|
-
|
3372
|
-
|
3373
|
-
|
3374
|
-
|
3375
|
-
|
3376
|
-
|
3377
|
-
|
3378
|
-
|
3379
|
-
|
3385
|
+
Trigger.trigger(
|
3386
|
+
this,
|
3387
|
+
{
|
3388
|
+
file: 'meeting/index',
|
3389
|
+
function: 'setUpLocusSelfListener',
|
3390
|
+
},
|
3391
|
+
EVENT_TRIGGERS.MEETING_LOCUS_URL_UPDATE,
|
3392
|
+
{locusUrl: url}
|
3393
|
+
);
|
3394
|
+
}
|
3395
|
+
);
|
3380
3396
|
}
|
3381
3397
|
|
3382
3398
|
/**
|
@@ -4219,6 +4235,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
4219
4235
|
this.userDisplayHints,
|
4220
4236
|
this.selfUserPolicies
|
4221
4237
|
),
|
4238
|
+
showAutoEndMeetingWarning: MeetingUtil.showAutoEndMeetingWarning(this.userDisplayHints),
|
4222
4239
|
canRaiseHand: MeetingUtil.canUserRaiseHand(this.userDisplayHints),
|
4223
4240
|
canLowerAllHands: MeetingUtil.canUserLowerAllHands(this.userDisplayHints),
|
4224
4241
|
canLowerSomeoneElsesHand: MeetingUtil.canUserLowerSomeoneElsesHand(this.userDisplayHints),
|
@@ -9449,6 +9466,36 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
9449
9466
|
return Promise.reject(new Error('Error sending reaction, service url not found.'));
|
9450
9467
|
}
|
9451
9468
|
|
9469
|
+
/**
|
9470
|
+
* Extend the current meeting duration.
|
9471
|
+
*
|
9472
|
+
* @param {number} extensionMinutes - how many minutes to extend
|
9473
|
+
* @returns {Promise}
|
9474
|
+
* @public
|
9475
|
+
* @memberof Meeting
|
9476
|
+
*/
|
9477
|
+
public extendMeeting({
|
9478
|
+
meetingPolicyUrl,
|
9479
|
+
meetingInstanceId,
|
9480
|
+
participantId,
|
9481
|
+
extensionMinutes = 30,
|
9482
|
+
}) {
|
9483
|
+
if (!meetingInstanceId || !participantId) {
|
9484
|
+
return Promise.reject(new Error('Missing meetingInstanceId or participantId'));
|
9485
|
+
}
|
9486
|
+
|
9487
|
+
if (!meetingPolicyUrl) {
|
9488
|
+
return Promise.reject(new Error('Missing meetingPolicyUrl'));
|
9489
|
+
}
|
9490
|
+
|
9491
|
+
return this.meetingRequest.extendMeeting({
|
9492
|
+
meetingInstanceId,
|
9493
|
+
participantId,
|
9494
|
+
extensionMinutes,
|
9495
|
+
meetingPolicyUrl,
|
9496
|
+
});
|
9497
|
+
}
|
9498
|
+
|
9452
9499
|
/**
|
9453
9500
|
* Method to enable or disable reactions inside the meeting.
|
9454
9501
|
*
|