@webex/plugin-meetings 3.0.0-beta.403 → 3.0.0-beta.405
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/meeting/index.js +4 -2
- package/dist/meeting/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/types/multistream/mediaRequestManager.d.ts +1 -2
- package/dist/types/multistream/remoteMediaGroup.d.ts +1 -1
- package/dist/types/multistream/remoteMediaManager.d.ts +1 -2
- package/dist/types/multistream/sendSlotManager.d.ts +1 -2
- package/dist/webinar/index.js +1 -1
- package/package.json +20 -20
- package/src/meeting/index.ts +4 -2
- package/src/multistream/mediaRequestManager.ts +1 -1
- package/src/multistream/remoteMediaGroup.ts +1 -1
- package/src/multistream/remoteMediaManager.ts +1 -2
- package/src/multistream/sendSlotManager.ts +1 -2
- package/test/unit/spec/meeting/index.js +28 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -1
- package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SendSlotManager","LoggerProxy","mediaConnection","mediaType","active","slots","has","Error","slot","createSendSlot","set","logger","info","get","namedMediaGroups","MediaType","AudioMain","setNamedMediaGroups","stream","publishStream","label","muted","unpublishStream","codecParameters","setCodecParameters","parameters","deleteCodecParameters","clear"],"sources":["sendSlotManager.ts"],"sourcesContent":["import {\n SendSlot,\n MediaType,\n LocalStream,\n MultistreamRoapMediaConnection,\n} from '@webex/internal-media-core';\n\nimport {NamedMediaGroup} from '@webex/json-multistream';\n\nexport default class SendSlotManager {\n private readonly slots: Map<MediaType, SendSlot> = new Map();\n private readonly LoggerProxy: any;\n\n constructor(LoggerProxy: any) {\n this.LoggerProxy = LoggerProxy;\n }\n\n /**\n * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot\n * @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created\n * @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true\n * @returns {SendSlot} slot The created sendSlot\n */\n public createSlot(\n mediaConnection: MultistreamRoapMediaConnection,\n mediaType: MediaType,\n active = true\n ): SendSlot {\n if (this.slots.has(mediaType)) {\n throw new Error(`Slot for ${mediaType} already exists`);\n }\n\n const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);\n\n this.slots.set(mediaType, slot);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`\n );\n\n return slot;\n }\n\n /**\n * This method is used to retrieve the sendSlot for the given mediaType\n * @param {MediaType} mediaType of which the slot needs to be retrieved\n * @returns {SendSlot}\n */\n public getSlot(mediaType: MediaType): SendSlot {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n return slot;\n }\n\n /**\n * Allow users to specify 'namedMediaGroups' to indicate which named media group its audio should be sent to.\n * @param {MediaType} mediaType MediaType of the sendSlot to which the audio stream needs to be send to the media group\n * @param {[]}namedMediaGroups - Allow users to specify 'namedMediaGroups'.If the value of 'namedMediaGroups' is zero,\n * named media group will be canceled and the audio stream will be sent to the floor.\n * @returns {void}\n */\n public setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]) {\n if (mediaType !== MediaType.AudioMain) {\n throw new Error(\n `sendSlotManager cannot set named media group which media type is ${mediaType}`\n );\n }\n\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n slot.setNamedMediaGroups(namedMediaGroups);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setNamedMediaGroups#set named media group ${namedMediaGroups}`\n );\n }\n\n /**\n * This method publishes the given stream to the sendSlot for the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {LocalStream} stream LocalStream to be published\n * @returns {Promise<void>}\n */\n public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.publishStream(stream);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`\n );\n }\n\n /**\n * This method unpublishes the stream from the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @returns {Promise<void>}\n */\n public async unpublishStream(mediaType: MediaType): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.unpublishStream();\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`\n );\n }\n\n /**\n * This method is used to set the active state of the sendSlot for the given mediaType\n * @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {boolean} active The boolean to set the active state of the sendSlot. Default is true\n * @returns {void}\n */\n public setActive(mediaType: MediaType, active = true): void {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n slot.active = active;\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`\n );\n }\n\n /**\n * This method is used to set the codec parameters for the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {Object} codecParameters\n * @returns {Promise<void>}\n */\n public async setCodecParameters(\n mediaType: MediaType,\n codecParameters: {\n [key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters\n }\n ): Promise<void> {\n // These codec parameter changes underneath are SDP value changes that are taken care by WCME automatically. So no need for any change in streams from the web sdk side\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.setCodecParameters(codecParameters);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setCodecParameters#Set codec parameters for ${mediaType} to ${codecParameters}`\n );\n }\n\n /**\n * This method is used to delete the codec parameters for the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted\n * @returns {Promise<void>}\n */\n public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.deleteCodecParameters(parameters);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ${parameters} for ${mediaType}`\n );\n }\n\n /**\n * This method is used to reset the SendSlotsManager by deleting all the sendSlots\n * @returns {undefined}\n */\n public reset(): void {\n this.slots.clear();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["SendSlotManager","LoggerProxy","mediaConnection","mediaType","active","slots","has","Error","slot","createSendSlot","set","logger","info","get","namedMediaGroups","MediaType","AudioMain","setNamedMediaGroups","stream","publishStream","label","muted","unpublishStream","codecParameters","setCodecParameters","parameters","deleteCodecParameters","clear"],"sources":["sendSlotManager.ts"],"sourcesContent":["import {\n SendSlot,\n MediaType,\n LocalStream,\n MultistreamRoapMediaConnection,\n NamedMediaGroup,\n} from '@webex/internal-media-core';\n\nexport default class SendSlotManager {\n private readonly slots: Map<MediaType, SendSlot> = new Map();\n private readonly LoggerProxy: any;\n\n constructor(LoggerProxy: any) {\n this.LoggerProxy = LoggerProxy;\n }\n\n /**\n * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot\n * @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created\n * @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true\n * @returns {SendSlot} slot The created sendSlot\n */\n public createSlot(\n mediaConnection: MultistreamRoapMediaConnection,\n mediaType: MediaType,\n active = true\n ): SendSlot {\n if (this.slots.has(mediaType)) {\n throw new Error(`Slot for ${mediaType} already exists`);\n }\n\n const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);\n\n this.slots.set(mediaType, slot);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`\n );\n\n return slot;\n }\n\n /**\n * This method is used to retrieve the sendSlot for the given mediaType\n * @param {MediaType} mediaType of which the slot needs to be retrieved\n * @returns {SendSlot}\n */\n public getSlot(mediaType: MediaType): SendSlot {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n return slot;\n }\n\n /**\n * Allow users to specify 'namedMediaGroups' to indicate which named media group its audio should be sent to.\n * @param {MediaType} mediaType MediaType of the sendSlot to which the audio stream needs to be send to the media group\n * @param {[]}namedMediaGroups - Allow users to specify 'namedMediaGroups'.If the value of 'namedMediaGroups' is zero,\n * named media group will be canceled and the audio stream will be sent to the floor.\n * @returns {void}\n */\n public setNamedMediaGroups(mediaType: MediaType, namedMediaGroups: NamedMediaGroup[]) {\n if (mediaType !== MediaType.AudioMain) {\n throw new Error(\n `sendSlotManager cannot set named media group which media type is ${mediaType}`\n );\n }\n\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n slot.setNamedMediaGroups(namedMediaGroups);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setNamedMediaGroups#set named media group ${namedMediaGroups}`\n );\n }\n\n /**\n * This method publishes the given stream to the sendSlot for the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {LocalStream} stream LocalStream to be published\n * @returns {Promise<void>}\n */\n public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.publishStream(stream);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`\n );\n }\n\n /**\n * This method unpublishes the stream from the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @returns {Promise<void>}\n */\n public async unpublishStream(mediaType: MediaType): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.unpublishStream();\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`\n );\n }\n\n /**\n * This method is used to set the active state of the sendSlot for the given mediaType\n * @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {boolean} active The boolean to set the active state of the sendSlot. Default is true\n * @returns {void}\n */\n public setActive(mediaType: MediaType, active = true): void {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n slot.active = active;\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`\n );\n }\n\n /**\n * This method is used to set the codec parameters for the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {Object} codecParameters\n * @returns {Promise<void>}\n */\n public async setCodecParameters(\n mediaType: MediaType,\n codecParameters: {\n [key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters\n }\n ): Promise<void> {\n // These codec parameter changes underneath are SDP value changes that are taken care by WCME automatically. So no need for any change in streams from the web sdk side\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.setCodecParameters(codecParameters);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->setCodecParameters#Set codec parameters for ${mediaType} to ${codecParameters}`\n );\n }\n\n /**\n * This method is used to delete the codec parameters for the sendSlot of the given mediaType\n * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)\n * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted\n * @returns {Promise<void>}\n */\n public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {\n const slot = this.slots.get(mediaType);\n\n if (!slot) {\n throw new Error(`Slot for ${mediaType} does not exist`);\n }\n\n await slot.deleteCodecParameters(parameters);\n\n this.LoggerProxy.logger.info(\n `SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ${parameters} for ${mediaType}`\n );\n }\n\n /**\n * This method is used to reset the SendSlotsManager by deleting all the sendSlots\n * @returns {undefined}\n */\n public reset(): void {\n this.slots.clear();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { StreamRequest } from '@webex/internal-media-core';
|
|
2
|
-
import { NamedMediaGroup } from '@webex/json-multistream';
|
|
1
|
+
import { StreamRequest, NamedMediaGroup } from '@webex/internal-media-core';
|
|
3
2
|
import { ReceiveSlot } from './receiveSlot';
|
|
4
3
|
export interface ActiveSpeakerPolicyInfo {
|
|
5
4
|
policy: 'active-speaker';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NamedMediaGroup } from '@webex/
|
|
1
|
+
import { NamedMediaGroup } from '@webex/internal-media-core';
|
|
2
2
|
import { RemoteMedia, RemoteVideoResolution } from './remoteMedia';
|
|
3
3
|
import { MediaRequestManager } from './mediaRequestManager';
|
|
4
4
|
import { CSI, ReceiveSlot } from './receiveSlot';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { EventMap } from 'typed-emitter';
|
|
2
|
-
import { MediaType } from '@webex/internal-media-core';
|
|
3
|
-
import { NamedMediaGroup } from '@webex/json-multistream';
|
|
2
|
+
import { MediaType, NamedMediaGroup } from '@webex/internal-media-core';
|
|
4
3
|
import EventsScope from '../common/events/events-scope';
|
|
5
4
|
import { RemoteMedia, RemoteVideoResolution } from './remoteMedia';
|
|
6
5
|
import { CSI } from './receiveSlot';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection } from '@webex/internal-media-core';
|
|
2
|
-
import { NamedMediaGroup } from '@webex/json-multistream';
|
|
1
|
+
import { SendSlot, MediaType, LocalStream, MultistreamRoapMediaConnection, NamedMediaGroup } from '@webex/internal-media-core';
|
|
3
2
|
export default class SendSlotManager {
|
|
4
3
|
private readonly slots;
|
|
5
4
|
private readonly LoggerProxy;
|
package/dist/webinar/index.js
CHANGED
|
@@ -62,7 +62,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
|
|
|
62
62
|
updateCanManageWebcast: function updateCanManageWebcast(canManageWebcast) {
|
|
63
63
|
this.set('canManageWebcast', canManageWebcast);
|
|
64
64
|
},
|
|
65
|
-
version: "3.0.0-beta.
|
|
65
|
+
version: "3.0.0-beta.405"
|
|
66
66
|
});
|
|
67
67
|
var _default = Webinar;
|
|
68
68
|
exports.default = _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.405",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@peculiar/webcrypto": "^1.4.3",
|
|
36
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
41
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
36
|
+
"@webex/plugin-meetings": "3.0.0-beta.405",
|
|
37
|
+
"@webex/test-helper-chai": "3.0.0-beta.405",
|
|
38
|
+
"@webex/test-helper-mocha": "3.0.0-beta.405",
|
|
39
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.405",
|
|
40
|
+
"@webex/test-helper-retry": "3.0.0-beta.405",
|
|
41
|
+
"@webex/test-helper-test-users": "3.0.0-beta.405",
|
|
42
42
|
"chai": "^4.3.4",
|
|
43
43
|
"chai-as-promised": "^7.1.1",
|
|
44
44
|
"jsdom-global": "3.0.2",
|
|
@@ -47,19 +47,19 @@
|
|
|
47
47
|
"typescript": "^4.7.4"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@webex/common": "3.0.0-beta.
|
|
51
|
-
"@webex/internal-media-core": "2.3.
|
|
52
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
58
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
59
|
-
"@webex/media-helpers": "3.0.0-beta.
|
|
60
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
61
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
62
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
50
|
+
"@webex/common": "3.0.0-beta.405",
|
|
51
|
+
"@webex/internal-media-core": "2.3.2",
|
|
52
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.405",
|
|
53
|
+
"@webex/internal-plugin-device": "3.0.0-beta.405",
|
|
54
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.405",
|
|
55
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.405",
|
|
56
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.405",
|
|
57
|
+
"@webex/internal-plugin-support": "3.0.0-beta.405",
|
|
58
|
+
"@webex/internal-plugin-user": "3.0.0-beta.405",
|
|
59
|
+
"@webex/media-helpers": "3.0.0-beta.405",
|
|
60
|
+
"@webex/plugin-people": "3.0.0-beta.405",
|
|
61
|
+
"@webex/plugin-rooms": "3.0.0-beta.405",
|
|
62
|
+
"@webex/webex-core": "3.0.0-beta.405",
|
|
63
63
|
"ampersand-collection": "^2.0.2",
|
|
64
64
|
"bowser": "^2.11.0",
|
|
65
65
|
"btoa": "^1.2.1",
|
package/src/meeting/index.ts
CHANGED
|
@@ -3459,8 +3459,10 @@ export default class Meeting extends StatelessWebexPlugin {
|
|
|
3459
3459
|
this.owner =
|
|
3460
3460
|
locusMeetingObject?.info.owner || meetingInfo?.owner || meetingInfo?.hostId || this.owner;
|
|
3461
3461
|
this.permissionToken = meetingInfo?.permissionToken;
|
|
3462
|
-
this.
|
|
3463
|
-
|
|
3462
|
+
if (this.permissionToken) {
|
|
3463
|
+
this.setPermissionTokenPayload(meetingInfo?.permissionToken);
|
|
3464
|
+
this.setSelfUserPolicies();
|
|
3465
|
+
}
|
|
3464
3466
|
// Need to populate environment when sending CA event
|
|
3465
3467
|
this.environment = locusMeetingObject?.info.channel || meetingInfo?.channel;
|
|
3466
3468
|
}
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
H264Codec,
|
|
9
9
|
getRecommendedMaxBitrateForFrameSize,
|
|
10
10
|
RecommendedOpusBitrates,
|
|
11
|
+
NamedMediaGroup,
|
|
11
12
|
} from '@webex/internal-media-core';
|
|
12
13
|
import {cloneDeepWith, debounce, isEmpty} from 'lodash';
|
|
13
14
|
|
|
14
|
-
import {NamedMediaGroup} from '@webex/json-multistream';
|
|
15
15
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
16
16
|
|
|
17
17
|
import {ReceiveSlot, ReceiveSlotEvents} from './receiveSlot';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/* eslint-disable require-jsdoc */
|
|
3
3
|
/* eslint-disable import/prefer-default-export */
|
|
4
4
|
import {forEach} from 'lodash';
|
|
5
|
-
import {NamedMediaGroup} from '@webex/
|
|
5
|
+
import {NamedMediaGroup} from '@webex/internal-media-core';
|
|
6
6
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
7
7
|
|
|
8
8
|
import {getMaxFs, RemoteMedia, RemoteVideoResolution} from './remoteMedia';
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/* eslint-disable valid-jsdoc */
|
|
2
2
|
import {cloneDeep, forEach, remove} from 'lodash';
|
|
3
3
|
import {EventMap} from 'typed-emitter';
|
|
4
|
-
import {MediaType} from '@webex/internal-media-core';
|
|
5
|
-
import {NamedMediaGroup} from '@webex/json-multistream';
|
|
4
|
+
import {MediaType, NamedMediaGroup} from '@webex/internal-media-core';
|
|
6
5
|
|
|
7
6
|
import LoggerProxy from '../common/logs/logger-proxy';
|
|
8
7
|
import EventsScope from '../common/events/events-scope';
|
|
@@ -3,10 +3,9 @@ import {
|
|
|
3
3
|
MediaType,
|
|
4
4
|
LocalStream,
|
|
5
5
|
MultistreamRoapMediaConnection,
|
|
6
|
+
NamedMediaGroup,
|
|
6
7
|
} from '@webex/internal-media-core';
|
|
7
8
|
|
|
8
|
-
import {NamedMediaGroup} from '@webex/json-multistream';
|
|
9
|
-
|
|
10
9
|
export default class SendSlotManager {
|
|
11
10
|
private readonly slots: Map<MediaType, SendSlot> = new Map();
|
|
12
11
|
private readonly LoggerProxy: any;
|
|
@@ -8630,6 +8630,34 @@ describe('plugin-meetings', () => {
|
|
|
8630
8630
|
|
|
8631
8631
|
checkParseMeetingInfo(expectedInfoToParse);
|
|
8632
8632
|
});
|
|
8633
|
+
|
|
8634
|
+
it('should parse meeting info, set values, and return null when permissionToken is not present', () => {
|
|
8635
|
+
meeting.config.experimental = {enableMediaNegotiatedEvent: true};
|
|
8636
|
+
meeting.config.experimental.enableUnifiedMeetings = true;
|
|
8637
|
+
const FAKE_STRING_DESTINATION = 'sipUrl';
|
|
8638
|
+
const FAKE_MEETING_INFO = {
|
|
8639
|
+
conversationUrl: uuid1,
|
|
8640
|
+
locusUrl: url1,
|
|
8641
|
+
meetingJoinUrl: url2,
|
|
8642
|
+
meetingNumber: '12345',
|
|
8643
|
+
sipMeetingUri: test1,
|
|
8644
|
+
sipUrl: test1,
|
|
8645
|
+
owner: test2,
|
|
8646
|
+
};
|
|
8647
|
+
|
|
8648
|
+
meeting.parseMeetingInfo(FAKE_MEETING_INFO, FAKE_STRING_DESTINATION);
|
|
8649
|
+
const expectedInfoToParse = {
|
|
8650
|
+
conversationUrl: uuid1,
|
|
8651
|
+
locusUrl: url1,
|
|
8652
|
+
sipUri: test1,
|
|
8653
|
+
meetingNumber: '12345',
|
|
8654
|
+
meetingJoinUrl: url2,
|
|
8655
|
+
owner: test2,
|
|
8656
|
+
};
|
|
8657
|
+
|
|
8658
|
+
checkParseMeetingInfo(expectedInfoToParse);
|
|
8659
|
+
});
|
|
8660
|
+
|
|
8633
8661
|
it('should parse interpretation info correctly', () => {
|
|
8634
8662
|
const parseInterpretationInfo = sinon.spy(MeetingUtil, 'parseInterpretationInfo');
|
|
8635
8663
|
const mockToggleOnData = {
|
|
@@ -6,7 +6,6 @@ import {RemoteMedia} from '@webex/plugin-meetings/src/multistream/remoteMedia';
|
|
|
6
6
|
import {ReceiveSlot} from '@webex/plugin-meetings/src/multistream/receiveSlot';
|
|
7
7
|
import sinon from 'sinon';
|
|
8
8
|
import {assert} from '@webex/test-helper-chai';
|
|
9
|
-
import { NamedMediaGroup } from "@webex/json-multistream";
|
|
10
9
|
|
|
11
10
|
class FakeSlot extends EventEmitter {
|
|
12
11
|
public mediaType: MediaType;
|
|
@@ -18,7 +18,6 @@ import testUtils from '../../../utils/testUtils';
|
|
|
18
18
|
import LoggerProxy from '@webex/plugin-meetings/src/common/logs/logger-proxy';
|
|
19
19
|
import LoggerConfig from '@webex/plugin-meetings/src/common/logs/logger-config';
|
|
20
20
|
import { expect } from 'chai';
|
|
21
|
-
import { NamedMediaGroup } from "@webex/json-multistream";
|
|
22
21
|
|
|
23
22
|
class FakeSlot extends EventEmitter {
|
|
24
23
|
public mediaType: MediaType;
|