@webex/plugin-meetings 3.9.0-next.24 → 3.9.0-next.26
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 +6 -0
- package/dist/constants.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 +9 -0
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +6 -0
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +66 -24
- 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 +9 -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 +5 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +6 -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 +3 -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 +8 -0
- package/src/locus-info/controlsUtils.ts +18 -0
- package/src/locus-info/index.ts +9 -0
- package/src/meeting/in-meeting-actions.ts +12 -0
- package/src/meeting/index.ts +45 -0
- package/src/meeting/request.ts +38 -0
- package/src/meeting/util.ts +9 -0
- package/src/member/index.ts +10 -0
- package/src/member/util.ts +14 -0
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/meeting/in-meeting-actions.ts +6 -0
- package/test/unit/spec/meeting/index.js +22 -0
- package/test/unit/spec/meeting/utils.js +4 -1
- 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;
|
|
@@ -792,6 +794,8 @@ export declare const DISPLAY_HINTS: {
|
|
|
792
794
|
LOWER_SOMEONE_ELSES_HAND: string;
|
|
793
795
|
LEAVE_TRANSFER_HOST_END_MEETING: string;
|
|
794
796
|
LEAVE_END_MEETING: string;
|
|
797
|
+
STREAMING_STATUS_STARTED: string;
|
|
798
|
+
STREAMING_STATUS_STOPPED: string;
|
|
795
799
|
CAPTION_START: string;
|
|
796
800
|
CAPTION_STATUS_ACTIVE: string;
|
|
797
801
|
MANUAL_CAPTION_START: string;
|
|
@@ -860,6 +864,7 @@ export declare const DISPLAY_HINTS: {
|
|
|
860
864
|
SHOW_POST_MEETING_DATA_CONSENT_PROMPT: string;
|
|
861
865
|
ENABLE_ANNOTATION_MEETING_OPTION: string;
|
|
862
866
|
DISABLE_ANNOTATION_MEETING_OPTION: string;
|
|
867
|
+
SHOW_AUTO_END_MEETING_WARNING: string;
|
|
863
868
|
ENABLE_RDC_MEETING_OPTION: string;
|
|
864
869
|
DISABLE_RDC_MEETING_OPTION: string;
|
|
865
870
|
ENABLE_ATTENDEE_START_POLLING_QA: string;
|
|
@@ -37,6 +37,8 @@ interface IInMeetingActions {
|
|
|
37
37
|
isLocalRecordingStarted?: boolean;
|
|
38
38
|
isLocalRecordingStopped?: boolean;
|
|
39
39
|
isLocalRecordingPaused?: boolean;
|
|
40
|
+
isLocalStreamingStarted?: boolean;
|
|
41
|
+
isLocalStreamingStopped?: boolean;
|
|
40
42
|
isManualCaptionActive?: boolean;
|
|
41
43
|
isSaveTranscriptsEnabled?: boolean;
|
|
42
44
|
isSpokenLanguageAutoDetectionEnabled?: boolean;
|
|
@@ -87,6 +89,7 @@ interface IInMeetingActions {
|
|
|
87
89
|
canDoVideo?: boolean;
|
|
88
90
|
canAnnotate?: boolean;
|
|
89
91
|
canUseVoip?: boolean;
|
|
92
|
+
showAutoEndMeetingWarning?: boolean;
|
|
90
93
|
supportHQV?: boolean;
|
|
91
94
|
supportHDV?: boolean;
|
|
92
95
|
canShareWhiteBoard?: boolean;
|
|
@@ -147,6 +150,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
147
150
|
isLocalRecordingStarted: any;
|
|
148
151
|
isLocalRecordingPaused: any;
|
|
149
152
|
isManualCaptionActive: any;
|
|
153
|
+
isLocalStreamingStarted: any;
|
|
154
|
+
isLocalStreamingStopped: any;
|
|
150
155
|
isSaveTranscriptsEnabled: any;
|
|
151
156
|
isSpokenLanguageAutoDetectionEnabled: any;
|
|
152
157
|
isWebexAssistantActive: any;
|
|
@@ -196,6 +201,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
196
201
|
canDoVideo: any;
|
|
197
202
|
canAnnotate: any;
|
|
198
203
|
canUseVoip: any;
|
|
204
|
+
showAutoEndMeetingWarning: any;
|
|
199
205
|
supportHQV: any;
|
|
200
206
|
enforceVirtualBackground: any;
|
|
201
207
|
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.
|
|
@@ -80,6 +80,8 @@ declare const MeetingUtil: {
|
|
|
80
80
|
isLocalRecordingStarted: (displayHints: any) => any;
|
|
81
81
|
isLocalRecordingStopped: (displayHints: any) => any;
|
|
82
82
|
isLocalRecordingPaused: (displayHints: any) => any;
|
|
83
|
+
isLocalStreamingStarted: (displayHints: any) => any;
|
|
84
|
+
isLocalStreamingStopped: (displayHints: any) => any;
|
|
83
85
|
canStopManualCaption: (displayHints: any) => any;
|
|
84
86
|
isManualCaptionActive: (displayHints: any) => any;
|
|
85
87
|
isSpokenLanguageAutoDetectionEnabled: (displayHints: any) => any;
|
|
@@ -88,6 +90,7 @@ declare const MeetingUtil: {
|
|
|
88
90
|
isRealTimeTranslationEnabled: (displayHints: any) => any;
|
|
89
91
|
canSelectSpokenLanguages: (displayHints: any) => any;
|
|
90
92
|
waitingForOthersToJoin: (displayHints: any) => any;
|
|
93
|
+
showAutoEndMeetingWarning: (displayHints: any) => any;
|
|
91
94
|
canSendReactions: (originalValue: any, displayHints: any) => any;
|
|
92
95
|
canUserRenameSelfAndObserved: (displayHints: any) => any;
|
|
93
96
|
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',
|
|
@@ -961,6 +964,8 @@ export const DISPLAY_HINTS = {
|
|
|
961
964
|
LOWER_SOMEONE_ELSES_HAND: 'LOWER_SOMEONE_ELSES_HAND',
|
|
962
965
|
LEAVE_TRANSFER_HOST_END_MEETING: 'LEAVE_TRANSFER_HOST_END_MEETING',
|
|
963
966
|
LEAVE_END_MEETING: 'LEAVE_END_MEETING',
|
|
967
|
+
STREAMING_STATUS_STARTED: 'STREAMING_STATUS_STARTED',
|
|
968
|
+
STREAMING_STATUS_STOPPED: 'STREAMING_STATUS_STOPPED',
|
|
964
969
|
CAPTION_START: 'CAPTION_START',
|
|
965
970
|
CAPTION_STATUS_ACTIVE: 'CAPTION_STATUS_ACTIVE',
|
|
966
971
|
MANUAL_CAPTION_START: 'MANUAL_CAPTION_START',
|
|
@@ -1052,6 +1057,9 @@ export const DISPLAY_HINTS = {
|
|
|
1052
1057
|
ENABLE_ANNOTATION_MEETING_OPTION: 'ENABLE_ANNOTATION_MEETING_OPTION',
|
|
1053
1058
|
DISABLE_ANNOTATION_MEETING_OPTION: 'DISABLE_ANNOTATION_MEETING_OPTION',
|
|
1054
1059
|
|
|
1060
|
+
// Auto End Meeting Warning
|
|
1061
|
+
SHOW_AUTO_END_MEETING_WARNING: 'SHOW_AUTO_END_MEETING_WARNING',
|
|
1062
|
+
|
|
1055
1063
|
// Remote Desktop Control
|
|
1056
1064
|
ENABLE_RDC_MEETING_OPTION: 'ENABLE_RDC_MEETING_OPTION',
|
|
1057
1065
|
DISABLE_RDC_MEETING_OPTION: 'DISABLE_RDC_MEETING_OPTION',
|
|
@@ -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
|
@@ -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
|
}
|
|
@@ -41,6 +41,8 @@ interface IInMeetingActions {
|
|
|
41
41
|
isLocalRecordingStarted?: boolean;
|
|
42
42
|
isLocalRecordingStopped?: boolean;
|
|
43
43
|
isLocalRecordingPaused?: boolean;
|
|
44
|
+
isLocalStreamingStarted?: boolean;
|
|
45
|
+
isLocalStreamingStopped?: boolean;
|
|
44
46
|
|
|
45
47
|
isManualCaptionActive?: boolean;
|
|
46
48
|
isSaveTranscriptsEnabled?: boolean;
|
|
@@ -92,6 +94,7 @@ interface IInMeetingActions {
|
|
|
92
94
|
canDoVideo?: boolean;
|
|
93
95
|
canAnnotate?: boolean;
|
|
94
96
|
canUseVoip?: boolean;
|
|
97
|
+
showAutoEndMeetingWarning?: boolean;
|
|
95
98
|
supportHQV?: boolean;
|
|
96
99
|
supportHDV?: boolean;
|
|
97
100
|
canShareWhiteBoard?: boolean;
|
|
@@ -186,6 +189,10 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
186
189
|
|
|
187
190
|
isManualCaptionActive = null;
|
|
188
191
|
|
|
192
|
+
isLocalStreamingStarted = null;
|
|
193
|
+
|
|
194
|
+
isLocalStreamingStopped = null;
|
|
195
|
+
|
|
189
196
|
isSaveTranscriptsEnabled = null;
|
|
190
197
|
|
|
191
198
|
isSpokenLanguageAutoDetectionEnabled = null;
|
|
@@ -284,6 +291,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
284
291
|
|
|
285
292
|
canUseVoip = null;
|
|
286
293
|
|
|
294
|
+
showAutoEndMeetingWarning = null;
|
|
295
|
+
|
|
287
296
|
supportHQV = null;
|
|
288
297
|
|
|
289
298
|
enforceVirtualBackground = null;
|
|
@@ -363,6 +372,8 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
363
372
|
isLocalRecordingStarted: this.isLocalRecordingStarted,
|
|
364
373
|
isLocalRecordingStopped: this.isLocalRecordingStopped,
|
|
365
374
|
isLocalRecordingPaused: this.isLocalRecordingPaused,
|
|
375
|
+
isLocalStreamingStarted: this.isLocalStreamingStarted,
|
|
376
|
+
isLocalStreamingStopped: this.isLocalStreamingStopped,
|
|
366
377
|
canStopManualCaption: this.canStopManualCaption,
|
|
367
378
|
isManualCaptionActive: this.isManualCaptionActive,
|
|
368
379
|
isSaveTranscriptsEnabled: this.isSaveTranscriptsEnabled,
|
|
@@ -405,6 +416,7 @@ export default class InMeetingActions implements IInMeetingActions {
|
|
|
405
416
|
canShareFile: this.canShareFile,
|
|
406
417
|
canShareApplication: this.canShareApplication,
|
|
407
418
|
canShareCamera: this.canShareCamera,
|
|
419
|
+
showAutoEndMeetingWarning: this.showAutoEndMeetingWarning,
|
|
408
420
|
canShareDesktop: this.canShareDesktop,
|
|
409
421
|
canShareContent: this.canShareContent,
|
|
410
422
|
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,
|
|
@@ -4223,6 +4235,7 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4223
4235
|
this.userDisplayHints,
|
|
4224
4236
|
this.selfUserPolicies
|
|
4225
4237
|
),
|
|
4238
|
+
showAutoEndMeetingWarning: MeetingUtil.showAutoEndMeetingWarning(this.userDisplayHints),
|
|
4226
4239
|
canRaiseHand: MeetingUtil.canUserRaiseHand(this.userDisplayHints),
|
|
4227
4240
|
canLowerAllHands: MeetingUtil.canUserLowerAllHands(this.userDisplayHints),
|
|
4228
4241
|
canLowerSomeoneElsesHand: MeetingUtil.canUserLowerSomeoneElsesHand(this.userDisplayHints),
|
|
@@ -4238,6 +4251,8 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
4238
4251
|
isLocalRecordingStarted: MeetingUtil.isLocalRecordingStarted(this.userDisplayHints),
|
|
4239
4252
|
isLocalRecordingStopped: MeetingUtil.isLocalRecordingStopped(this.userDisplayHints),
|
|
4240
4253
|
isLocalRecordingPaused: MeetingUtil.isLocalRecordingPaused(this.userDisplayHints),
|
|
4254
|
+
isLocalStreamingStarted: MeetingUtil.isLocalStreamingStarted(this.userDisplayHints),
|
|
4255
|
+
isLocalStreamingStopped: MeetingUtil.isLocalStreamingStopped(this.userDisplayHints),
|
|
4241
4256
|
isManualCaptionActive: MeetingUtil.isManualCaptionActive(this.userDisplayHints),
|
|
4242
4257
|
isSaveTranscriptsEnabled: MeetingUtil.isSaveTranscriptsEnabled(this.userDisplayHints),
|
|
4243
4258
|
isSpokenLanguageAutoDetectionEnabled: MeetingUtil.isSpokenLanguageAutoDetectionEnabled(
|
|
@@ -9453,6 +9468,36 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
9453
9468
|
return Promise.reject(new Error('Error sending reaction, service url not found.'));
|
|
9454
9469
|
}
|
|
9455
9470
|
|
|
9471
|
+
/**
|
|
9472
|
+
* Extend the current meeting duration.
|
|
9473
|
+
*
|
|
9474
|
+
* @param {number} extensionMinutes - how many minutes to extend
|
|
9475
|
+
* @returns {Promise}
|
|
9476
|
+
* @public
|
|
9477
|
+
* @memberof Meeting
|
|
9478
|
+
*/
|
|
9479
|
+
public extendMeeting({
|
|
9480
|
+
meetingPolicyUrl,
|
|
9481
|
+
meetingInstanceId,
|
|
9482
|
+
participantId,
|
|
9483
|
+
extensionMinutes = 30,
|
|
9484
|
+
}) {
|
|
9485
|
+
if (!meetingInstanceId || !participantId) {
|
|
9486
|
+
return Promise.reject(new Error('Missing meetingInstanceId or participantId'));
|
|
9487
|
+
}
|
|
9488
|
+
|
|
9489
|
+
if (!meetingPolicyUrl) {
|
|
9490
|
+
return Promise.reject(new Error('Missing meetingPolicyUrl'));
|
|
9491
|
+
}
|
|
9492
|
+
|
|
9493
|
+
return this.meetingRequest.extendMeeting({
|
|
9494
|
+
meetingInstanceId,
|
|
9495
|
+
participantId,
|
|
9496
|
+
extensionMinutes,
|
|
9497
|
+
meetingPolicyUrl,
|
|
9498
|
+
});
|
|
9499
|
+
}
|
|
9500
|
+
|
|
9456
9501
|
/**
|
|
9457
9502
|
* Method to enable or disable reactions inside the meeting.
|
|
9458
9503
|
*
|
package/src/meeting/request.ts
CHANGED
|
@@ -886,6 +886,44 @@ export default class MeetingRequest extends StatelessWebexPlugin {
|
|
|
886
886
|
});
|
|
887
887
|
}
|
|
888
888
|
|
|
889
|
+
/**
|
|
890
|
+
* Extend the current meeting duration.
|
|
891
|
+
*
|
|
892
|
+
* @param {Object} params - Parameters for extending the meeting.
|
|
893
|
+
* @param {string} params.meetingInstanceId - The unique ID of the meeting instance.
|
|
894
|
+
* @param {string} params.participantId - The ID of the participant requesting the extension.
|
|
895
|
+
* @param {number} params.extensionMinutes - The number of minutes to extend the meeting by.
|
|
896
|
+
* @param {string} params.meetingPolicyUrl - The base URL for meeting policy service (dynamic, from locus links)
|
|
897
|
+
* @returns {Promise<any>} A promise that resolves with the server response.
|
|
898
|
+
*/
|
|
899
|
+
extendMeeting({
|
|
900
|
+
meetingInstanceId,
|
|
901
|
+
participantId,
|
|
902
|
+
extensionMinutes,
|
|
903
|
+
meetingPolicyUrl,
|
|
904
|
+
}: {
|
|
905
|
+
meetingInstanceId: string;
|
|
906
|
+
participantId: string;
|
|
907
|
+
extensionMinutes: number;
|
|
908
|
+
meetingPolicyUrl: string;
|
|
909
|
+
}) {
|
|
910
|
+
if (!meetingPolicyUrl) {
|
|
911
|
+
return Promise.reject(new Error('meetingPolicyUrl is required'));
|
|
912
|
+
}
|
|
913
|
+
const uri = `${meetingPolicyUrl}/continueMeeting`;
|
|
914
|
+
|
|
915
|
+
// @ts-ignore
|
|
916
|
+
return this.request({
|
|
917
|
+
method: HTTP_VERBS.POST,
|
|
918
|
+
uri,
|
|
919
|
+
body: {
|
|
920
|
+
meetingInstanceId,
|
|
921
|
+
requestParticipantId: participantId,
|
|
922
|
+
extensionMinutes,
|
|
923
|
+
},
|
|
924
|
+
});
|
|
925
|
+
}
|
|
926
|
+
|
|
889
927
|
/**
|
|
890
928
|
* Make a network request to enable or disable reactions.
|
|
891
929
|
* @param {boolean} options.enable - determines if we need to enable or disable.
|
package/src/meeting/util.ts
CHANGED
|
@@ -633,6 +633,12 @@ const MeetingUtil = {
|
|
|
633
633
|
isLocalRecordingPaused: (displayHints) =>
|
|
634
634
|
displayHints.includes(DISPLAY_HINTS.LOCAL_RECORDING_STATUS_PAUSED),
|
|
635
635
|
|
|
636
|
+
isLocalStreamingStarted: (displayHints) =>
|
|
637
|
+
displayHints.includes(DISPLAY_HINTS.STREAMING_STATUS_STARTED),
|
|
638
|
+
|
|
639
|
+
isLocalStreamingStopped: (displayHints) =>
|
|
640
|
+
displayHints.includes(DISPLAY_HINTS.STREAMING_STATUS_STOPPED),
|
|
641
|
+
|
|
636
642
|
canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),
|
|
637
643
|
|
|
638
644
|
isManualCaptionActive: (displayHints) =>
|
|
@@ -654,6 +660,9 @@ const MeetingUtil = {
|
|
|
654
660
|
|
|
655
661
|
waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),
|
|
656
662
|
|
|
663
|
+
showAutoEndMeetingWarning: (displayHints) =>
|
|
664
|
+
displayHints.includes(DISPLAY_HINTS.SHOW_AUTO_END_MEETING_WARNING),
|
|
665
|
+
|
|
657
666
|
canSendReactions: (originalValue, displayHints) => {
|
|
658
667
|
if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {
|
|
659
668
|
return true;
|
package/src/member/index.ts
CHANGED
|
@@ -42,6 +42,7 @@ export default class Member {
|
|
|
42
42
|
status: any;
|
|
43
43
|
supportsBreakouts: boolean;
|
|
44
44
|
supportsInterpretation: boolean;
|
|
45
|
+
supportsSingleUserAutoEndMeeting: boolean;
|
|
45
46
|
supportLiveAnnotation: boolean;
|
|
46
47
|
type: any;
|
|
47
48
|
namespace = MEETINGS;
|
|
@@ -130,6 +131,13 @@ export default class Member {
|
|
|
130
131
|
* @memberof Member
|
|
131
132
|
*/
|
|
132
133
|
this.supportsBreakouts = null;
|
|
134
|
+
/**
|
|
135
|
+
* @instance
|
|
136
|
+
* @type {Boolean}
|
|
137
|
+
* @public
|
|
138
|
+
* @memberof Member
|
|
139
|
+
*/
|
|
140
|
+
this.supportsSingleUserAutoEndMeeting = null;
|
|
133
141
|
/**
|
|
134
142
|
* @instance
|
|
135
143
|
* @type {Boolean}
|
|
@@ -339,6 +347,8 @@ export default class Member {
|
|
|
339
347
|
this.isVideoMuted = MemberUtil.isVideoMuted(participant);
|
|
340
348
|
this.isHandRaised = MemberUtil.isHandRaised(participant);
|
|
341
349
|
this.supportsBreakouts = MemberUtil.isBreakoutsSupported(participant);
|
|
350
|
+
this.supportsSingleUserAutoEndMeeting =
|
|
351
|
+
MemberUtil.isSupportsSingleUserAutoEndMeeting(participant);
|
|
342
352
|
this.supportsInterpretation = MemberUtil.isInterpretationSupported(participant);
|
|
343
353
|
this.supportLiveAnnotation = MemberUtil.isLiveAnnotationSupported(participant);
|
|
344
354
|
this.isGuest = MemberUtil.isGuest(participant);
|
package/src/member/util.ts
CHANGED
|
@@ -207,6 +207,20 @@ const MemberUtil = {
|
|
|
207
207
|
return !participant.doesNotSupportBreakouts;
|
|
208
208
|
},
|
|
209
209
|
|
|
210
|
+
/**
|
|
211
|
+
* @param {Object} participant - The locus participant object.
|
|
212
|
+
* @returns {Boolean}
|
|
213
|
+
*/
|
|
214
|
+
isSupportsSingleUserAutoEndMeeting: (participant) => {
|
|
215
|
+
if (!participant) {
|
|
216
|
+
throw new ParameterError(
|
|
217
|
+
'Single user auto end meeting support could not be processed, participant is undefined.'
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return !participant.doesNotSupportSingleUserAutoEndMeeting;
|
|
222
|
+
},
|
|
223
|
+
|
|
210
224
|
/**
|
|
211
225
|
* @param {Object} participant - The locus participant object.
|
|
212
226
|
* @returns {Boolean}
|