@webex/plugin-meetings 3.0.0-beta.116 → 3.0.0-beta.118
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/annotation/annotation.types.js.map +1 -1
- package/dist/annotation/index.js +1 -1
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +23 -6
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/index.js +178 -139
- package/dist/breakouts/index.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +29 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/meeting/index.js +11 -43
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +3 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +1 -1
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +27 -20
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +463 -426
- package/dist/meeting/util.js.map +1 -1
- package/dist/members/index.js +4 -1
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +75 -45
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +308 -317
- package/dist/members/util.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +1 -0
- package/dist/types/meeting/index.d.ts +20 -21
- package/dist/types/meeting/locusMediaRequest.d.ts +2 -0
- package/dist/types/meeting/request.d.ts +16 -8
- package/dist/types/meeting/util.d.ts +75 -1
- package/dist/types/members/request.d.ts +56 -11
- package/dist/types/members/util.d.ts +209 -1
- package/package.json +19 -19
- package/src/annotation/annotation.types.ts +1 -0
- package/src/annotation/index.ts +1 -1
- package/src/breakouts/breakout.ts +26 -4
- package/src/breakouts/index.ts +32 -17
- package/src/locus-info/mediaSharesUtils.ts +32 -0
- package/src/meeting/index.ts +12 -42
- package/src/meeting/locusMediaRequest.ts +6 -0
- package/src/meeting/muteState.ts +1 -1
- package/src/meeting/request.ts +26 -17
- package/src/meeting/util.ts +446 -410
- package/src/members/index.ts +7 -1
- package/src/members/request.ts +61 -21
- package/src/members/util.ts +316 -326
- package/test/unit/spec/annotation/index.ts +2 -1
- package/test/unit/spec/breakouts/breakout.ts +26 -7
- package/test/unit/spec/breakouts/index.ts +48 -3
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/meeting/index.js +30 -31
- package/test/unit/spec/meeting/locusMediaRequest.ts +25 -3
- package/test/unit/spec/meeting/muteState.js +5 -2
- package/test/unit/spec/meeting/request.js +215 -42
- package/test/unit/spec/meeting/utils.js +151 -7
- package/test/unit/spec/members/index.js +22 -1
- package/test/unit/spec/members/request.js +167 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["annotation.types.ts"],"sourcesContent":["/**\n * Type for an StrokeData Object\n */\ntype StrokeData = {\n fromUserId: string;\n fromDeviceUrl: string;\n toUserId: string;\n content: string;\n shareInstanceId: string;\n encryptionKeyUrl: string;\n};\n\ntype RequestData = {\n toUserId: string;\n toDeviceUrl: string;\n shareInstanceId: string;\n};\n\ntype CommandRequestBody = {\n actionType: string;\n resourceType: string;\n shareInstanceId: string;\n receivers?: any[];\n};\n\ninterface IAnnotationChannel {\n // === below is for presenter\n acceptRequest: (approval) => undefined | Promise<void>;\n declineRequest: (approval) => undefined | Promise<void>;\n closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n changeAnnotationOptions: (options, meeting) => undefined | Promise<void>;\n // === below is for attendee\n approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;\n sendStrokeData: (strokeData: StrokeData) => void;\n // =====\n approvalUrlUpdate: (approvalUrl: string) => void;\n locusUrlUpdate: (locusUrl: string) => void;\n}\n\nexport type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel};\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["annotation.types.ts"],"sourcesContent":["/**\n * Type for an StrokeData Object\n */\ntype StrokeData = {\n fromUserId: string;\n fromDeviceUrl: string;\n toUserId: string;\n content: string;\n shareInstanceId: string;\n encryptionKeyUrl: string;\n version: string;\n};\n\ntype RequestData = {\n toUserId: string;\n toDeviceUrl: string;\n shareInstanceId: string;\n};\n\ntype CommandRequestBody = {\n actionType: string;\n resourceType: string;\n shareInstanceId: string;\n receivers?: any[];\n};\n\ninterface IAnnotationChannel {\n // === below is for presenter\n acceptRequest: (approval) => undefined | Promise<void>;\n declineRequest: (approval) => undefined | Promise<void>;\n closeAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n changeAnnotationOptions: (options, meeting) => undefined | Promise<void>;\n // === below is for attendee\n approveAnnotation: (requestData: RequestData) => undefined | Promise<void>;\n cancelApproveAnnotation: (requestData: RequestData, approval) => undefined | Promise<void>;\n sendStrokeData: (strokeData: StrokeData) => void;\n // =====\n approvalUrlUpdate: (approvalUrl: string) => void;\n locusUrlUpdate: (locusUrl: string) => void;\n}\n\nexport type {StrokeData, RequestData, CommandRequestBody, IAnnotationChannel};\n"],"mappings":""}
|
package/dist/annotation/index.js
CHANGED
|
@@ -330,7 +330,7 @@ var AnnotationChannel = /*#__PURE__*/function (_WebexPlugin) {
|
|
|
330
330
|
type: _constants.ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,
|
|
331
331
|
locusUrl: this.locusUrl,
|
|
332
332
|
content: encryptedContent,
|
|
333
|
-
version:
|
|
333
|
+
version: strokeData.version,
|
|
334
334
|
fromUserId: strokeData.fromUserId,
|
|
335
335
|
fromDeviceUrl: strokeData.fromDeviceUrl,
|
|
336
336
|
shareInstanceId: strokeData.shareInstanceId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AnnotationChannel","args","ANNOTATION","actionType","requestData","body","resourceType","shareInstanceId","toUserId","receivers","participantId","deviceUrl","toDeviceUrl","request","method","HTTP_VERBS","POST","url","approvalUrl","encryptionKeyUrl","content","webex","internal","encryption","decryptText","then","res","encryptText","strokeData","llm","isConnected","encryptContent","encryptedContent","publishEncrypted","seqNum","decryptContent","decryptedContent","TriggerProxy","trigger","file","function","EVENT_TRIGGERS","ANNOTATION_STROKE_DATA","data","e","eventType","approval","ANNOTATION_RESOURCE_TYPE","ANNOTATION_COMMAND","type","payload","sequenceNumber","relayType","ANNOTATION_RELAY_TYPES","ANNOTATION_CLIENT","processStrokeMessage","hasSubscribedToEvents","mercury","on","eventCommandProcessor","eventDataProcessor","locusUrl","listenToEvents","PUT","ANNOTATION_ACTION_TYPE","ACCEPTED","DECLINED","sendAnnotationAction","REQUESTED","CANCELED","CLOSED","options","meeting","meetingRequest","changeMeetingFloor","id","recipients","route","getBinding","headers","to","value","sessionId","uuid","v4","ANNOTATION_REQUEST_TYPE","ANNOTATION_MESSAGE","version","fromUserId","fromDeviceUrl","locusId","split","pop","trackingId","config","trackingIdPrefix","toString","timestamp","Date","getTime","filterMessage","socket","send","WebexPlugin"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport TriggerProxy from '../common/events/trigger-proxy';\n\nimport {\n EVENT_TRIGGERS,\n ANNOTATION_RELAY_TYPES,\n ANNOTATION,\n ANNOTATION_REQUEST_TYPE,\n ANNOTATION_ACTION_TYPE,\n ANNOTATION_RESOURCE_TYPE,\n} from './constants';\n\nimport {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';\nimport {HTTP_VERBS} from '../constants';\n\n/**\n * @description Annotation to handle LLM and Mercury message and locus API\n * @class\n */\nclass AnnotationChannel extends WebexPlugin implements IAnnotationChannel {\n namespace = ANNOTATION;\n\n private seqNum: number;\n\n hasSubscribedToEvents: boolean;\n\n approvalUrl: string;\n locusUrl: string;\n deviceUrl: string;\n\n /**\n * Initializes annotation module\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n }\n\n /**\n * Process Stroke Data\n * @param {request} request stroke data\n * @returns {void}\n */\n private processStrokeMessage(request) {\n this.decryptContent(request.encryptionKeyUrl, request.content).then((decryptedContent) => {\n request.content = decryptedContent;\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'processStrokeMessage',\n },\n EVENT_TRIGGERS.ANNOTATION_STROKE_DATA,\n {\n data: request,\n }\n );\n });\n }\n\n /** bind all events from mercury\n * @param {Object} e\n * @returns {undefined}\n */\n private eventCommandProcessor(e) {\n if (\n e?.data?.eventType === 'locus.approval_request' &&\n e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&\n e?.data?.approval?.actionType\n ) {\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'approval_request',\n },\n EVENT_TRIGGERS.ANNOTATION_COMMAND,\n {\n type: e.data.approval.actionType,\n payload: e.data.approval,\n }\n );\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n }\n }\n\n /** bind all events from llm\n * @param {Object} e\n * @returns {undefined}\n */\n private eventDataProcessor(e) {\n switch (e?.data?.relayType) {\n case ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n this.processStrokeMessage(e.data.request);\n break;\n default:\n break;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.mercury.on(\n 'event:locus.approval_request',\n this.eventCommandProcessor,\n this\n );\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * set locusUrl\n * @param {string} locusUrl\n * @returns {void}\n */\n public locusUrlUpdate(locusUrl: string) {\n this.locusUrl = locusUrl;\n this.listenToEvents();\n }\n\n /**\n * set approved url\n * @param {string} approvalUrl\n * @returns {void}\n */\n public approvalUrlUpdate(approvalUrl: string) {\n this.approvalUrl = approvalUrl;\n }\n\n /**\n * accept request\n * @param {object} approval\n * @returns {Promise}\n */\n public acceptRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.ACCEPTED,\n },\n });\n }\n\n /**\n * presenter declined request annotation\n * @param {approval} approval\n * @returns {Promise}\n */\n public declineRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.DECLINED,\n },\n });\n }\n\n /**\n * request approved annotation\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n public approveAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.REQUESTED, requestData);\n }\n\n /**\n * cancel approved annotation\n * @param {object} requestData\n * @param {object} approval\n * @returns {Promise}\n */\n public cancelApproveAnnotation(requestData: RequestData, approval) {\n const body: CommandRequestBody = {\n actionType: ANNOTATION_ACTION_TYPE.CANCELED,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: `${approval.url}`,\n body,\n });\n }\n\n /**\n * close annotation\n * @param {object} requestData\n * @returns {Promise}\n */\n public closeAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.CLOSED, requestData);\n }\n\n /**\n * send annotation command\n * @param {ANNOTATION_ACTION_TYPE} actionType\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n private sendAnnotationAction = async (\n actionType: ANNOTATION_ACTION_TYPE,\n requestData: RequestData\n ): Promise<void> => {\n const body: CommandRequestBody = {\n actionType,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n if (requestData?.toUserId) {\n body.receivers = [{participantId: requestData.toUserId, deviceUrl: requestData.toDeviceUrl}];\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n url: `${this.approvalUrl}`,\n body,\n });\n };\n\n /**\n * decrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content encrypted content\n * @returns {string} decrypted content\n */\n private decryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * encrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content original content\n * @returns {string} encrypted content\n */\n private encryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * Sends stroke data to presenter\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n public sendStrokeData = (strokeData: StrokeData): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(\n (encryptedContent) => {\n this.publishEncrypted(encryptedContent, strokeData);\n }\n );\n };\n\n /**\n * Change annotation options\n * @param {object} options\n * @param {object} meeting\n * @returns {Promise}\n */\n public changeAnnotationOptions(options, meeting) {\n return meeting?.meetingRequest.changeMeetingFloor(options);\n }\n\n /**\n * private encrypted the strokes data\n * @param {string} encryptedContent\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {\n const data = {\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: strokeData.toUserId,\n },\n data: {\n eventType: 'relay.event',\n relayType: ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,\n request: {\n value: {\n sessionId: uuid.v4(),\n type: ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,\n locusUrl: this.locusUrl,\n content: encryptedContent,\n version: 'mVersion',\n fromUserId: strokeData.fromUserId,\n fromDeviceUrl: strokeData.fromDeviceUrl,\n shareInstanceId: strokeData.shareInstanceId,\n locusId: this.locusUrl && this.locusUrl.split('/').pop(),\n encryptionKeyUrl: strokeData.encryptionKeyUrl,\n },\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n timestamp: new Date().getTime(),\n sequenceNumber: this.seqNum,\n filterMessage: false,\n };\n\n // @ts-ignore\n this.webex.internal.llm.socket.send(data);\n this.seqNum += 1;\n }\n}\n\nexport default AnnotationChannel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AnnotationChannel","args","ANNOTATION","actionType","requestData","body","resourceType","shareInstanceId","toUserId","receivers","participantId","deviceUrl","toDeviceUrl","request","method","HTTP_VERBS","POST","url","approvalUrl","encryptionKeyUrl","content","webex","internal","encryption","decryptText","then","res","encryptText","strokeData","llm","isConnected","encryptContent","encryptedContent","publishEncrypted","seqNum","decryptContent","decryptedContent","TriggerProxy","trigger","file","function","EVENT_TRIGGERS","ANNOTATION_STROKE_DATA","data","e","eventType","approval","ANNOTATION_RESOURCE_TYPE","ANNOTATION_COMMAND","type","payload","sequenceNumber","relayType","ANNOTATION_RELAY_TYPES","ANNOTATION_CLIENT","processStrokeMessage","hasSubscribedToEvents","mercury","on","eventCommandProcessor","eventDataProcessor","locusUrl","listenToEvents","PUT","ANNOTATION_ACTION_TYPE","ACCEPTED","DECLINED","sendAnnotationAction","REQUESTED","CANCELED","CLOSED","options","meeting","meetingRequest","changeMeetingFloor","id","recipients","route","getBinding","headers","to","value","sessionId","uuid","v4","ANNOTATION_REQUEST_TYPE","ANNOTATION_MESSAGE","version","fromUserId","fromDeviceUrl","locusId","split","pop","trackingId","config","trackingIdPrefix","toString","timestamp","Date","getTime","filterMessage","socket","send","WebexPlugin"],"sources":["index.ts"],"sourcesContent":["import uuid from 'uuid';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport TriggerProxy from '../common/events/trigger-proxy';\n\nimport {\n EVENT_TRIGGERS,\n ANNOTATION_RELAY_TYPES,\n ANNOTATION,\n ANNOTATION_REQUEST_TYPE,\n ANNOTATION_ACTION_TYPE,\n ANNOTATION_RESOURCE_TYPE,\n} from './constants';\n\nimport {StrokeData, RequestData, IAnnotationChannel, CommandRequestBody} from './annotation.types';\nimport {HTTP_VERBS} from '../constants';\n\n/**\n * @description Annotation to handle LLM and Mercury message and locus API\n * @class\n */\nclass AnnotationChannel extends WebexPlugin implements IAnnotationChannel {\n namespace = ANNOTATION;\n\n private seqNum: number;\n\n hasSubscribedToEvents: boolean;\n\n approvalUrl: string;\n locusUrl: string;\n deviceUrl: string;\n\n /**\n * Initializes annotation module\n */\n constructor(...args) {\n super(...args);\n this.seqNum = 1;\n }\n\n /**\n * Process Stroke Data\n * @param {request} request stroke data\n * @returns {void}\n */\n private processStrokeMessage(request) {\n this.decryptContent(request.encryptionKeyUrl, request.content).then((decryptedContent) => {\n request.content = decryptedContent;\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'processStrokeMessage',\n },\n EVENT_TRIGGERS.ANNOTATION_STROKE_DATA,\n {\n data: request,\n }\n );\n });\n }\n\n /** bind all events from mercury\n * @param {Object} e\n * @returns {undefined}\n */\n private eventCommandProcessor(e) {\n if (\n e?.data?.eventType === 'locus.approval_request' &&\n e?.data?.approval?.resourceType === ANNOTATION_RESOURCE_TYPE &&\n e?.data?.approval?.actionType\n ) {\n TriggerProxy.trigger(\n this,\n {\n file: 'annotation',\n function: 'approval_request',\n },\n EVENT_TRIGGERS.ANNOTATION_COMMAND,\n {\n type: e.data.approval.actionType,\n payload: e.data.approval,\n }\n );\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n }\n }\n\n /** bind all events from llm\n * @param {Object} e\n * @returns {undefined}\n */\n private eventDataProcessor(e) {\n switch (e?.data?.relayType) {\n case ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT:\n this.seqNum = (e?.sequenceNumber || 0) + 1;\n this.processStrokeMessage(e.data.request);\n break;\n default:\n break;\n }\n }\n\n /**\n * Listen to websocket messages\n * @returns {undefined}\n */\n private listenToEvents() {\n if (!this.hasSubscribedToEvents) {\n // @ts-ignore\n this.webex.internal.mercury.on(\n 'event:locus.approval_request',\n this.eventCommandProcessor,\n this\n );\n // @ts-ignore\n this.webex.internal.llm.on('event:relay.event', this.eventDataProcessor, this);\n this.hasSubscribedToEvents = true;\n }\n }\n\n /**\n * set locusUrl\n * @param {string} locusUrl\n * @returns {void}\n */\n public locusUrlUpdate(locusUrl: string) {\n this.locusUrl = locusUrl;\n this.listenToEvents();\n }\n\n /**\n * set approved url\n * @param {string} approvalUrl\n * @returns {void}\n */\n public approvalUrlUpdate(approvalUrl: string) {\n this.approvalUrl = approvalUrl;\n }\n\n /**\n * accept request\n * @param {object} approval\n * @returns {Promise}\n */\n public acceptRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.ACCEPTED,\n },\n });\n }\n\n /**\n * presenter declined request annotation\n * @param {approval} approval\n * @returns {Promise}\n */\n public declineRequest(approval) {\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: approval.url,\n body: {\n resourceType: ANNOTATION_RESOURCE_TYPE,\n actionType: ANNOTATION_ACTION_TYPE.DECLINED,\n },\n });\n }\n\n /**\n * request approved annotation\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n public approveAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.REQUESTED, requestData);\n }\n\n /**\n * cancel approved annotation\n * @param {object} requestData\n * @param {object} approval\n * @returns {Promise}\n */\n public cancelApproveAnnotation(requestData: RequestData, approval) {\n const body: CommandRequestBody = {\n actionType: ANNOTATION_ACTION_TYPE.CANCELED,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.PUT,\n url: `${approval.url}`,\n body,\n });\n }\n\n /**\n * close annotation\n * @param {object} requestData\n * @returns {Promise}\n */\n public closeAnnotation(requestData: RequestData) {\n return this.sendAnnotationAction(ANNOTATION_ACTION_TYPE.CLOSED, requestData);\n }\n\n /**\n * send annotation command\n * @param {ANNOTATION_ACTION_TYPE} actionType\n * @param {RequestData} requestData\n * @returns {Promise}\n */\n private sendAnnotationAction = async (\n actionType: ANNOTATION_ACTION_TYPE,\n requestData: RequestData\n ): Promise<void> => {\n const body: CommandRequestBody = {\n actionType,\n resourceType: 'AnnotationOnShare',\n shareInstanceId: requestData.shareInstanceId,\n };\n if (requestData?.toUserId) {\n body.receivers = [{participantId: requestData.toUserId, deviceUrl: requestData.toDeviceUrl}];\n }\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n url: `${this.approvalUrl}`,\n body,\n });\n };\n\n /**\n * decrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content encrypted content\n * @returns {string} decrypted content\n */\n private decryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.decryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * encrypt data\n * @param {string} encryptionKeyUrl\n * @param {string} content original content\n * @returns {string} encrypted content\n */\n private encryptContent = (encryptionKeyUrl: string, content: string): Promise<any> => {\n // @ts-ignore\n return this.webex.internal.encryption.encryptText(encryptionKeyUrl, content).then((res) => {\n return res;\n });\n };\n\n /**\n * Sends stroke data to presenter\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n public sendStrokeData = (strokeData: StrokeData): void => {\n // @ts-ignore\n if (!this.webex.internal.llm.isConnected()) return;\n this.encryptContent(strokeData.encryptionKeyUrl, strokeData.content).then(\n (encryptedContent) => {\n this.publishEncrypted(encryptedContent, strokeData);\n }\n );\n };\n\n /**\n * Change annotation options\n * @param {object} options\n * @param {object} meeting\n * @returns {Promise}\n */\n public changeAnnotationOptions(options, meeting) {\n return meeting?.meetingRequest.changeMeetingFloor(options);\n }\n\n /**\n * private encrypted the strokes data\n * @param {string} encryptedContent\n * @param {StrokeData} strokeData\n * @returns {void}\n */\n private publishEncrypted(encryptedContent: string, strokeData: StrokeData) {\n const data = {\n id: `${this.seqNum}`,\n type: 'publishRequest',\n recipients: {\n // @ts-ignore\n route: this.webex.internal.llm.getBinding(),\n },\n headers: {\n to: strokeData.toUserId,\n },\n data: {\n eventType: 'relay.event',\n relayType: ANNOTATION_RELAY_TYPES.ANNOTATION_CLIENT,\n request: {\n value: {\n sessionId: uuid.v4(),\n type: ANNOTATION_REQUEST_TYPE.ANNOTATION_MESSAGE,\n locusUrl: this.locusUrl,\n content: encryptedContent,\n version: strokeData.version,\n fromUserId: strokeData.fromUserId,\n fromDeviceUrl: strokeData.fromDeviceUrl,\n shareInstanceId: strokeData.shareInstanceId,\n locusId: this.locusUrl && this.locusUrl.split('/').pop(),\n encryptionKeyUrl: strokeData.encryptionKeyUrl,\n },\n },\n },\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n timestamp: new Date().getTime(),\n sequenceNumber: this.seqNum,\n filterMessage: false,\n };\n\n // @ts-ignore\n this.webex.internal.llm.socket.send(data);\n this.seqNum += 1;\n }\n}\n\nexport default AnnotationChannel;\n"],"mappings":"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"}
|
|
@@ -60,10 +60,11 @@ var Breakout = _webexCore.WebexPlugin.extend({
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
|
+
/**
|
|
64
|
+
* initializer for the Breakout class
|
|
65
|
+
* @returns {void}
|
|
66
|
+
*/
|
|
63
67
|
initialize: function initialize() {
|
|
64
|
-
this.members = new _members.default({}, {
|
|
65
|
-
parent: this.webex
|
|
66
|
-
});
|
|
67
68
|
// @ts-ignore
|
|
68
69
|
this.breakoutRequest = new _request.default({
|
|
69
70
|
webex: this.webex
|
|
@@ -146,15 +147,31 @@ var Breakout = _webexCore.WebexPlugin.extend({
|
|
|
146
147
|
}
|
|
147
148
|
});
|
|
148
149
|
},
|
|
150
|
+
/**
|
|
151
|
+
* inits the members object
|
|
152
|
+
* @returns {void}
|
|
153
|
+
*/
|
|
154
|
+
initMembers: function initMembers() {
|
|
155
|
+
var meetingId = this.collection.parent.meetingId;
|
|
156
|
+
var meeting = this.webex.meetings.getMeetingByType(_constants._ID_, meetingId);
|
|
157
|
+
this.members = new _members.default({
|
|
158
|
+
meeting: meeting
|
|
159
|
+
}, {
|
|
160
|
+
parent: this.webex
|
|
161
|
+
});
|
|
162
|
+
},
|
|
149
163
|
/**
|
|
150
164
|
* Parses the participants from the locus object
|
|
151
|
-
* @param locus Locus object
|
|
165
|
+
* @param {Object} locus Locus object
|
|
152
166
|
* @returns {void}
|
|
153
167
|
*/
|
|
154
168
|
parseRoster: function parseRoster(locus) {
|
|
169
|
+
if (!this.members) {
|
|
170
|
+
this.initMembers();
|
|
171
|
+
}
|
|
155
172
|
this.members.locusParticipantsUpdate(locus);
|
|
156
173
|
},
|
|
157
|
-
|
|
174
|
+
/**
|
|
158
175
|
* Broadcast message to this breakout session's participants
|
|
159
176
|
* @param {String} message
|
|
160
177
|
* @param {Object} options
|
|
@@ -169,7 +186,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
|
|
|
169
186
|
sessionId: this.sessionId
|
|
170
187
|
});
|
|
171
188
|
},
|
|
172
|
-
version: "3.0.0-beta.
|
|
189
|
+
version: "3.0.0-beta.118"
|
|
173
190
|
});
|
|
174
191
|
var _default = Breakout;
|
|
175
192
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Breakout","WebexPlugin","extend","idAttribute","namespace","MEETINGS","breakoutRequest","BreakoutRequest","props","active","allowed","assigned","assignedCurrent","requested","current","name","sessionId","sessionType","groupId","url","requestedLastModifiedTime","derived","isMain","cache","deps","fn","initialize","
|
|
1
|
+
{"version":3,"names":["Breakout","WebexPlugin","extend","idAttribute","namespace","MEETINGS","breakoutRequest","BreakoutRequest","props","active","allowed","assigned","assignedCurrent","requested","current","name","sessionId","sessionType","groupId","url","requestedLastModifiedTime","derived","isMain","cache","deps","fn","initialize","webex","join","breakoutMoveId","uuid","v4","deviceUrl","internal","device","meetingId","collection","parent","meeting","meetings","getMeetingByType","_ID_","breakoutEvent","onBreakoutMoveRequest","currentSession","request","method","HTTP_VERBS","POST","uri","body","result","onBreakoutMoveResponse","leave","Error","mainSession","breakouts","filter","breakout","askForHelp","initMembers","members","Members","parseRoster","locus","locusParticipantsUpdate","broadcast","message","options"],"sources":["breakout.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport uuid from 'uuid';\nimport {_ID_, HTTP_VERBS, MEETINGS} from '../constants';\nimport Members from '../members';\nimport BreakoutRequest from './request';\nimport breakoutEvent from './events';\n/**\n * @class\n */\nconst Breakout = WebexPlugin.extend({\n idAttribute: 'sessionId',\n\n namespace: MEETINGS,\n\n breakoutRequest: BreakoutRequest,\n props: {\n active: ['boolean', false, false], // this session is active\n allowed: ['boolean', false, false], // allowed to join this session\n assigned: ['boolean', false, false], // assigned to this session, but not necessarily joined yet\n assignedCurrent: ['boolean', false, false], // assigned AND current session\n requested: ['boolean', false, false], // requested by the host to join this session\n current: ['boolean', false, false], // the current joined session\n name: 'string',\n sessionId: 'string',\n sessionType: 'string',\n groupId: 'string',\n url: 'string', // where to send requests to\n requestedLastModifiedTime: 'string',\n },\n\n derived: {\n isMain: {\n cache: false, // fix issue: sometimes the derived will not change even if the deps changed\n deps: ['sessionType'],\n /**\n * If the breakout has no name, assume it is the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === 'MAIN';\n },\n },\n },\n\n /**\n * initializer for the Breakout class\n * @returns {void}\n */\n initialize() {\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Joins the breakout session\n * @returns {Promise}\n */\n async join() {\n const breakoutMoveId = uuid.v4();\n const deviceUrl = this.webex.internal.device.url;\n const {meetingId} = this.collection.parent;\n const meeting = this.webex.meetings.getMeetingByType(_ID_, meetingId);\n breakoutEvent.onBreakoutMoveRequest({currentSession: this, meeting, breakoutMoveId});\n const result = await this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/move`,\n body: {\n breakoutMoveId,\n deviceUrl,\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n breakoutEvent.onBreakoutMoveResponse({currentSession: this, meeting, breakoutMoveId});\n\n return result;\n },\n\n /**\n * Leaves the breakout session to return to the main session\n * @returns {Promise}\n * @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found\n */\n leave() {\n if (this.isMain) {\n throw new Error('Cannot leave the main session');\n }\n\n const mainSession = this.parent.breakouts.filter((breakout) => breakout.isMain)[0];\n\n if (!mainSession) {\n throw new Error('Cannot leave, no main session found');\n }\n\n return mainSession.join();\n },\n\n /**\n * Sends a help request for the current breakout\n * @returns {Promise}\n */\n askForHelp() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/help`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * inits the members object\n * @returns {void}\n */\n initMembers() {\n const {meetingId} = this.collection.parent;\n const meeting = this.webex.meetings.getMeetingByType(_ID_, meetingId);\n this.members = new Members(\n {\n meeting,\n },\n {parent: this.webex}\n );\n },\n\n /**\n * Parses the participants from the locus object\n * @param {Object} locus Locus object\n * @returns {void}\n */\n parseRoster(locus) {\n if (!this.members) {\n this.initMembers();\n }\n\n this.members.locusParticipantsUpdate(locus);\n },\n\n /**\n * Broadcast message to this breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: this.groupId,\n sessionId: this.sessionId,\n });\n },\n});\n\nexport default Breakout;\n"],"mappings":"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"}
|