@webex/plugin-meetings 3.7.0-next.9 → 3.7.0-web-workers-keepalive.1
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/index.js +17 -0
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
- package/dist/common/errors/join-webinar-error.js.map +1 -0
- package/dist/common/errors/multistream-not-supported-error.js +53 -0
- package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +26 -5
- package/dist/constants.js.map +1 -1
- package/dist/index.js +16 -11
- package/dist/index.js.map +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +13 -2
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +30 -17
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/meeting/index.js +903 -800
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +9 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/request.js +30 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +16 -16
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +29 -17
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meetings/index.js +2 -2
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +1 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +9 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +39 -28
- package/dist/member/util.js.map +1 -1
- package/dist/metrics/constants.js +1 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/remoteMedia.js +30 -15
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +24 -0
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/roap/index.js +10 -8
- package/dist/roap/index.js.map +1 -1
- package/dist/types/annotation/index.d.ts +5 -0
- package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
- package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
- package/dist/types/constants.d.ts +20 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/locus-info/index.d.ts +2 -1
- package/dist/types/meeting/index.d.ts +19 -12
- package/dist/types/meeting/locusMediaRequest.d.ts +4 -0
- package/dist/types/meeting/request.d.ts +12 -1
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +1 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +4 -4
- package/dist/types/member/index.d.ts +1 -0
- package/dist/types/member/types.d.ts +7 -0
- package/dist/types/metrics/constants.d.ts +1 -1
- package/dist/types/multistream/sendSlotManager.d.ts +8 -1
- package/dist/webinar/index.js +354 -3
- package/dist/webinar/index.js.map +1 -1
- package/package.json +23 -22
- package/src/annotation/index.ts +16 -0
- package/src/common/errors/join-webinar-error.ts +24 -0
- package/src/common/errors/multistream-not-supported-error.ts +30 -0
- package/src/config.ts +1 -1
- package/src/constants.ts +23 -3
- package/src/index.ts +5 -3
- package/src/locus-info/index.ts +17 -2
- package/src/locus-info/selfUtils.ts +19 -6
- package/src/meeting/index.ts +234 -80
- package/src/meeting/locusMediaRequest.ts +7 -0
- package/src/meeting/request.ts +26 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +8 -10
- package/src/meeting-info/meeting-info-v2.ts +23 -11
- package/src/meetings/index.ts +2 -2
- package/src/meetings/util.ts +2 -1
- package/src/member/index.ts +9 -0
- package/src/member/types.ts +8 -0
- package/src/member/util.ts +34 -24
- package/src/metrics/constants.ts +1 -1
- package/src/multistream/remoteMedia.ts +28 -15
- package/src/multistream/sendSlotManager.ts +31 -0
- package/src/roap/index.ts +10 -8
- package/src/webinar/index.ts +197 -3
- package/test/unit/spec/annotation/index.ts +46 -1
- package/test/unit/spec/locus-info/index.js +222 -0
- package/test/unit/spec/locus-info/selfConstant.js +7 -0
- package/test/unit/spec/locus-info/selfUtils.js +91 -1
- package/test/unit/spec/meeting/index.js +683 -103
- package/test/unit/spec/meeting/utils.js +22 -19
- package/test/unit/spec/meeting-info/meetinginfov2.js +9 -4
- package/test/unit/spec/meetings/utils.js +10 -0
- package/test/unit/spec/member/util.js +52 -11
- package/test/unit/spec/multistream/remoteMedia.ts +11 -7
- package/test/unit/spec/roap/index.ts +47 -0
- package/test/unit/spec/webinar/index.ts +457 -0
- package/dist/common/errors/webinar-registration-error.js.map +0 -1
- package/src/common/errors/webinar-registration-error.ts +0 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_lodash","_constants","_collection","_interopRequireDefault","_loggerProxy","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","webcastInstanceUrl","canManageWebcast","selfIsPanelist","selfIsAttendee","practiceSessionEnabled","locusUrlUpdate","set","updateWebcastUrl","payload","get","updateCanManageWebcast","updateRoleChanged","oldRoles","newRoles","isPromoted","includes","SELF_ROLES","ATTENDEE","PANELIST","isDemoted","MODERATOR","setPracticeSessionState","enabled","request","method","HTTP_VERBS","PATCH","uri","concat","body","practiceSession","catch","error","LoggerProxy","logger","updatePracticeSessionStatus","version","_default","exports","default"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {get} from 'lodash';\nimport {HTTP_VERBS, MEETINGS, SELF_ROLES} from '../constants';\n\nimport WebinarCollection from './collection';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @class Webinar\n */\nconst Webinar = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n webinar: WebinarCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current webinar's locus url\n webcastInstanceUrl: 'string', // current webinar's webcast instance url\n canManageWebcast: 'boolean', // appears the ability to manage webcast\n selfIsPanelist: 'boolean', // self is panelist\n selfIsAttendee: 'boolean', // self is attendee\n practiceSessionEnabled: 'boolean', // practice session enabled\n },\n\n /**\n * Update the current locus url of the webinar\n * @param {string} locusUrl\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current webcast instance url of the meeting\n * @param {object} payload\n * @returns {void}\n */\n updateWebcastUrl(payload) {\n this.set('webcastInstanceUrl', get(payload, 'resources.webcastInstance.url'));\n },\n\n /**\n * Update whether self has capability to manage start/stop webcast (only host can manage it)\n * @param {boolean} canManageWebcast\n * @returns {void}\n */\n updateCanManageWebcast(canManageWebcast) {\n this.set('canManageWebcast', canManageWebcast);\n },\n\n /**\n * Updates user roles and manages associated state transitions\n * @param {object} payload\n * @param {string[]} payload.oldRoles - Previous roles of the user\n * @param {string[]} payload.newRoles - New roles of the user\n * @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states\n */\n updateRoleChanged(payload) {\n const oldRoles = get(payload, 'oldRoles', []);\n const newRoles = get(payload, 'newRoles', []);\n\n const isPromoted =\n oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.PANELIST);\n const isDemoted =\n oldRoles.includes(SELF_ROLES.PANELIST) && newRoles.includes(SELF_ROLES.ATTENDEE);\n this.set('selfIsPanelist', newRoles.includes(SELF_ROLES.PANELIST));\n this.set('selfIsAttendee', newRoles.includes(SELF_ROLES.ATTENDEE));\n this.updateCanManageWebcast(newRoles.includes(SELF_ROLES.MODERATOR));\n\n return {isPromoted, isDemoted};\n },\n\n /**\n * start or stop practice session for webinar\n * @param {boolean} enabled\n * @returns {Promise}\n */\n setPracticeSessionState(enabled) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n practiceSession: {\n enabled,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#setPracticeSessionState failed', error);\n throw error;\n });\n },\n\n /**\n * update practice session status\n * @param {object} payload\n * @returns {void}\n */\n updatePracticeSessionStatus(payload) {\n this.set('practiceSessionEnabled', payload.enabled);\n },\n});\n\nexport default Webinar;\n"],"mappings":";;;;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAD,sBAAA,CAAAJ,OAAA;AARA;AACA;AACA;;AAQA;AACA;AACA;AACA,IAAMM,OAAO,GAAGC,sBAAW,CAACC,MAAM,CAAC;EACjCC,SAAS,EAAEC,mBAAQ;EACnBC,WAAW,EAAE;IACXC,OAAO,EAAEC;EACX,CAAC;EAEDC,KAAK,EAAE;IACLC,QAAQ,EAAE,QAAQ;IAAE;IACpBC,kBAAkB,EAAE,QAAQ;IAAE;IAC9BC,gBAAgB,EAAE,SAAS;IAAE;IAC7BC,cAAc,EAAE,SAAS;IAAE;IAC3BC,cAAc,EAAE,SAAS;IAAE;IAC3BC,sBAAsB,EAAE,SAAS,CAAE;EACrC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,cAAc,WAAAA,eAACN,QAAQ,EAAE;IACvB,IAAI,CAACO,GAAG,CAAC,UAAU,EAAEP,QAAQ,CAAC;EAChC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEQ,gBAAgB,WAAAA,iBAACC,OAAO,EAAE;IACxB,IAAI,CAACF,GAAG,CAAC,oBAAoB,EAAE,IAAAG,WAAG,EAACD,OAAO,EAAE,+BAA+B,CAAC,CAAC;EAC/E,CAAC;EAED;AACF;AACA;AACA;AACA;EACEE,sBAAsB,WAAAA,uBAACT,gBAAgB,EAAE;IACvC,IAAI,CAACK,GAAG,CAAC,kBAAkB,EAAEL,gBAAgB,CAAC;EAChD,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEU,iBAAiB,WAAAA,kBAACH,OAAO,EAAE;IACzB,IAAMI,QAAQ,GAAG,IAAAH,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC;IAC7C,IAAMK,QAAQ,GAAG,IAAAJ,WAAG,EAACD,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC;IAE7C,IAAMM,UAAU,GACdF,QAAQ,CAACG,QAAQ,CAACC,qBAAU,CAACC,QAAQ,CAAC,IAAIJ,QAAQ,CAACE,QAAQ,CAACC,qBAAU,CAACE,QAAQ,CAAC;IAClF,IAAMC,SAAS,GACbP,QAAQ,CAACG,QAAQ,CAACC,qBAAU,CAACE,QAAQ,CAAC,IAAIL,QAAQ,CAACE,QAAQ,CAACC,qBAAU,CAACC,QAAQ,CAAC;IAClF,IAAI,CAACX,GAAG,CAAC,gBAAgB,EAAEO,QAAQ,CAACE,QAAQ,CAACC,qBAAU,CAACE,QAAQ,CAAC,CAAC;IAClE,IAAI,CAACZ,GAAG,CAAC,gBAAgB,EAAEO,QAAQ,CAACE,QAAQ,CAACC,qBAAU,CAACC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAACP,sBAAsB,CAACG,QAAQ,CAACE,QAAQ,CAACC,qBAAU,CAACI,SAAS,CAAC,CAAC;IAEpE,OAAO;MAACN,UAAU,EAAVA,UAAU;MAAEK,SAAS,EAATA;IAAS,CAAC;EAChC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEE,uBAAuB,WAAAA,wBAACC,OAAO,EAAE;IAC/B,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBC,MAAM,EAAEC,qBAAU,CAACC,KAAK;MACxBC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAAC7B,QAAQ,cAAW;MAChC8B,IAAI,EAAE;QACJC,eAAe,EAAE;UACfR,OAAO,EAAPA;QACF;MACF;IACF,CAAC,CAAC,CAACS,KAAK,CAAC,UAACC,KAAK,EAAK;MAClBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,gDAAgD,EAAEA,KAAK,CAAC;MACjF,MAAMA,KAAK;IACb,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACEG,2BAA2B,WAAAA,4BAAC3B,OAAO,EAAE;IACnC,IAAI,CAACF,GAAG,CAAC,wBAAwB,EAAEE,OAAO,CAACc,OAAO,CAAC;EACrD,CAAC;EAAAc,OAAA;AACH,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEYjD,OAAO"}
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_uuid","_interopRequireDefault","_lodash","_constants","_collection","_loggerProxy","Webinar","WebexPlugin","extend","namespace","MEETINGS","collections","webinar","WebinarCollection","props","locusUrl","webcastInstanceUrl","canManageWebcast","selfIsPanelist","selfIsAttendee","practiceSessionEnabled","meetingId","locusUrlUpdate","set","updateWebcastUrl","payload","get","updateCanManageWebcast","updateRoleChanged","oldRoles","newRoles","isPromoted","includes","SELF_ROLES","ATTENDEE","PANELIST","isDemoted","MODERATOR","updateStatusByRole","_ref","meeting","webex","meetings","getMeetingByType","_ID_","shareStatus","SHARE_STATUS","WHITEBOARD_SHARE_ACTIVE","_meeting$locusInfo","_meeting$locusInfo2","locusInfo","updateMediaShares","mediaShares","updateLLMConnection","isJoinPracticeSessionDataChannel","setPracticeSessionState","enabled","request","method","HTTP_VERBS","PATCH","uri","concat","body","practiceSession","catch","error","LoggerProxy","logger","updatePracticeSessionStatus","startWebcast","layout","_this","_asyncToGenerator2","default","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","Error","t0","t1","PUT","t2","t3","_defineProperty2","credentials","getUserToken","t4","sent","t5","config","trackingIdPrefix","uuid","v4","toString","t6","authorization","trackingId","t7","HEADERS","CONTENT_TYPE","t8","CONTENT_TYPE_VALUE","APPLICATION_JSON","t9","t10","action","meetingInfo","locusId","correlationId","t11","headers","abrupt","call","stop","stopWebcast","_this2","_callee2","_callee2$","_context2","queryWebcastLayout","_this3","_callee3","_callee3$","_context3","GET","updateWebcastLayout","_this4","_callee4","_callee4$","_context4","videoLayout","contentLayout","syncStageLayout","syncStageInMeeting","viewAllWebcastAttendees","_this5","_callee5","_callee5$","_context5","searchWebcastAttendees","_arguments","arguments","_this6","_callee6","queryString","_callee6$","_context6","length","undefined","encodeURIComponent","expelWebcastAttendee","participantId","_this7","_callee7","_callee7$","_context7","DELETE","version","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin, config} from '@webex/webex-core';\nimport uuid from 'uuid';\nimport {get} from 'lodash';\nimport {_ID_, HEADERS, HTTP_VERBS, MEETINGS, SELF_ROLES, SHARE_STATUS} from '../constants';\n\nimport WebinarCollection from './collection';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @class Webinar\n */\nconst Webinar = WebexPlugin.extend({\n namespace: MEETINGS,\n collections: {\n webinar: WebinarCollection,\n },\n\n props: {\n locusUrl: 'string', // appears current webinar's locus url\n webcastInstanceUrl: 'string', // current webinar's webcast instance url\n canManageWebcast: 'boolean', // appears the ability to manage webcast\n selfIsPanelist: 'boolean', // self is panelist\n selfIsAttendee: 'boolean', // self is attendee\n practiceSessionEnabled: 'boolean', // practice session enabled\n meetingId: 'string',\n },\n\n /**\n * Update the current locus url of the webinar\n * @param {string} locusUrl\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * Update the current webcast instance url of the meeting\n * @param {object} payload\n * @returns {void}\n */\n updateWebcastUrl(payload) {\n this.set('webcastInstanceUrl', get(payload, 'resources.webcastInstance.url'));\n },\n\n /**\n * Update whether self has capability to manage start/stop webcast (only host can manage it)\n * @param {boolean} canManageWebcast\n * @returns {void}\n */\n updateCanManageWebcast(canManageWebcast) {\n this.set('canManageWebcast', canManageWebcast);\n },\n\n /**\n * Updates user roles and manages associated state transitions\n * @param {object} payload\n * @param {string[]} payload.oldRoles - Previous roles of the user\n * @param {string[]} payload.newRoles - New roles of the user\n * @returns {{isPromoted: boolean, isDemoted: boolean}} Role transition states\n */\n updateRoleChanged(payload) {\n const oldRoles = get(payload, 'oldRoles', []);\n const newRoles = get(payload, 'newRoles', []);\n\n const isPromoted =\n oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.PANELIST);\n const isDemoted =\n (oldRoles.includes(SELF_ROLES.PANELIST) && newRoles.includes(SELF_ROLES.ATTENDEE)) ||\n (!oldRoles.includes(SELF_ROLES.ATTENDEE) && newRoles.includes(SELF_ROLES.ATTENDEE)); // for attendee just join meeting case\n this.set('selfIsPanelist', newRoles.includes(SELF_ROLES.PANELIST));\n this.set('selfIsAttendee', newRoles.includes(SELF_ROLES.ATTENDEE));\n this.updateCanManageWebcast(newRoles.includes(SELF_ROLES.MODERATOR));\n this.updateStatusByRole({isPromoted, isDemoted});\n\n return {isPromoted, isDemoted};\n },\n\n /**\n * should join practice session data channel or not\n * @param {Object} {isPromoted: boolean, isDemoted: boolean}} Role transition states\n * @returns {void}\n */\n updateStatusByRole({isPromoted, isDemoted}) {\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n\n if (\n (isDemoted && meeting?.shareStatus === SHARE_STATUS.WHITEBOARD_SHARE_ACTIVE) ||\n isPromoted\n ) {\n // attendees in webinar should subscribe streaming for whiteboard sharing\n // while panelist still need subscribe native mode so trigger force update here\n meeting?.locusInfo?.updateMediaShares(meeting?.locusInfo?.mediaShares, true);\n }\n\n if (this.practiceSessionEnabled) {\n // may need change data channel in practice session\n meeting?.updateLLMConnection();\n }\n },\n\n /**\n * should join practice session data channel or not\n * @returns {boolean}\n */\n isJoinPracticeSessionDataChannel() {\n return this.selfIsPanelist && this.practiceSessionEnabled;\n },\n\n /**\n * start or stop practice session for webinar\n * @param {boolean} enabled\n * @returns {Promise}\n */\n setPracticeSessionState(enabled) {\n return this.request({\n method: HTTP_VERBS.PATCH,\n uri: `${this.locusUrl}/controls`,\n body: {\n practiceSession: {\n enabled,\n },\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#setPracticeSessionState failed', error);\n throw error;\n });\n },\n\n /**\n * update practice session status\n * @param {object} payload\n * @returns {void}\n */\n updatePracticeSessionStatus(payload) {\n this.set('practiceSessionEnabled', payload.enabled);\n },\n\n /**\n * start webcast mode for webinar\n * @param {object} meeting\n * @param {object} layout\n * @returns {Promise}\n */\n async startWebcast(meeting, layout) {\n if (!meeting) {\n LoggerProxy.logger.error(\n `Meeting:webinar#startWebcast failed --> meeting parameter : ${meeting}`\n );\n throw new Error('Meeting parameter does not meet expectations');\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/streaming`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n action: 'start',\n meetingInfo: {\n locusId: meeting.locusId,\n correlationId: meeting.correlationId,\n },\n layout,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#startWebcast failed', error);\n throw error;\n });\n },\n\n /**\n * stop webcast mode for webinar\n * @returns {Promise}\n */\n async stopWebcast() {\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/streaming`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n action: 'stop',\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#stopWebcast failed', error);\n throw error;\n });\n },\n\n /**\n * query webcast layout for webinar\n * @returns {Promise}\n */\n async queryWebcastLayout() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/layout`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#queryWebcastLayout failed', error);\n throw error;\n });\n },\n\n /**\n * update webcast layout for webinar\n * @param {object} layout\n * @returns {Promise}\n */\n async updateWebcastLayout(layout) {\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.webcastInstanceUrl}/layout`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n [HEADERS.CONTENT_TYPE]: HEADERS.CONTENT_TYPE_VALUE.APPLICATION_JSON,\n },\n body: {\n videoLayout: layout.videoLayout,\n contentLayout: layout.contentLayout,\n syncStageLayout: layout.syncStageLayout,\n syncStageInMeeting: layout.syncStageInMeeting,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#updateWebcastLayout failed', error);\n throw error;\n });\n },\n\n /**\n * view all webcast attendees\n * @param {string} queryString\n * @returns {Promise}\n */\n async viewAllWebcastAttendees() {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/attendees`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#viewAllWebcastAttendees failed', error);\n throw error;\n });\n },\n\n /**\n * search webcast attendees by query string\n * @param {string} queryString\n * @returns {Promise}\n */\n async searchWebcastAttendees(queryString = '') {\n return this.request({\n method: HTTP_VERBS.GET,\n uri: `${this.webcastInstanceUrl}/attendees?keyword=${encodeURIComponent(queryString)}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#searchWebcastAttendees failed', error);\n throw error;\n });\n },\n\n /**\n * expel webcast attendee by participantId\n * @param {string} participantId\n * @returns {Promise}\n */\n async expelWebcastAttendee(participantId) {\n return this.request({\n method: HTTP_VERBS.DELETE,\n uri: `${this.webcastInstanceUrl}/attendees/${participantId}`,\n headers: {\n authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${config.trackingIdPrefix}_${uuid.v4().toString()}`,\n },\n }).catch((error) => {\n LoggerProxy.logger.error('Meeting:webinar#expelWebcastAttendee failed', error);\n throw error;\n });\n },\n});\n\nexport default Webinar;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
44
44
|
"@webex/jest-config-legacy": "0.0.0",
|
|
45
45
|
"@webex/legacy-tools": "0.0.0",
|
|
46
|
-
"@webex/plugin-meetings": "3.7.0-
|
|
47
|
-
"@webex/plugin-rooms": "3.7.0-
|
|
48
|
-
"@webex/test-helper-chai": "3.7.0-
|
|
49
|
-
"@webex/test-helper-mocha": "3.7.0-
|
|
50
|
-
"@webex/test-helper-mock-webex": "3.7.0-
|
|
51
|
-
"@webex/test-helper-retry": "3.7.0-
|
|
52
|
-
"@webex/test-helper-test-users": "3.7.0-
|
|
46
|
+
"@webex/plugin-meetings": "3.7.0-web-workers-keepalive.1",
|
|
47
|
+
"@webex/plugin-rooms": "3.7.0-web-workers-keepalive.1",
|
|
48
|
+
"@webex/test-helper-chai": "3.7.0-web-workers-keepalive.1",
|
|
49
|
+
"@webex/test-helper-mocha": "3.7.0-web-workers-keepalive.1",
|
|
50
|
+
"@webex/test-helper-mock-webex": "3.7.0-web-workers-keepalive.1",
|
|
51
|
+
"@webex/test-helper-retry": "3.7.0-web-workers-keepalive.1",
|
|
52
|
+
"@webex/test-helper-test-users": "3.7.0-web-workers-keepalive.1",
|
|
53
53
|
"chai": "^4.3.4",
|
|
54
54
|
"chai-as-promised": "^7.1.1",
|
|
55
55
|
"eslint": "^8.24.0",
|
|
@@ -61,21 +61,22 @@
|
|
|
61
61
|
"typescript": "^4.7.4"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@webex/common": "3.7.0-
|
|
65
|
-
"@webex/
|
|
66
|
-
"@webex/internal-
|
|
67
|
-
"@webex/internal-plugin-
|
|
68
|
-
"@webex/internal-plugin-
|
|
69
|
-
"@webex/internal-plugin-
|
|
70
|
-
"@webex/internal-plugin-
|
|
71
|
-
"@webex/internal-plugin-
|
|
72
|
-
"@webex/internal-plugin-
|
|
73
|
-
"@webex/internal-plugin-
|
|
74
|
-
"@webex/
|
|
75
|
-
"@webex/
|
|
76
|
-
"@webex/plugin-
|
|
64
|
+
"@webex/common": "3.7.0-web-workers-keepalive.1",
|
|
65
|
+
"@webex/event-dictionary-ts": "^1.0.1643",
|
|
66
|
+
"@webex/internal-media-core": "2.14.0",
|
|
67
|
+
"@webex/internal-plugin-conversation": "3.7.0-web-workers-keepalive.1",
|
|
68
|
+
"@webex/internal-plugin-device": "3.7.0-web-workers-keepalive.1",
|
|
69
|
+
"@webex/internal-plugin-llm": "3.7.0-web-workers-keepalive.1",
|
|
70
|
+
"@webex/internal-plugin-mercury": "3.7.0-web-workers-keepalive.1",
|
|
71
|
+
"@webex/internal-plugin-metrics": "3.7.0-web-workers-keepalive.1",
|
|
72
|
+
"@webex/internal-plugin-support": "3.7.0-web-workers-keepalive.1",
|
|
73
|
+
"@webex/internal-plugin-user": "3.7.0-web-workers-keepalive.1",
|
|
74
|
+
"@webex/internal-plugin-voicea": "3.7.0-web-workers-keepalive.1",
|
|
75
|
+
"@webex/media-helpers": "3.7.0-web-workers-keepalive.1",
|
|
76
|
+
"@webex/plugin-people": "3.7.0-web-workers-keepalive.1",
|
|
77
|
+
"@webex/plugin-rooms": "3.7.0-web-workers-keepalive.1",
|
|
77
78
|
"@webex/web-capabilities": "^1.4.0",
|
|
78
|
-
"@webex/webex-core": "3.7.0-
|
|
79
|
+
"@webex/webex-core": "3.7.0-web-workers-keepalive.1",
|
|
79
80
|
"ampersand-collection": "^2.0.2",
|
|
80
81
|
"bowser": "^2.11.0",
|
|
81
82
|
"btoa": "^1.2.1",
|
|
@@ -91,5 +92,5 @@
|
|
|
91
92
|
"//": [
|
|
92
93
|
"TODO: upgrade jwt-decode when moving to node 18"
|
|
93
94
|
],
|
|
94
|
-
"version": "3.7.0-
|
|
95
|
+
"version": "3.7.0-web-workers-keepalive.1"
|
|
95
96
|
}
|
package/src/annotation/index.ts
CHANGED
|
@@ -120,6 +120,22 @@ class AnnotationChannel extends WebexPlugin implements IAnnotationChannel {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Remove event listeners
|
|
125
|
+
* @returns {undefined}
|
|
126
|
+
*/
|
|
127
|
+
public deregisterEvents() {
|
|
128
|
+
if (this.hasSubscribedToEvents) {
|
|
129
|
+
// @ts-ignore
|
|
130
|
+
this.webex.internal.mercury.off('event:locus.approval_request', this.eventCommandProcessor);
|
|
131
|
+
|
|
132
|
+
// @ts-ignore
|
|
133
|
+
this.webex.internal.llm.off('event:relay.event', this.eventDataProcessor);
|
|
134
|
+
|
|
135
|
+
this.hasSubscribedToEvents = false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
123
139
|
/**
|
|
124
140
|
* set locusUrl
|
|
125
141
|
* @param {string} locusUrl
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {ERROR_DICTIONARY} from '../../constants';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Error occurred while join the webinar
|
|
5
|
+
*/
|
|
6
|
+
export default class JoinWebinarError extends Error {
|
|
7
|
+
code: number;
|
|
8
|
+
error: any;
|
|
9
|
+
sdkMessage: string;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @constructor
|
|
13
|
+
* @param {String} [message]
|
|
14
|
+
* @param {Object} [error]
|
|
15
|
+
*/
|
|
16
|
+
constructor(message: string = ERROR_DICTIONARY.JoinWebinarError.MESSAGE, error: any = null) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.name = ERROR_DICTIONARY.JoinWebinarError.NAME;
|
|
19
|
+
this.sdkMessage = ERROR_DICTIONARY.JoinWebinarError.MESSAGE;
|
|
20
|
+
this.error = error;
|
|
21
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
22
|
+
this.code = ERROR_DICTIONARY.JoinWebinarError.CODE;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {ERROR_DICTIONARY} from '../../constants';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Error thrown when we try to do multistream, but fail. This error
|
|
5
|
+
* is not exported outside of plugin-meetings, because it's handled
|
|
6
|
+
* internally.
|
|
7
|
+
*/
|
|
8
|
+
export default class MultistreamNotSupportedError extends Error {
|
|
9
|
+
code: any;
|
|
10
|
+
error: any;
|
|
11
|
+
sdkMessage: any;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @constructor
|
|
16
|
+
* @param {String} [message]
|
|
17
|
+
* @param {Object} [error]
|
|
18
|
+
*/
|
|
19
|
+
constructor(
|
|
20
|
+
message: string = ERROR_DICTIONARY.MULTISTREAM_NOT_SUPPORTED.MESSAGE,
|
|
21
|
+
error: any = null
|
|
22
|
+
) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.name = ERROR_DICTIONARY.MULTISTREAM_NOT_SUPPORTED.NAME;
|
|
25
|
+
this.sdkMessage = ERROR_DICTIONARY.MULTISTREAM_NOT_SUPPORTED.MESSAGE;
|
|
26
|
+
this.error = error;
|
|
27
|
+
this.stack = error ? error.stack : new Error().stack;
|
|
28
|
+
this.code = ERROR_DICTIONARY.MULTISTREAM_NOT_SUPPORTED.CODE;
|
|
29
|
+
}
|
|
30
|
+
}
|
package/src/config.ts
CHANGED
|
@@ -96,6 +96,6 @@ export default {
|
|
|
96
96
|
iceCandidatesGatheringTimeout: undefined,
|
|
97
97
|
backendIpv6NativeSupport: false,
|
|
98
98
|
reachabilityGetClusterTimeout: 5000,
|
|
99
|
-
logUploadIntervalMultiplicationFactor: 0, // if set to 0 or undefined, logs won't be uploaded periodically
|
|
99
|
+
logUploadIntervalMultiplicationFactor: 0, // if set to 0 or undefined, logs won't be uploaded periodically, if you want periodic logs, recommended value is 1
|
|
100
100
|
},
|
|
101
101
|
};
|
package/src/constants.ts
CHANGED
|
@@ -198,6 +198,8 @@ export const RETRY_TIMEOUT = 3000;
|
|
|
198
198
|
|
|
199
199
|
export const ICE_AND_DTLS_CONNECTION_TIMEOUT = 20000;
|
|
200
200
|
export const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
|
|
201
|
+
export const WEBINAR_ERROR_WEBCAST = [403026];
|
|
202
|
+
export const WEBINAR_ERROR_REGISTRATIONID = [403037, 403137];
|
|
201
203
|
|
|
202
204
|
// ******************** REGEX **********************
|
|
203
205
|
// Please alphabetize
|
|
@@ -303,6 +305,7 @@ export const EVENT_TRIGGERS = {
|
|
|
303
305
|
MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',
|
|
304
306
|
MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
|
|
305
307
|
MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',
|
|
308
|
+
MEETING_SELF_BRB_UPDATE: 'meeting:self:brbUpdate',
|
|
306
309
|
MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
|
|
307
310
|
MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
|
|
308
311
|
MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
|
|
@@ -325,6 +328,7 @@ export const EVENT_TRIGGERS = {
|
|
|
325
328
|
MEETING_RECONNECTION_FAILURE: 'meeting:reconnectionFailure',
|
|
326
329
|
MEETING_UNLOCKED: 'meeting:unlocked',
|
|
327
330
|
MEETING_LOCKED: 'meeting:locked',
|
|
331
|
+
MEETING_RESOURCE_LINKS_UPDATE: 'meeting:resourceLinks:update',
|
|
328
332
|
MEETING_INFO_AVAILABLE: 'meeting:meetingInfoAvailable',
|
|
329
333
|
MEETING_INFO_UPDATED: 'meeting:meetingInfoUpdated',
|
|
330
334
|
MEETING_LOG_UPLOAD_SUCCESS: 'meeting:logUpload:success',
|
|
@@ -383,6 +387,13 @@ export const EVENT_TYPES = {
|
|
|
383
387
|
ERROR: 'error',
|
|
384
388
|
};
|
|
385
389
|
|
|
390
|
+
export const HEADERS = {
|
|
391
|
+
CONTENT_TYPE: 'Content-Type',
|
|
392
|
+
CONTENT_TYPE_VALUE: {
|
|
393
|
+
APPLICATION_JSON: 'application/json',
|
|
394
|
+
},
|
|
395
|
+
};
|
|
396
|
+
|
|
386
397
|
// Handles the reason when meeting gets destroyed
|
|
387
398
|
// host removed you from the meeting
|
|
388
399
|
// You are the host and you left the meeting
|
|
@@ -529,11 +540,16 @@ export const ERROR_DICTIONARY = {
|
|
|
529
540
|
'Reconnection was not started, because there is one already in progress or reconnections are disabled in config.',
|
|
530
541
|
CODE: 15,
|
|
531
542
|
},
|
|
532
|
-
|
|
533
|
-
NAME: '
|
|
534
|
-
MESSAGE: 'An error occurred while the webinar
|
|
543
|
+
JoinWebinarError: {
|
|
544
|
+
NAME: 'JoinWebinarError',
|
|
545
|
+
MESSAGE: 'An error occurred while the join webinar.',
|
|
535
546
|
CODE: 16,
|
|
536
547
|
},
|
|
548
|
+
MULTISTREAM_NOT_SUPPORTED: {
|
|
549
|
+
NAME: 'MultistreamNotSupported',
|
|
550
|
+
MESSAGE: 'Client asked for multistream backend (Homer), but got something else instead',
|
|
551
|
+
CODE: 17,
|
|
552
|
+
},
|
|
537
553
|
};
|
|
538
554
|
|
|
539
555
|
export const FLOOR_ACTION = {
|
|
@@ -709,6 +725,7 @@ export const LOCUSINFO = {
|
|
|
709
725
|
SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
|
|
710
726
|
SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
|
|
711
727
|
SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
|
|
728
|
+
SELF_MEETING_BRB_CHANGED: 'SELF_MEETING_BRB_CHANGED',
|
|
712
729
|
MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
|
|
713
730
|
LINKS_SERVICES: 'LINKS_SERVICES',
|
|
714
731
|
LINKS_RESOURCES: 'LINKS_RESOURCES',
|
|
@@ -954,6 +971,7 @@ export const DISPLAY_HINTS = {
|
|
|
954
971
|
DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
|
|
955
972
|
DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
|
|
956
973
|
DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
|
|
974
|
+
DISABLE_BREAKOUT_START: 'DISABLE_BREAKOUT_START',
|
|
957
975
|
|
|
958
976
|
// participants list
|
|
959
977
|
DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
|
|
@@ -1310,6 +1328,8 @@ export const MEETING_INFO_FAILURE_REASON = {
|
|
|
1310
1328
|
WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
|
|
1311
1329
|
POLICY: 'POLICY', // meeting info request violates some meeting policy
|
|
1312
1330
|
WEBINAR_REGISTRATION: 'WEBINAR_REGISTRATION', // webinar need registration
|
|
1331
|
+
NEED_JOIN_WITH_WEBCAST: 'NEED_JOIN_WITH_WEBCAST', // webinar need using webcast join
|
|
1332
|
+
WEBINAR_NEED_REGISTRATIONID: 'WEBINAR_NEED_REGISTRATIONID', // webinar need registrationID
|
|
1313
1333
|
OTHER: 'OTHER', // any other error (network, etc)
|
|
1314
1334
|
};
|
|
1315
1335
|
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ import CaptchaError from './common/errors/captcha-error';
|
|
|
8
8
|
import IntentToJoinError from './common/errors/intent-to-join';
|
|
9
9
|
import PasswordError from './common/errors/password-error';
|
|
10
10
|
import PermissionError from './common/errors/permission';
|
|
11
|
-
import
|
|
11
|
+
import JoinWebinarError from './common/errors/join-webinar-error';
|
|
12
12
|
import {
|
|
13
13
|
ReclaimHostEmptyWrongKeyError,
|
|
14
14
|
ReclaimHostIsHostAlreadyError,
|
|
@@ -27,7 +27,6 @@ registerPlugin('meetings', Meetings, {
|
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
export {
|
|
30
|
-
getDevices,
|
|
31
30
|
LocalStream,
|
|
32
31
|
LocalDisplayStream,
|
|
33
32
|
LocalSystemAudioStream,
|
|
@@ -41,12 +40,15 @@ export {
|
|
|
41
40
|
LocalCameraStream,
|
|
42
41
|
createMicrophoneStream,
|
|
43
42
|
createCameraStream,
|
|
43
|
+
createCameraAndMicrophoneStreams,
|
|
44
44
|
createDisplayStream,
|
|
45
45
|
createDisplayStreamWithAudio,
|
|
46
|
+
createDisplayMedia,
|
|
46
47
|
FacingMode,
|
|
47
48
|
DisplaySurface,
|
|
48
49
|
PresetCameraConstraints,
|
|
49
50
|
type VideoContentHint,
|
|
51
|
+
type StreamState,
|
|
50
52
|
} from '@webex/media-helpers';
|
|
51
53
|
|
|
52
54
|
export default Meetings;
|
|
@@ -69,7 +71,7 @@ export {
|
|
|
69
71
|
ReclaimHostEmptyWrongKeyError,
|
|
70
72
|
Meeting,
|
|
71
73
|
MeetingInfoUtil,
|
|
72
|
-
|
|
74
|
+
JoinWebinarError,
|
|
73
75
|
};
|
|
74
76
|
|
|
75
77
|
export {RemoteMedia} from './multistream/remoteMedia';
|
package/src/locus-info/index.ts
CHANGED
|
@@ -1283,12 +1283,13 @@ export default class LocusInfo extends EventsScope {
|
|
|
1283
1283
|
/**
|
|
1284
1284
|
* handles when the locus.mediaShares is updated
|
|
1285
1285
|
* @param {Object} mediaShares the locus.mediaShares property
|
|
1286
|
+
* @param {boolean} forceUpdate force to update the mediaShares
|
|
1286
1287
|
* @returns {undefined}
|
|
1287
1288
|
* @memberof LocusInfo
|
|
1288
1289
|
* emits internal event locus_info_update_media_shares
|
|
1289
1290
|
*/
|
|
1290
|
-
updateMediaShares(mediaShares: object) {
|
|
1291
|
-
if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {
|
|
1291
|
+
updateMediaShares(mediaShares: object, forceUpdate = false) {
|
|
1292
|
+
if (mediaShares && (!isEqual(this.mediaShares, mediaShares) || forceUpdate)) {
|
|
1292
1293
|
const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);
|
|
1293
1294
|
|
|
1294
1295
|
this.updateMeeting(parsedMediaShares.current);
|
|
@@ -1303,6 +1304,7 @@ export default class LocusInfo extends EventsScope {
|
|
|
1303
1304
|
{
|
|
1304
1305
|
current: parsedMediaShares.current,
|
|
1305
1306
|
previous: parsedMediaShares.previous,
|
|
1307
|
+
forceUpdate,
|
|
1306
1308
|
}
|
|
1307
1309
|
);
|
|
1308
1310
|
}
|
|
@@ -1393,6 +1395,19 @@ export default class LocusInfo extends EventsScope {
|
|
|
1393
1395
|
);
|
|
1394
1396
|
}
|
|
1395
1397
|
|
|
1398
|
+
if (parsedSelves.updates.brbChanged) {
|
|
1399
|
+
this.emitScoped(
|
|
1400
|
+
{
|
|
1401
|
+
file: 'locus-info',
|
|
1402
|
+
function: 'updateSelf',
|
|
1403
|
+
},
|
|
1404
|
+
LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED,
|
|
1405
|
+
{
|
|
1406
|
+
brb: parsedSelves.current.brb,
|
|
1407
|
+
}
|
|
1408
|
+
);
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1396
1411
|
if (parsedSelves.updates.interpretationChanged) {
|
|
1397
1412
|
this.emitScoped(
|
|
1398
1413
|
{
|
|
@@ -66,6 +66,7 @@ SelfUtils.parse = (self: any, deviceId: string) => {
|
|
|
66
66
|
breakoutSessions: SelfUtils.getBreakoutSessions(self),
|
|
67
67
|
breakout: SelfUtils.getBreakout(self),
|
|
68
68
|
interpretation: SelfUtils.getInterpretation(self),
|
|
69
|
+
brb: SelfUtils.getBrb(self),
|
|
69
70
|
};
|
|
70
71
|
}
|
|
71
72
|
|
|
@@ -75,6 +76,7 @@ SelfUtils.parse = (self: any, deviceId: string) => {
|
|
|
75
76
|
SelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;
|
|
76
77
|
SelfUtils.getBreakout = (self) => self?.controls?.breakout;
|
|
77
78
|
SelfUtils.getInterpretation = (self) => self?.controls?.interpretation;
|
|
79
|
+
SelfUtils.getBrb = (self) => self?.controls?.brb;
|
|
78
80
|
|
|
79
81
|
SelfUtils.getLayout = (self) =>
|
|
80
82
|
Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;
|
|
@@ -97,7 +99,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
|
|
|
97
99
|
const current = newSelf && SelfUtils.parse(newSelf, deviceId);
|
|
98
100
|
const updates: any = {};
|
|
99
101
|
|
|
100
|
-
updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);
|
|
102
|
+
updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(previous, current);
|
|
101
103
|
updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);
|
|
102
104
|
updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
|
|
103
105
|
updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
|
|
@@ -128,6 +130,7 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
|
|
|
128
130
|
updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;
|
|
129
131
|
updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
|
|
130
132
|
updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);
|
|
133
|
+
updates.brbChanged = SelfUtils.brbChanged(previous, current);
|
|
131
134
|
|
|
132
135
|
return {
|
|
133
136
|
previous,
|
|
@@ -159,6 +162,9 @@ SelfUtils.breakoutsChanged = (previous, current) =>
|
|
|
159
162
|
SelfUtils.interpretationChanged = (previous, current) =>
|
|
160
163
|
!isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation;
|
|
161
164
|
|
|
165
|
+
SelfUtils.brbChanged = (previous, current) =>
|
|
166
|
+
!isEqual(previous?.brb, current?.brb) && current?.brb !== undefined;
|
|
167
|
+
|
|
162
168
|
SelfUtils.isMediaInactive = (previous, current) => {
|
|
163
169
|
if (
|
|
164
170
|
previous &&
|
|
@@ -324,16 +330,23 @@ SelfUtils.isLocusUserAdmitted = (check: any) =>
|
|
|
324
330
|
check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;
|
|
325
331
|
|
|
326
332
|
/**
|
|
327
|
-
* @param {Object}
|
|
333
|
+
* @param {Object} oldSelf
|
|
334
|
+
* @param {Object} changedSelf
|
|
328
335
|
* @returns {Boolean}
|
|
329
336
|
* @throws {Error} when self is undefined
|
|
330
337
|
*/
|
|
331
|
-
SelfUtils.isUserUnadmitted = (
|
|
332
|
-
if (!
|
|
333
|
-
throw new ParameterError(
|
|
338
|
+
SelfUtils.isUserUnadmitted = (oldSelf: object, changedSelf: object) => {
|
|
339
|
+
if (!changedSelf) {
|
|
340
|
+
throw new ParameterError(
|
|
341
|
+
'changedSelf must be defined to determine if self is unadmitted as guest.'
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
if (SelfUtils.isLocusUserUnadmitted(oldSelf)) {
|
|
346
|
+
return false;
|
|
334
347
|
}
|
|
335
348
|
|
|
336
|
-
return SelfUtils.isLocusUserUnadmitted(
|
|
349
|
+
return SelfUtils.isLocusUserUnadmitted(changedSelf);
|
|
337
350
|
};
|
|
338
351
|
|
|
339
352
|
SelfUtils.moderatorChanged = (oldSelf, changedSelf) => {
|