@webex/plugin-meetings 3.7.0-next.5 → 3.7.0-next.6

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.
Files changed (32) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +4 -0
  4. package/dist/constants.js.map +1 -1
  5. package/dist/interpretation/index.js +1 -1
  6. package/dist/interpretation/siLanguage.js +1 -1
  7. package/dist/meeting/in-meeting-actions.js +2 -0
  8. package/dist/meeting/in-meeting-actions.js.map +1 -1
  9. package/dist/meeting/index.js +1 -0
  10. package/dist/meeting/index.js.map +1 -1
  11. package/dist/recording-controller/enums.js +8 -4
  12. package/dist/recording-controller/enums.js.map +1 -1
  13. package/dist/recording-controller/index.js +18 -9
  14. package/dist/recording-controller/index.js.map +1 -1
  15. package/dist/recording-controller/util.js +13 -9
  16. package/dist/recording-controller/util.js.map +1 -1
  17. package/dist/types/constants.d.ts +4 -0
  18. package/dist/types/meeting/in-meeting-actions.d.ts +2 -0
  19. package/dist/types/recording-controller/enums.d.ts +5 -2
  20. package/dist/types/recording-controller/index.d.ts +1 -0
  21. package/dist/types/recording-controller/util.d.ts +2 -1
  22. package/dist/webinar/index.js +1 -1
  23. package/package.json +21 -21
  24. package/src/constants.ts +4 -0
  25. package/src/meeting/in-meeting-actions.ts +4 -0
  26. package/src/meeting/index.ts +4 -0
  27. package/src/recording-controller/enums.ts +5 -2
  28. package/src/recording-controller/index.ts +17 -4
  29. package/src/recording-controller/util.ts +20 -5
  30. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -0
  31. package/test/unit/spec/recording-controller/index.js +61 -5
  32. package/test/unit/spec/recording-controller/util.js +39 -3
@@ -4,13 +4,17 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
4
4
  _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
8
- var RecordingAction = /*#__PURE__*/function (RecordingAction) {
7
+ exports.RecordingType = exports.RecordingAction = void 0;
8
+ var RecordingAction = exports.RecordingAction = /*#__PURE__*/function (RecordingAction) {
9
9
  RecordingAction["Start"] = "Start";
10
10
  RecordingAction["Stop"] = "Stop";
11
11
  RecordingAction["Pause"] = "Pause";
12
12
  RecordingAction["Resume"] = "Resume";
13
13
  return RecordingAction;
14
- }(RecordingAction || {});
15
- var _default = exports.default = RecordingAction;
14
+ }({});
15
+ var RecordingType = exports.RecordingType = /*#__PURE__*/function (RecordingType) {
16
+ RecordingType["Premise"] = "premise";
17
+ RecordingType["Cloud"] = "cloud";
18
+ return RecordingType;
19
+ }({});
16
20
  //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["RecordingAction","_default","exports","default"],"sources":["enums.ts"],"sourcesContent":["enum RecordingAction {\n Start = 'Start',\n Stop = 'Stop',\n Pause = 'Pause',\n Resume = 'Resume',\n}\n\nexport default RecordingAction;\n"],"mappings":";;;;;;;IAAKA,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA,EAAfA,eAAe;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAOLH,eAAe"}
1
+ {"version":3,"names":["RecordingAction","exports","RecordingType"],"sources":["enums.ts"],"sourcesContent":["export enum RecordingAction {\n Start = 'Start',\n Stop = 'Stop',\n Pause = 'Pause',\n Resume = 'Resume',\n}\n\nexport enum RecordingType {\n Premise = 'premise',\n Cloud = 'cloud',\n}\n"],"mappings":";;;;;;;IAAYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAOfE,aAAa,GAAAD,OAAA,CAAAC,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA"}
@@ -11,10 +11,10 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
13
13
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
14
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
14
15
  var _constants = require("../constants");
15
- var _enums = _interopRequireDefault(require("./enums"));
16
+ var _enums = require("./enums");
16
17
  var _util = _interopRequireDefault(require("./util"));
17
- var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
18
18
  /**
19
19
  * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting
20
20
  * @export
@@ -240,13 +240,14 @@ var RecordingController = exports.default = /*#__PURE__*/function () {
240
240
 
241
241
  /**
242
242
  * @param {RecordingAction} action
243
+ * @param {RecordingType} recordingType
243
244
  * @private
244
245
  * @memberof RecordingController
245
246
  * @returns {Promise}
246
247
  */
247
248
  }, {
248
249
  key: "recordingService",
249
- value: function recordingService(action) {
250
+ value: function recordingService(action, recordingType) {
250
251
  // @ts-ignore
251
252
  return this.request.request({
252
253
  body: {
@@ -255,7 +256,8 @@ var RecordingController = exports.default = /*#__PURE__*/function () {
255
256
  },
256
257
  recording: {
257
258
  action: action.toLowerCase()
258
- }
259
+ },
260
+ recordingType: recordingType
259
261
  },
260
262
  uri: "".concat(this.serviceUrl, "/loci/").concat(this.locusId, "/recording"),
261
263
  method: _constants.HTTP_VERBS.PUT
@@ -293,12 +295,19 @@ var RecordingController = exports.default = /*#__PURE__*/function () {
293
295
  }, {
294
296
  key: "recordingFacade",
295
297
  value: function recordingFacade(action) {
298
+ var isPremiseRecordingEnabled = _util.default.isPremiseRecordingEnabled(this.displayHints, this.selfUserPolicies);
296
299
  _loggerProxy.default.logger.log("RecordingController:index#recordingFacade --> recording action [".concat(action, "]"));
300
+ var recordingType;
301
+ if (isPremiseRecordingEnabled) {
302
+ recordingType = _enums.RecordingType.Premise;
303
+ } else {
304
+ recordingType = _enums.RecordingType.Cloud;
305
+ }
297
306
 
298
307
  // assumes action is proper cased (i.e., Example)
299
308
  if (_util.default !== null && _util.default !== void 0 && _util.default["canUser".concat(action)](this.displayHints, this.selfUserPolicies)) {
300
309
  if (this.serviceUrl) {
301
- return this.recordingService(action);
310
+ return this.recordingService(action, recordingType);
302
311
  }
303
312
  return this.recordingControls(action);
304
313
  }
@@ -313,7 +322,7 @@ var RecordingController = exports.default = /*#__PURE__*/function () {
313
322
  }, {
314
323
  key: "startRecording",
315
324
  value: function startRecording() {
316
- return this.recordingFacade(_enums.default.Start);
325
+ return this.recordingFacade(_enums.RecordingAction.Start);
317
326
  }
318
327
 
319
328
  /**
@@ -324,7 +333,7 @@ var RecordingController = exports.default = /*#__PURE__*/function () {
324
333
  }, {
325
334
  key: "stopRecording",
326
335
  value: function stopRecording() {
327
- return this.recordingFacade(_enums.default.Stop);
336
+ return this.recordingFacade(_enums.RecordingAction.Stop);
328
337
  }
329
338
 
330
339
  /**
@@ -335,7 +344,7 @@ var RecordingController = exports.default = /*#__PURE__*/function () {
335
344
  }, {
336
345
  key: "pauseRecording",
337
346
  value: function pauseRecording() {
338
- return this.recordingFacade(_enums.default.Pause);
347
+ return this.recordingFacade(_enums.RecordingAction.Pause);
339
348
  }
340
349
 
341
350
  /**
@@ -346,7 +355,7 @@ var RecordingController = exports.default = /*#__PURE__*/function () {
346
355
  }, {
347
356
  key: "resumeRecording",
348
357
  value: function resumeRecording() {
349
- return this.recordingFacade(_enums.default.Resume);
358
+ return this.recordingFacade(_enums.RecordingAction.Resume);
350
359
  }
351
360
  }]);
352
361
  return RecordingController;
@@ -1 +1 @@
1
- {"version":3,"names":["_permission","_interopRequireDefault","require","_constants","_enums","_util","_loggerProxy","RecordingController","exports","default","request","options","_classCallCheck2","_defineProperty2","initialize","set","_createClass2","key","value","extract","setLocusUrl","url","locusUrl","locusId","Util","extractLocusId","setDisplayHints","hints","displayHints","setUserPolicy","selfUserPolicies","setSessionId","id","sessionId","setServiceUrl","serviceUrl","getLocusUrl","getLocusId","getSessionId","getServiceUrl","getDisplayHints","recordingService","action","body","meetingInfo","locusSessionId","recording","toLowerCase","uri","concat","method","HTTP_VERBS","PUT","recordingControls","record","deriveRecordingStates","LoggerProxy","logger","log","CONTROLS","PATCH","recordingFacade","_promise","reject","PermissionError","startRecording","RecordingAction","Start","stopRecording","Stop","pauseRecording","Pause","resumeRecording","Resume"],"sources":["index.ts"],"sourcesContent":["import PermissionError from '../common/errors/permission';\nimport {CONTROLS, HTTP_VERBS, SELF_POLICY} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport RecordingAction from './enums';\nimport Util from './util';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class RecordingController {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof RecordingController\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof RecordingInfo\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof RecordingInfo\n */\n private selfUserPolicies: Record<SELF_POLICY, boolean>;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private serviceUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private sessionId: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private locusUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private locusId: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof RecordingController\n */\n constructor(\n request: MeetingRequest,\n options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof RecordingController\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public set(options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\n this.locusId = Util.extractLocusId(this.locusUrl);\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @param {Object} selfUserPolicies\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>) {\n this.selfUserPolicies = selfUserPolicies;\n }\n\n /**\n * @param {string} id\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setSessionId(id: string) {\n this.sessionId = id;\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setServiceUrl(url: string) {\n this.serviceUrl = url;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getLocusId() {\n return this.locusId;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getSessionId() {\n return this.sessionId;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getServiceUrl() {\n return this.serviceUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof RecordingController\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof RecordingController\n */\n private extract(options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }) {\n this.setServiceUrl(options?.serviceUrl);\n this.setSessionId(options?.sessionId);\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingService(action: RecordingAction): Promise<any> {\n // @ts-ignore\n return this.request.request({\n body: {\n meetingInfo: {\n locusSessionId: this.sessionId,\n },\n recording: {\n action: action.toLowerCase(),\n },\n },\n uri: `${this.serviceUrl}/loci/${this.locusId}/recording`,\n method: HTTP_VERBS.PUT,\n });\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingControls(action: RecordingAction): Promise<any> {\n const record = Util.deriveRecordingStates(action);\n\n LoggerProxy.logger.log(`RecordingController:index#recordingControls --> ${record}`);\n\n // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body: {\n record,\n },\n method: HTTP_VERBS.PATCH,\n });\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingFacade(action: RecordingAction): Promise<any> {\n LoggerProxy.logger.log(\n `RecordingController:index#recordingFacade --> recording action [${action}]`\n );\n\n // assumes action is proper cased (i.e., Example)\n if (Util?.[`canUser${action}`](this.displayHints, this.selfUserPolicies)) {\n if (this.serviceUrl) {\n return this.recordingService(action);\n }\n\n return this.recordingControls(action);\n }\n\n return Promise.reject(\n new PermissionError(`${action} recording not allowed, due to moderator property.`)\n );\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public startRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Start);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public stopRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Stop);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public pauseRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Pause);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public resumeRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Resume);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_permission","_interopRequireDefault","require","_loggerProxy","_constants","_enums","_util","RecordingController","exports","default","request","options","_classCallCheck2","_defineProperty2","initialize","set","_createClass2","key","value","extract","setLocusUrl","url","locusUrl","locusId","Util","extractLocusId","setDisplayHints","hints","displayHints","setUserPolicy","selfUserPolicies","setSessionId","id","sessionId","setServiceUrl","serviceUrl","getLocusUrl","getLocusId","getSessionId","getServiceUrl","getDisplayHints","recordingService","action","recordingType","body","meetingInfo","locusSessionId","recording","toLowerCase","uri","concat","method","HTTP_VERBS","PUT","recordingControls","record","deriveRecordingStates","LoggerProxy","logger","log","CONTROLS","PATCH","recordingFacade","isPremiseRecordingEnabled","RecordingType","Premise","Cloud","_promise","reject","PermissionError","startRecording","RecordingAction","Start","stopRecording","Stop","pauseRecording","Pause","resumeRecording","Resume"],"sources":["index.ts"],"sourcesContent":["import PermissionError from '../common/errors/permission';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {CONTROLS, HTTP_VERBS, SELF_POLICY} from '../constants';\nimport MeetingRequest from '../meeting/request';\nimport {RecordingAction, RecordingType} from './enums';\nimport Util from './util';\n\n/**\n * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting\n * @export\n * @private\n * @class Recording\n */\nexport default class RecordingController {\n /**\n * @instance\n * @type {MeetingRequest}\n * @private\n * @memberof RecordingController\n */\n private request: MeetingRequest;\n\n /**\n * @instance\n * @type {Array}\n * @private\n * @memberof RecordingInfo\n */\n private displayHints: Array<string> = [];\n\n /**\n * @instance\n * @type {Object}\n * @private\n * @memberof RecordingInfo\n */\n private selfUserPolicies: Record<SELF_POLICY, boolean>;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private serviceUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private sessionId: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private locusUrl: string;\n\n /**\n * @instance\n * @type {string}\n * @private\n * @memberof RecordingInfo\n */\n private locusId: string;\n\n /**\n * @param {MeetingRequest} request\n * @param {Object} options\n * @constructor\n * @memberof RecordingController\n */\n constructor(\n request: MeetingRequest,\n options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }\n ) {\n this.initialize(request);\n this.set(options);\n }\n\n /**\n * @param {MeetingRequest} request\n * @returns {void}\n * @private\n * @memberof RecordingController\n */\n private initialize(request: MeetingRequest) {\n this.request = request;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public set(options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }) {\n this.extract(options);\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setLocusUrl(url: string) {\n this.locusUrl = url;\n this.locusId = Util.extractLocusId(this.locusUrl);\n }\n\n /**\n * @param {Array} hints\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setDisplayHints(hints: Array<string>) {\n this.displayHints = hints;\n }\n\n /**\n * @param {Object} selfUserPolicies\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setUserPolicy(selfUserPolicies: Record<SELF_POLICY, boolean>) {\n this.selfUserPolicies = selfUserPolicies;\n }\n\n /**\n * @param {string} id\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setSessionId(id: string) {\n this.sessionId = id;\n }\n\n /**\n * @param {string} url\n * @returns {void}\n * @public\n * @memberof RecordingController\n */\n public setServiceUrl(url: string) {\n this.serviceUrl = url;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getLocusUrl() {\n return this.locusUrl;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getLocusId() {\n return this.locusId;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getSessionId() {\n return this.sessionId;\n }\n\n /**\n * @returns {string}\n * @public\n * @memberof RecordingController\n */\n public getServiceUrl() {\n return this.serviceUrl;\n }\n\n /**\n * @returns {Array}\n * @public\n * @memberof RecordingController\n */\n public getDisplayHints() {\n return this.displayHints;\n }\n\n /**\n * @param {Object} options\n * @returns {void}\n * @private\n * @memberof RecordingController\n */\n private extract(options?: {\n serviceUrl?: string;\n sessionId: string;\n locusUrl: string;\n displayHints?: Array<string>;\n }) {\n this.setServiceUrl(options?.serviceUrl);\n this.setSessionId(options?.sessionId);\n this.setDisplayHints(options?.displayHints);\n this.setLocusUrl(options?.locusUrl);\n }\n\n /**\n * @param {RecordingAction} action\n * @param {RecordingType} recordingType\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingService(action: RecordingAction, recordingType: RecordingType): Promise<any> {\n // @ts-ignore\n return this.request.request({\n body: {\n meetingInfo: {\n locusSessionId: this.sessionId,\n },\n recording: {\n action: action.toLowerCase(),\n },\n recordingType,\n },\n uri: `${this.serviceUrl}/loci/${this.locusId}/recording`,\n method: HTTP_VERBS.PUT,\n });\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingControls(action: RecordingAction): Promise<any> {\n const record = Util.deriveRecordingStates(action);\n\n LoggerProxy.logger.log(`RecordingController:index#recordingControls --> ${record}`);\n\n // @ts-ignore\n return this.request.request({\n uri: `${this.locusUrl}/${CONTROLS}`,\n body: {\n record,\n },\n method: HTTP_VERBS.PATCH,\n });\n }\n\n /**\n * @param {RecordingAction} action\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n private recordingFacade(action: RecordingAction): Promise<any> {\n const isPremiseRecordingEnabled = Util.isPremiseRecordingEnabled(\n this.displayHints,\n this.selfUserPolicies\n );\n LoggerProxy.logger.log(\n `RecordingController:index#recordingFacade --> recording action [${action}]`\n );\n\n let recordingType: RecordingType;\n if (isPremiseRecordingEnabled) {\n recordingType = RecordingType.Premise;\n } else {\n recordingType = RecordingType.Cloud;\n }\n\n // assumes action is proper cased (i.e., Example)\n if (Util?.[`canUser${action}`](this.displayHints, this.selfUserPolicies)) {\n if (this.serviceUrl) {\n return this.recordingService(action, recordingType);\n }\n\n return this.recordingControls(action);\n }\n\n return Promise.reject(\n new PermissionError(`${action} recording not allowed, due to moderator property.`)\n );\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public startRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Start);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public stopRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Stop);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public pauseRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Pause);\n }\n\n /**\n * @private\n * @memberof RecordingController\n * @returns {Promise}\n */\n public resumeRecording(): Promise<any> {\n return this.recordingFacade(RecordingAction.Resume);\n }\n}\n"],"mappings":"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"}
@@ -7,19 +7,22 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _constants = require("../constants");
10
- var _enums = _interopRequireDefault(require("./enums"));
10
+ var _enums = require("./enums");
11
11
  var _util = _interopRequireDefault(require("../meeting/util"));
12
12
  var canUserStart = function canUserStart(displayHints, userPolicies) {
13
- return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_START) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
13
+ return (displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_START) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
14
14
  };
15
15
  var canUserPause = function canUserPause(displayHints, userPolicies) {
16
- return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
16
+ return (displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
17
17
  };
18
18
  var canUserResume = function canUserResume(displayHints, userPolicies) {
19
- return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_RESUME) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
19
+ return (displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_RESUME) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
20
20
  };
21
21
  var canUserStop = function canUserStop(displayHints, userPolicies) {
22
- return displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_STOP) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
22
+ return (displayHints.includes(_constants.DISPLAY_HINTS.RECORDING_CONTROL_STOP) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
23
+ };
24
+ var isPremiseRecordingEnabled = function isPremiseRecordingEnabled(displayHints, userPolicies) {
25
+ return (displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) || displayHints.includes(_constants.DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) && _util.default.selfSupportsFeature(_constants.SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
23
26
  };
24
27
  var extractLocusId = function extractLocusId(url) {
25
28
  return url === null || url === void 0 ? void 0 : url.split('/').pop();
@@ -28,19 +31,19 @@ var deriveRecordingStates = function deriveRecordingStates(action) {
28
31
  var recording;
29
32
  var paused;
30
33
  switch (action) {
31
- case _enums.default.Start:
34
+ case _enums.RecordingAction.Start:
32
35
  recording = true;
33
36
  paused = false;
34
37
  break;
35
- case _enums.default.Stop:
38
+ case _enums.RecordingAction.Stop:
36
39
  recording = false;
37
40
  paused = false;
38
41
  break;
39
- case _enums.default.Resume:
42
+ case _enums.RecordingAction.Resume:
40
43
  recording = true;
41
44
  paused = false;
42
45
  break;
43
- case _enums.default.Pause:
46
+ case _enums.RecordingAction.Pause:
44
47
  recording = true;
45
48
  paused = true;
46
49
  break;
@@ -57,6 +60,7 @@ var _default = exports.default = {
57
60
  canUserPause: canUserPause,
58
61
  canUserResume: canUserResume,
59
62
  canUserStop: canUserStop,
63
+ isPremiseRecordingEnabled: isPremiseRecordingEnabled,
60
64
  deriveRecordingStates: deriveRecordingStates,
61
65
  extractLocusId: extractLocusId
62
66
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_enums","_interopRequireDefault","_util","canUserStart","displayHints","userPolicies","includes","DISPLAY_HINTS","RECORDING_CONTROL_START","MeetingUtil","selfSupportsFeature","SELF_POLICY","SUPPORT_NETWORK_BASED_RECORD","canUserPause","RECORDING_CONTROL_PAUSE","canUserResume","RECORDING_CONTROL_RESUME","canUserStop","RECORDING_CONTROL_STOP","extractLocusId","url","split","pop","deriveRecordingStates","action","recording","paused","RecordingAction","Start","Stop","Resume","Pause","Error","concat","_default","exports","default"],"sources":["util.ts"],"sourcesContent":["import {DISPLAY_HINTS, SELF_POLICY} from '../constants';\nimport RecordingAction from './enums';\nimport MeetingUtil from '../meeting/util';\n\nconst canUserStart = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserPause = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserResume = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserStop = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst extractLocusId = (url: string) => {\n return url?.split('/').pop();\n};\n\nconst deriveRecordingStates = (action: RecordingAction): {recording: boolean; paused: boolean} => {\n let recording;\n let paused;\n\n switch (action) {\n case RecordingAction.Start:\n recording = true;\n paused = false;\n break;\n case RecordingAction.Stop:\n recording = false;\n paused = false;\n break;\n case RecordingAction.Resume:\n recording = true;\n paused = false;\n break;\n case RecordingAction.Pause:\n recording = true;\n paused = true;\n break;\n default:\n throw new Error(`Recording state cannot be derived from invalid action: ${action}`);\n }\n\n return {\n recording,\n paused,\n };\n};\n\nexport default {\n canUserStart,\n canUserPause,\n canUserResume,\n canUserStop,\n deriveRecordingStates,\n extractLocusId,\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAD,sBAAA,CAAAF,OAAA;AAEA,IAAMI,YAAY,GAAG,SAAfA,YAAYA,CAChBC,YAA2B,EAC3BC,YAA0C;EAAA,OAE1CD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACC,uBAAuB,CAAC,IAC5DC,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAEP,YAAY,CAAC;AAAA;AAEzF,IAAMQ,YAAY,GAAG,SAAfA,YAAYA,CAChBT,YAA2B,EAC3BC,YAA0C;EAAA,OAE1CD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACO,uBAAuB,CAAC,IAC5DL,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAEP,YAAY,CAAC;AAAA;AAEzF,IAAMU,aAAa,GAAG,SAAhBA,aAAaA,CACjBX,YAA2B,EAC3BC,YAA0C;EAAA,OAE1CD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACS,wBAAwB,CAAC,IAC7DP,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAEP,YAAY,CAAC;AAAA;AAEzF,IAAMY,WAAW,GAAG,SAAdA,WAAWA,CACfb,YAA2B,EAC3BC,YAA0C;EAAA,OAE1CD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACW,sBAAsB,CAAC,IAC3DT,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAEP,YAAY,CAAC;AAAA;AAEzF,IAAMc,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,GAAW,EAAK;EACtC,OAAOA,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIC,MAAuB,EAA4C;EAChG,IAAIC,SAAS;EACb,IAAIC,MAAM;EAEV,QAAQF,MAAM;IACZ,KAAKG,cAAe,CAACC,KAAK;MACxBH,SAAS,GAAG,IAAI;MAChBC,MAAM,GAAG,KAAK;MACd;IACF,KAAKC,cAAe,CAACE,IAAI;MACvBJ,SAAS,GAAG,KAAK;MACjBC,MAAM,GAAG,KAAK;MACd;IACF,KAAKC,cAAe,CAACG,MAAM;MACzBL,SAAS,GAAG,IAAI;MAChBC,MAAM,GAAG,KAAK;MACd;IACF,KAAKC,cAAe,CAACI,KAAK;MACxBN,SAAS,GAAG,IAAI;MAChBC,MAAM,GAAG,IAAI;MACb;IACF;MACE,MAAM,IAAIM,KAAK,2DAAAC,MAAA,CAA2DT,MAAM,CAAE,CAAC;EACvF;EAEA,OAAO;IACLC,SAAS,EAATA,SAAS;IACTC,MAAM,EAANA;EACF,CAAC;AACH,CAAC;AAAC,IAAAQ,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa;EACbjC,YAAY,EAAZA,YAAY;EACZU,YAAY,EAAZA,YAAY;EACZE,aAAa,EAAbA,aAAa;EACbE,WAAW,EAAXA,WAAW;EACXM,qBAAqB,EAArBA,qBAAqB;EACrBJ,cAAc,EAAdA;AACF,CAAC"}
1
+ {"version":3,"names":["_constants","require","_enums","_util","_interopRequireDefault","canUserStart","displayHints","userPolicies","includes","DISPLAY_HINTS","RECORDING_CONTROL_START","PREMISE_RECORDING_CONTROL_START","MeetingUtil","selfSupportsFeature","SELF_POLICY","SUPPORT_NETWORK_BASED_RECORD","canUserPause","RECORDING_CONTROL_PAUSE","PREMISE_RECORDING_CONTROL_PAUSE","canUserResume","RECORDING_CONTROL_RESUME","PREMISE_RECORDING_CONTROL_RESUME","canUserStop","RECORDING_CONTROL_STOP","PREMISE_RECORDING_CONTROL_STOP","isPremiseRecordingEnabled","extractLocusId","url","split","pop","deriveRecordingStates","action","recording","paused","RecordingAction","Start","Stop","Resume","Pause","Error","concat","_default","exports","default"],"sources":["util.ts"],"sourcesContent":["import {DISPLAY_HINTS, SELF_POLICY} from '../constants';\nimport {RecordingAction} from './enums';\nimport MeetingUtil from '../meeting/util';\n\nconst canUserStart = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserPause = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserResume = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst canUserStop = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst isPremiseRecordingEnabled = (\n displayHints: Array<string>,\n userPolicies: Record<SELF_POLICY, boolean>\n): boolean =>\n (displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) ||\n displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) &&\n MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);\n\nconst extractLocusId = (url: string) => {\n return url?.split('/').pop();\n};\n\nconst deriveRecordingStates = (action: RecordingAction): {recording: boolean; paused: boolean} => {\n let recording;\n let paused;\n\n switch (action) {\n case RecordingAction.Start:\n recording = true;\n paused = false;\n break;\n case RecordingAction.Stop:\n recording = false;\n paused = false;\n break;\n case RecordingAction.Resume:\n recording = true;\n paused = false;\n break;\n case RecordingAction.Pause:\n recording = true;\n paused = true;\n break;\n default:\n throw new Error(`Recording state cannot be derived from invalid action: ${action}`);\n }\n\n return {\n recording,\n paused,\n };\n};\n\nexport default {\n canUserStart,\n canUserPause,\n canUserResume,\n canUserStop,\n isPremiseRecordingEnabled,\n deriveRecordingStates,\n extractLocusId,\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAMI,YAAY,GAAG,SAAfA,YAAYA,CAChBC,YAA2B,EAC3BC,YAA0C;EAAA,OAE1C,CAACD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACC,uBAAuB,CAAC,IAC3DJ,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACE,+BAA+B,CAAC,KACtEC,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAER,YAAY,CAAC;AAAA;AAEzF,IAAMS,YAAY,GAAG,SAAfA,YAAYA,CAChBV,YAA2B,EAC3BC,YAA0C;EAAA,OAE1C,CAACD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACQ,uBAAuB,CAAC,IAC3DX,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACS,+BAA+B,CAAC,KACtEN,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAER,YAAY,CAAC;AAAA;AAEzF,IAAMY,aAAa,GAAG,SAAhBA,aAAaA,CACjBb,YAA2B,EAC3BC,YAA0C;EAAA,OAE1C,CAACD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACW,wBAAwB,CAAC,IAC5Dd,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACY,gCAAgC,CAAC,KACvET,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAER,YAAY,CAAC;AAAA;AAEzF,IAAMe,WAAW,GAAG,SAAdA,WAAWA,CACfhB,YAA2B,EAC3BC,YAA0C;EAAA,OAE1C,CAACD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACc,sBAAsB,CAAC,IAC1DjB,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACe,8BAA8B,CAAC,KACrEZ,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAER,YAAY,CAAC;AAAA;AAEzF,IAAMkB,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAC7BnB,YAA2B,EAC3BC,YAA0C;EAAA,OAE1C,CAACD,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACE,+BAA+B,CAAC,IACnEL,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACS,+BAA+B,CAAC,IACpEZ,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACe,8BAA8B,CAAC,IACnElB,YAAY,CAACE,QAAQ,CAACC,wBAAa,CAACY,gCAAgC,CAAC,KACvET,aAAW,CAACC,mBAAmB,CAACC,sBAAW,CAACC,4BAA4B,EAAER,YAAY,CAAC;AAAA;AAEzF,IAAMmB,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,GAAW,EAAK;EACtC,OAAOA,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIC,MAAuB,EAA4C;EAChG,IAAIC,SAAS;EACb,IAAIC,MAAM;EAEV,QAAQF,MAAM;IACZ,KAAKG,sBAAe,CAACC,KAAK;MACxBH,SAAS,GAAG,IAAI;MAChBC,MAAM,GAAG,KAAK;MACd;IACF,KAAKC,sBAAe,CAACE,IAAI;MACvBJ,SAAS,GAAG,KAAK;MACjBC,MAAM,GAAG,KAAK;MACd;IACF,KAAKC,sBAAe,CAACG,MAAM;MACzBL,SAAS,GAAG,IAAI;MAChBC,MAAM,GAAG,KAAK;MACd;IACF,KAAKC,sBAAe,CAACI,KAAK;MACxBN,SAAS,GAAG,IAAI;MAChBC,MAAM,GAAG,IAAI;MACb;IACF;MACE,MAAM,IAAIM,KAAK,2DAAAC,MAAA,CAA2DT,MAAM,CAAE,CAAC;EACvF;EAEA,OAAO;IACLC,SAAS,EAATA,SAAS;IACTC,MAAM,EAANA;EACF,CAAC;AACH,CAAC;AAAC,IAAAQ,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa;EACbtC,YAAY,EAAZA,YAAY;EACZW,YAAY,EAAZA,YAAY;EACZG,aAAa,EAAbA,aAAa;EACbG,WAAW,EAAXA,WAAW;EACXG,yBAAyB,EAAzBA,yBAAyB;EACzBK,qBAAqB,EAArBA,qBAAqB;EACrBJ,cAAc,EAAdA;AACF,CAAC"}
@@ -738,6 +738,10 @@ export declare const DISPLAY_HINTS: {
738
738
  RECORDING_CONTROL_PAUSE: string;
739
739
  RECORDING_CONTROL_STOP: string;
740
740
  RECORDING_CONTROL_RESUME: string;
741
+ PREMISE_RECORDING_CONTROL_START: string;
742
+ PREMISE_RECORDING_CONTROL_PAUSE: string;
743
+ PREMISE_RECORDING_CONTROL_STOP: string;
744
+ PREMISE_RECORDING_CONTROL_RESUME: string;
741
745
  LOCK_CONTROL_UNLOCK: string;
742
746
  LOCK_CONTROL_LOCK: string;
743
747
  LOCK_STATUS_LOCKED: string;
@@ -22,6 +22,7 @@ interface IInMeetingActions {
22
22
  canStartRecording?: boolean;
23
23
  canPauseRecording?: boolean;
24
24
  canResumeRecording?: boolean;
25
+ isPremiseRecordingEnabled?: boolean;
25
26
  canStopRecording?: boolean;
26
27
  canRaiseHand?: boolean;
27
28
  canLowerAllHands?: boolean;
@@ -107,6 +108,7 @@ export default class InMeetingActions implements IInMeetingActions {
107
108
  canStartRecording: any;
108
109
  canPauseRecording: any;
109
110
  canResumeRecording: any;
111
+ isPremiseRecordingEnabled: any;
110
112
  canStopRecording: any;
111
113
  canSetMuteOnEntry: any;
112
114
  canSetPresenter: any;
@@ -1,7 +1,10 @@
1
- declare enum RecordingAction {
1
+ export declare enum RecordingAction {
2
2
  Start = "Start",
3
3
  Stop = "Stop",
4
4
  Pause = "Pause",
5
5
  Resume = "Resume"
6
6
  }
7
- export default RecordingAction;
7
+ export declare enum RecordingType {
8
+ Premise = "premise",
9
+ Cloud = "cloud"
10
+ }
@@ -161,6 +161,7 @@ export default class RecordingController {
161
161
  private extract;
162
162
  /**
163
163
  * @param {RecordingAction} action
164
+ * @param {RecordingType} recordingType
164
165
  * @private
165
166
  * @memberof RecordingController
166
167
  * @returns {Promise}
@@ -1,10 +1,11 @@
1
1
  import { SELF_POLICY } from '../constants';
2
- import RecordingAction from './enums';
2
+ import { RecordingAction } from './enums';
3
3
  declare const _default: {
4
4
  canUserStart: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
5
5
  canUserPause: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
6
6
  canUserResume: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
7
7
  canUserStop: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
8
+ isPremiseRecordingEnabled: (displayHints: string[], userPolicies: Record<SELF_POLICY, boolean>) => boolean;
8
9
  deriveRecordingStates: (action: RecordingAction) => {
9
10
  recording: boolean;
10
11
  paused: boolean;
@@ -107,7 +107,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
107
107
  updatePracticeSessionStatus: function updatePracticeSessionStatus(payload) {
108
108
  this.set('practiceSessionEnabled', payload.enabled);
109
109
  },
110
- version: "3.7.0-next.5"
110
+ version: "3.7.0-next.6"
111
111
  });
112
112
  var _default = exports.default = Webinar;
113
113
  //# sourceMappingURL=index.js.map
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-next.5",
47
- "@webex/plugin-rooms": "3.7.0-next.1",
48
- "@webex/test-helper-chai": "3.7.0-next.1",
49
- "@webex/test-helper-mocha": "3.7.0-next.1",
50
- "@webex/test-helper-mock-webex": "3.7.0-next.1",
51
- "@webex/test-helper-retry": "3.7.0-next.1",
52
- "@webex/test-helper-test-users": "3.7.0-next.1",
46
+ "@webex/plugin-meetings": "3.7.0-next.6",
47
+ "@webex/plugin-rooms": "3.7.0-next.2",
48
+ "@webex/test-helper-chai": "3.7.0-next.2",
49
+ "@webex/test-helper-mocha": "3.7.0-next.2",
50
+ "@webex/test-helper-mock-webex": "3.7.0-next.2",
51
+ "@webex/test-helper-retry": "3.7.0-next.2",
52
+ "@webex/test-helper-test-users": "3.7.0-next.2",
53
53
  "chai": "^4.3.4",
54
54
  "chai-as-promised": "^7.1.1",
55
55
  "eslint": "^8.24.0",
@@ -61,21 +61,21 @@
61
61
  "typescript": "^4.7.4"
62
62
  },
63
63
  "dependencies": {
64
- "@webex/common": "3.7.0-next.1",
64
+ "@webex/common": "3.7.0-next.2",
65
65
  "@webex/internal-media-core": "2.12.2",
66
- "@webex/internal-plugin-conversation": "3.7.0-next.1",
67
- "@webex/internal-plugin-device": "3.7.0-next.1",
68
- "@webex/internal-plugin-llm": "3.7.0-next.1",
69
- "@webex/internal-plugin-mercury": "3.7.0-next.1",
70
- "@webex/internal-plugin-metrics": "3.7.0-next.1",
71
- "@webex/internal-plugin-support": "3.7.0-next.1",
72
- "@webex/internal-plugin-user": "3.7.0-next.1",
73
- "@webex/internal-plugin-voicea": "3.7.0-next.5",
74
- "@webex/media-helpers": "3.7.0-next.1",
75
- "@webex/plugin-people": "3.7.0-next.1",
76
- "@webex/plugin-rooms": "3.7.0-next.1",
66
+ "@webex/internal-plugin-conversation": "3.7.0-next.2",
67
+ "@webex/internal-plugin-device": "3.7.0-next.2",
68
+ "@webex/internal-plugin-llm": "3.7.0-next.2",
69
+ "@webex/internal-plugin-mercury": "3.7.0-next.2",
70
+ "@webex/internal-plugin-metrics": "3.7.0-next.2",
71
+ "@webex/internal-plugin-support": "3.7.0-next.2",
72
+ "@webex/internal-plugin-user": "3.7.0-next.2",
73
+ "@webex/internal-plugin-voicea": "3.7.0-next.6",
74
+ "@webex/media-helpers": "3.7.0-next.2",
75
+ "@webex/plugin-people": "3.7.0-next.2",
76
+ "@webex/plugin-rooms": "3.7.0-next.2",
77
77
  "@webex/web-capabilities": "^1.4.0",
78
- "@webex/webex-core": "3.7.0-next.1",
78
+ "@webex/webex-core": "3.7.0-next.2",
79
79
  "ampersand-collection": "^2.0.2",
80
80
  "bowser": "^2.11.0",
81
81
  "btoa": "^1.2.1",
@@ -91,5 +91,5 @@
91
91
  "//": [
92
92
  "TODO: upgrade jwt-decode when moving to node 18"
93
93
  ],
94
- "version": "3.7.0-next.5"
94
+ "version": "3.7.0-next.6"
95
95
  }
package/src/constants.ts CHANGED
@@ -904,6 +904,10 @@ export const DISPLAY_HINTS = {
904
904
  RECORDING_CONTROL_PAUSE: 'RECORDING_CONTROL_PAUSE',
905
905
  RECORDING_CONTROL_STOP: 'RECORDING_CONTROL_STOP',
906
906
  RECORDING_CONTROL_RESUME: 'RECORDING_CONTROL_RESUME',
907
+ PREMISE_RECORDING_CONTROL_START: 'PREMISE_RECORDING_CONTROL_START',
908
+ PREMISE_RECORDING_CONTROL_PAUSE: 'PREMISE_RECORDING_CONTROL_PAUSE',
909
+ PREMISE_RECORDING_CONTROL_STOP: 'PREMISE_RECORDING_CONTROL_STOP',
910
+ PREMISE_RECORDING_CONTROL_RESUME: 'PREMISE_RECORDING_CONTROL_RESUME',
907
911
  LOCK_CONTROL_UNLOCK: 'LOCK_CONTROL_UNLOCK',
908
912
  LOCK_CONTROL_LOCK: 'LOCK_CONTROL_LOCK',
909
913
  LOCK_STATUS_LOCKED: 'LOCK_STATUS_LOCKED',
@@ -26,6 +26,7 @@ interface IInMeetingActions {
26
26
  canStartRecording?: boolean;
27
27
  canPauseRecording?: boolean;
28
28
  canResumeRecording?: boolean;
29
+ isPremiseRecordingEnabled?: boolean;
29
30
  canStopRecording?: boolean;
30
31
  canRaiseHand?: boolean;
31
32
  canLowerAllHands?: boolean;
@@ -121,6 +122,8 @@ export default class InMeetingActions implements IInMeetingActions {
121
122
 
122
123
  canResumeRecording = null;
123
124
 
125
+ isPremiseRecordingEnabled = null;
126
+
124
127
  canStopRecording = null;
125
128
 
126
129
  canSetMuteOnEntry = null;
@@ -301,6 +304,7 @@ export default class InMeetingActions implements IInMeetingActions {
301
304
  canPauseRecording: this.canPauseRecording,
302
305
  canResumeRecording: this.canResumeRecording,
303
306
  canStopRecording: this.canStopRecording,
307
+ isPremiseRecordingEnabled: this.isPremiseRecordingEnabled,
304
308
  canRaiseHand: this.canRaiseHand,
305
309
  canLowerAllHands: this.canLowerAllHands,
306
310
  canLowerSomeoneElsesHand: this.canLowerSomeoneElsesHand,
@@ -3774,6 +3774,10 @@ export default class Meeting extends StatelessWebexPlugin {
3774
3774
  this.userDisplayHints,
3775
3775
  this.selfUserPolicies
3776
3776
  ),
3777
+ isPremiseRecordingEnabled: RecordingUtil.isPremiseRecordingEnabled(
3778
+ this.userDisplayHints,
3779
+ this.selfUserPolicies
3780
+ ),
3777
3781
  canRaiseHand: MeetingUtil.canUserRaiseHand(this.userDisplayHints),
3778
3782
  canLowerAllHands: MeetingUtil.canUserLowerAllHands(this.userDisplayHints),
3779
3783
  canLowerSomeoneElsesHand: MeetingUtil.canUserLowerSomeoneElsesHand(this.userDisplayHints),
@@ -1,8 +1,11 @@
1
- enum RecordingAction {
1
+ export enum RecordingAction {
2
2
  Start = 'Start',
3
3
  Stop = 'Stop',
4
4
  Pause = 'Pause',
5
5
  Resume = 'Resume',
6
6
  }
7
7
 
8
- export default RecordingAction;
8
+ export enum RecordingType {
9
+ Premise = 'premise',
10
+ Cloud = 'cloud',
11
+ }
@@ -1,9 +1,9 @@
1
1
  import PermissionError from '../common/errors/permission';
2
+ import LoggerProxy from '../common/logs/logger-proxy';
2
3
  import {CONTROLS, HTTP_VERBS, SELF_POLICY} from '../constants';
3
4
  import MeetingRequest from '../meeting/request';
4
- import RecordingAction from './enums';
5
+ import {RecordingAction, RecordingType} from './enums';
5
6
  import Util from './util';
6
- import LoggerProxy from '../common/logs/logger-proxy';
7
7
 
8
8
  /**
9
9
  * @description Recording manages the recording functionality of the meeting object, there should only be one instantation of recording per meeting
@@ -228,11 +228,12 @@ export default class RecordingController {
228
228
 
229
229
  /**
230
230
  * @param {RecordingAction} action
231
+ * @param {RecordingType} recordingType
231
232
  * @private
232
233
  * @memberof RecordingController
233
234
  * @returns {Promise}
234
235
  */
235
- private recordingService(action: RecordingAction): Promise<any> {
236
+ private recordingService(action: RecordingAction, recordingType: RecordingType): Promise<any> {
236
237
  // @ts-ignore
237
238
  return this.request.request({
238
239
  body: {
@@ -242,6 +243,7 @@ export default class RecordingController {
242
243
  recording: {
243
244
  action: action.toLowerCase(),
244
245
  },
246
+ recordingType,
245
247
  },
246
248
  uri: `${this.serviceUrl}/loci/${this.locusId}/recording`,
247
249
  method: HTTP_VERBS.PUT,
@@ -276,14 +278,25 @@ export default class RecordingController {
276
278
  * @returns {Promise}
277
279
  */
278
280
  private recordingFacade(action: RecordingAction): Promise<any> {
281
+ const isPremiseRecordingEnabled = Util.isPremiseRecordingEnabled(
282
+ this.displayHints,
283
+ this.selfUserPolicies
284
+ );
279
285
  LoggerProxy.logger.log(
280
286
  `RecordingController:index#recordingFacade --> recording action [${action}]`
281
287
  );
282
288
 
289
+ let recordingType: RecordingType;
290
+ if (isPremiseRecordingEnabled) {
291
+ recordingType = RecordingType.Premise;
292
+ } else {
293
+ recordingType = RecordingType.Cloud;
294
+ }
295
+
283
296
  // assumes action is proper cased (i.e., Example)
284
297
  if (Util?.[`canUser${action}`](this.displayHints, this.selfUserPolicies)) {
285
298
  if (this.serviceUrl) {
286
- return this.recordingService(action);
299
+ return this.recordingService(action, recordingType);
287
300
  }
288
301
 
289
302
  return this.recordingControls(action);
@@ -1,33 +1,47 @@
1
1
  import {DISPLAY_HINTS, SELF_POLICY} from '../constants';
2
- import RecordingAction from './enums';
2
+ import {RecordingAction} from './enums';
3
3
  import MeetingUtil from '../meeting/util';
4
4
 
5
5
  const canUserStart = (
6
6
  displayHints: Array<string>,
7
7
  userPolicies: Record<SELF_POLICY, boolean>
8
8
  ): boolean =>
9
- displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) &&
9
+ (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START) ||
10
+ displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START)) &&
10
11
  MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
11
12
 
12
13
  const canUserPause = (
13
14
  displayHints: Array<string>,
14
15
  userPolicies: Record<SELF_POLICY, boolean>
15
16
  ): boolean =>
16
- displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) &&
17
+ (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE) ||
18
+ displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE)) &&
17
19
  MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
18
20
 
19
21
  const canUserResume = (
20
22
  displayHints: Array<string>,
21
23
  userPolicies: Record<SELF_POLICY, boolean>
22
24
  ): boolean =>
23
- displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) &&
25
+ (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME) ||
26
+ displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) &&
24
27
  MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
25
28
 
26
29
  const canUserStop = (
27
30
  displayHints: Array<string>,
28
31
  userPolicies: Record<SELF_POLICY, boolean>
29
32
  ): boolean =>
30
- displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) &&
33
+ (displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP) ||
34
+ displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP)) &&
35
+ MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
36
+
37
+ const isPremiseRecordingEnabled = (
38
+ displayHints: Array<string>,
39
+ userPolicies: Record<SELF_POLICY, boolean>
40
+ ): boolean =>
41
+ (displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_START) ||
42
+ displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_PAUSE) ||
43
+ displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_STOP) ||
44
+ displayHints.includes(DISPLAY_HINTS.PREMISE_RECORDING_CONTROL_RESUME)) &&
31
45
  MeetingUtil.selfSupportsFeature(SELF_POLICY.SUPPORT_NETWORK_BASED_RECORD, userPolicies);
32
46
 
33
47
  const extractLocusId = (url: string) => {
@@ -70,6 +84,7 @@ export default {
70
84
  canUserPause,
71
85
  canUserResume,
72
86
  canUserStop,
87
+ isPremiseRecordingEnabled,
73
88
  deriveRecordingStates,
74
89
  extractLocusId,
75
90
  };
@@ -33,6 +33,7 @@ describe('plugin-meetings', () => {
33
33
  canStartManualCaption: null,
34
34
  canStopManualCaption: null,
35
35
  isManualCaptionActive: null,
36
+ isPremiseRecordingEnabled: null,
36
37
  isSaveTranscriptsEnabled: null,
37
38
  isWebexAssistantActive: null,
38
39
  canViewCaptionPanel: null,
@@ -131,6 +132,7 @@ describe('plugin-meetings', () => {
131
132
  'canStartManualCaption',
132
133
  'canStopManualCaption',
133
134
  'isManualCaptionActive',
135
+ 'isPremiseRecordingEnabled',
134
136
  'isSaveTranscriptsEnabled',
135
137
  'isWebexAssistantActive',
136
138
  'canViewCaptionPanel',