@webex/plugin-device-manager 3.10.0-wxc-disconnect.1 → 3.11.0

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","DeviceCollection","devices","get","deviceId","set","device","id","identity","existingDevice","merge","reset","getAll","_values","default","_default","exports"],"sources":["collection.js"],"sourcesContent":["import {merge} from 'lodash';\n\nconst DeviceCollection = {\n devices: {},\n\n get(deviceId) {\n return this.devices[deviceId];\n },\n\n set(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n // check if the device is already existing, if so then merge else add\n const existingDevice = this.devices[deviceId];\n\n if (existingDevice) {\n // already existing, merge for any new binding information\n merge(existingDevice, device);\n } else {\n this.devices[deviceId] = device;\n }\n },\n\n reset() {\n this.devices = {};\n },\n\n getAll() {\n return Object.values(this.devices);\n },\n};\n\nexport default DeviceCollection;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAMC,gBAAgB,GAAG;EACvBC,OAAO,EAAE,CAAC,CAAC;EAEXC,GAAG,WAAAA,IAACC,QAAQ,EAAE;IACZ,OAAO,IAAI,CAACF,OAAO,CAACE,QAAQ,CAAC;EAC/B,CAAC;EAEDC,GAAG,WAAAA,IAACC,MAAM,EAAE;IACV,IAAMF,QAAQ,GAAGE,MAAM,CAACC,EAAE,IAAKD,MAAM,CAACE,QAAQ,IAAIF,MAAM,CAACE,QAAQ,CAACD,EAAG;IACrE;IACA,IAAME,cAAc,GAAG,IAAI,CAACP,OAAO,CAACE,QAAQ,CAAC;IAE7C,IAAIK,cAAc,EAAE;MAClB;MACA,IAAAC,aAAK,EAACD,cAAc,EAAEH,MAAM,CAAC;IAC/B,CAAC,MAAM;MACL,IAAI,CAACJ,OAAO,CAACE,QAAQ,CAAC,GAAGE,MAAM;IACjC;EACF,CAAC;EAEDK,KAAK,WAAAA,MAAA,EAAG;IACN,IAAI,CAACT,OAAO,GAAG,CAAC,CAAC;EACnB,CAAC;EAEDU,MAAM,WAAAA,OAAA,EAAG;IACP,OAAO,IAAAC,OAAA,CAAAC,OAAA,EAAc,IAAI,CAACZ,OAAO,CAAC;EACpC;AACF,CAAC;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAEab,gBAAgB"}
1
+ {"version":3,"names":["_lodash","require","DeviceCollection","devices","get","deviceId","set","device","id","identity","existingDevice","merge","reset","getAll","_values","default","_default","exports"],"sources":["collection.js"],"sourcesContent":["import {merge} from 'lodash';\n\nconst DeviceCollection = {\n devices: {},\n\n get(deviceId) {\n return this.devices[deviceId];\n },\n\n set(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n // check if the device is already existing, if so then merge else add\n const existingDevice = this.devices[deviceId];\n\n if (existingDevice) {\n // already existing, merge for any new binding information\n merge(existingDevice, device);\n } else {\n this.devices[deviceId] = device;\n }\n },\n\n reset() {\n this.devices = {};\n },\n\n getAll() {\n return Object.values(this.devices);\n },\n};\n\nexport default DeviceCollection;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAMC,gBAAgB,GAAG;EACvBC,OAAO,EAAE,CAAC,CAAC;EAEXC,GAAG,WAAHA,GAAGA,CAACC,QAAQ,EAAE;IACZ,OAAO,IAAI,CAACF,OAAO,CAACE,QAAQ,CAAC;EAC/B,CAAC;EAEDC,GAAG,WAAHA,GAAGA,CAACC,MAAM,EAAE;IACV,IAAMF,QAAQ,GAAGE,MAAM,CAACC,EAAE,IAAKD,MAAM,CAACE,QAAQ,IAAIF,MAAM,CAACE,QAAQ,CAACD,EAAG;IACrE;IACA,IAAME,cAAc,GAAG,IAAI,CAACP,OAAO,CAACE,QAAQ,CAAC;IAE7C,IAAIK,cAAc,EAAE;MAClB;MACA,IAAAC,aAAK,EAACD,cAAc,EAAEH,MAAM,CAAC;IAC/B,CAAC,MAAM;MACL,IAAI,CAACJ,OAAO,CAACE,QAAQ,CAAC,GAAGE,MAAM;IACjC;EACF,CAAC;EAEDK,KAAK,WAALA,KAAKA,CAAA,EAAG;IACN,IAAI,CAACT,OAAO,GAAG,CAAC,CAAC;EACnB,CAAC;EAEDU,MAAM,WAANA,MAAMA,CAAA,EAAG;IACP,OAAO,IAAAC,OAAA,CAAAC,OAAA,EAAc,IAAI,CAACZ,OAAO,CAAC;EACpC;AACF,CAAC;AAAC,IAAAa,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAEab,gBAAgB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["config.js"],"sourcesContent":["export default {};\n"],"mappings":";;;;;;;iCAAe,CAAC,CAAC"}
1
+ {"version":3,"names":[],"sources":["config.js"],"sourcesContent":["export default {};\n"],"mappings":";;;;;;;iCAAe,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["LYRA_SPACE","exports","UC_CLOUD","DEFAULT_PRODUCT_NAME"],"sources":["constants.js"],"sourcesContent":["export const LYRA_SPACE = 'LYRA_SPACE';\nexport const UC_CLOUD = 'uc-cloud';\nexport const DEFAULT_PRODUCT_NAME = 'default';\n"],"mappings":";;;;;;;AAAO,IAAMA,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,YAAY;AAC/B,IAAME,QAAQ,GAAAD,OAAA,CAAAC,QAAA,GAAG,UAAU;AAC3B,IAAMC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,GAAG,SAAS"}
1
+ {"version":3,"names":["LYRA_SPACE","exports","UC_CLOUD","DEFAULT_PRODUCT_NAME"],"sources":["constants.js"],"sourcesContent":["export const LYRA_SPACE = 'LYRA_SPACE';\nexport const UC_CLOUD = 'uc-cloud';\nexport const DEFAULT_PRODUCT_NAME = 'default';\n"],"mappings":";;;;;;;AAAO,IAAMA,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,YAAY;AAC/B,IAAME,QAAQ,GAAAD,OAAA,CAAAC,QAAA,GAAG,UAAU;AAC3B,IAAMC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,GAAG,SAAS","ignoreList":[]}
@@ -301,7 +301,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
301
301
  * @returns {Promise<deviceInfo>}
302
302
  */
303
303
  bindSpace: function bindSpace() {
304
- var _this10 = this;
304
+ var _this0 = this;
305
305
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
306
306
  if (!options.url) {
307
307
  this.logger.error('DeviceManager#pair: options.url is required');
@@ -324,7 +324,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
324
324
  url: options.url
325
325
  };
326
326
  return this.webex.internal.lyra.space.bindConversation(space, this._boundSpace).catch(function (err) {
327
- _this10.logger.error('DeviceManager#bindSpace: failed to bind device to Space');
327
+ _this0.logger.error('DeviceManager#bindSpace: failed to bind device to Space');
328
328
  return _promise.default.reject(err);
329
329
  });
330
330
  },
@@ -334,7 +334,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
334
334
  * @returns {Promise<deviceInfo>}
335
335
  */
336
336
  unbindSpace: function unbindSpace() {
337
- var _this11 = this;
337
+ var _this1 = this;
338
338
  if (!this._pairedDevice || !this._boundSpace) {
339
339
  this.logger.error('DeviceManager#unbindSpace: No space currently bound to the device');
340
340
  return _promise.default.reject(new Error('DeviceManager#unbindSpace: No space currently bound to the device'));
@@ -344,10 +344,10 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
344
344
  id: this._pairedDevice.identity.id
345
345
  };
346
346
  return this.webex.internal.lyra.space.unbindConversation(space, this._boundSpace).then(function (res) {
347
- _this11._boundSpace = null;
347
+ _this1._boundSpace = null;
348
348
  return _promise.default.resolve(res);
349
349
  }).catch(function (err) {
350
- _this11.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');
350
+ _this1.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');
351
351
  return _promise.default.reject(err);
352
352
  });
353
353
  },
@@ -443,18 +443,18 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
443
443
  * @returns {device}
444
444
  */
445
445
  _updateDeviceMetadata: function _updateDeviceMetadata() {
446
- var _this12 = this;
446
+ var _this10 = this;
447
447
  var deviceArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
448
448
  if (!deviceArray.length) {
449
449
  return _promise.default.resolve(deviceArray);
450
450
  }
451
451
  var devices = (0, _lodash.cloneDeep)(deviceArray);
452
452
  return _promise.default.all(devices.map(function (device, index) {
453
- return _this12.webex.internal.services.waitForCatalog('postauth').then(function () {
453
+ return _this10.webex.internal.services.waitForCatalog('postauth').then(function () {
454
454
  if (device.deviceClass === _constants.UC_CLOUD) {
455
- device.id = "".concat(_this12.webex.internal.services.get('wdm'), "/").concat(device.id);
455
+ device.id = "".concat(_this10.webex.internal.services.get('wdm'), "/").concat(device.id);
456
456
  }
457
- return _this12._decryptDeviceName(device);
457
+ return _this10._decryptDeviceName(device);
458
458
  }).then(function (updatedDevice) {
459
459
  devices[index] = updatedDevice;
460
460
  return _promise.default.resolve();
@@ -469,7 +469,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
469
469
  * @returns {device}
470
470
  */
471
471
  _decryptDeviceName: function _decryptDeviceName() {
472
- var _this13 = this;
472
+ var _this11 = this;
473
473
  var inDevice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
474
474
  var device = (0, _lodash.cloneDeep)(inDevice);
475
475
  if (device.metadata && device.metadata.encryptedUserAssignedName && device.metadata.encryptionKeyUrl) {
@@ -481,7 +481,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
481
481
  }).catch(function (err) {
482
482
  // unset encryptedUserAssignedName if failed to decrypt
483
483
  device.metadata.encryptedUserAssignedName = undefined;
484
- _this13.logger.error('DeviceCollection#_decryptDeviceName: failed to decrypt device name', err);
484
+ _this11.logger.error('DeviceCollection#_decryptDeviceName: failed to decrypt device name', err);
485
485
  });
486
486
  }
487
487
  return _promise.default.resolve(device);
@@ -492,7 +492,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
492
492
  * @returns {device}
493
493
  */
494
494
  _receiveDeviceUpdates: function _receiveDeviceUpdates(device) {
495
- var _this14 = this;
495
+ var _this12 = this;
496
496
  // we care only the updates are for the registered devices
497
497
  if (device && device.spaceUrl) {
498
498
  var deviceId = device.spaceUrl.substring(device.spaceUrl.lastIndexOf('/') + 1);
@@ -507,21 +507,21 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
507
507
  device.productName = space.devices && space.devices[0] && space.devices[0].productName || _constants.DEFAULT_PRODUCT_NAME;
508
508
  // pin challenge is not verified reset _pairedDevice if ids
509
509
  // match
510
- var pairedDeviceId = _this14._pairedDevice && (_this14._pairedDevice.id || _this14._pairedDevice.identity.id);
510
+ var pairedDeviceId = _this12._pairedDevice && (_this12._pairedDevice.id || _this12._pairedDevice.identity.id);
511
511
  if (pairedDeviceId === deviceId) {
512
- _this14._pairedDevice = null;
513
- _this14.logger.info("DeviceManager#_receiveDeviceUpdates: device ".concat(deviceId, " lost pairing"));
512
+ _this12._pairedDevice = null;
513
+ _this12.logger.info("DeviceManager#_receiveDeviceUpdates: device ".concat(deviceId, " lost pairing"));
514
514
  return _promise.default.resolve();
515
515
  }
516
516
  // we do not want to reset the device pending PIN challenge
517
- if (_this14._devicePendingPinChallenge.identity.id !== deviceId) {
518
- return _this14.upsert(device);
517
+ if (_this12._devicePendingPinChallenge.identity.id !== deviceId) {
518
+ return _this12.upsert(device);
519
519
  }
520
520
  return _promise.default.resolve();
521
521
  }
522
522
  return _promise.default.resolve();
523
523
  }).catch(function (err) {
524
- _this14.logger.error('DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space', err);
524
+ _this12.logger.error('DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space', err);
525
525
  });
526
526
  }
527
527
  }
@@ -555,7 +555,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
555
555
  setPairedMethod: function setPairedMethod(pairedMethod) {
556
556
  this._pairedMethod = pairedMethod;
557
557
  },
558
- version: "3.10.0-wxc-disconnect.1"
558
+ version: "0.0.0"
559
559
  });
560
560
  var _default = exports.default = DeviceManager;
561
561
  //# sourceMappingURL=device-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_webexCore","_uuid","_interopRequireDefault","_constants","_collection","DeviceManager","WebexPlugin","extend","namespace","_devicePendingPinChallenge","_pairedDevice","_boundSpace","initialize","_this","_pairedMethod","webex","internal","mercury","on","_ref","data","_receiveDeviceUpdates","getAll","DeviceCollection","refresh","_this2","reset","request","api","resource","then","res","body","_promise","default","reject","_updateDeviceMetadata","items","devices","forEach","device","deviceInfo","machineType","LYRA_SPACE","lyra","space","get","catch","err","logger","error","set","search","options","_this3","searchQuery","Error","people","searchId","uuid","v4","searchType","searchEntity","includePeople","includeRooms","queryString","upsert","_this4","deviceId","id","identity","existingDevice","resolve","method","concat","auxDevice","_decryptDeviceName","token","_this5","getAdvertisedEndpoint","advertiser","result","displayName","remove","_this6","requestPin","_this7","arguments","length","undefined","url","dev","occupants","pinChallenge","info","join","passType","verificationInitiation","pair","_this8","pin","unpair","_this9","leave","bindSpace","_this10","kmsResourceObjectUrl","bindConversation","unbindSpace","_this11","unbindConversation","getAudioState","putAudioState","audioState","mute","unmute","increaseVolume","decreaseVolume","setVolume","level","_this12","deviceArray","cloneDeep","all","map","index","services","waitForCatalog","deviceClass","UC_CLOUD","updatedDevice","_this13","inDevice","metadata","encryptedUserAssignedName","encryptionKeyUrl","encryption","decryptText","decryptedDeviceName","userAssignedName","_this14","spaceUrl","substring","lastIndexOf","self","verified","productName","DEFAULT_PRODUCT_NAME","pairedDeviceId","getPairedDevice","_this$_pairedDevice","_this$_pairedDevice2","_this$_pairedDevice2$","getPairedMethod","setPairedMethod","pairedMethod","version","_default","exports"],"sources":["device-manager.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {cloneDeep} from 'lodash';\nimport '@webex/internal-plugin-lyra';\nimport '@webex/internal-plugin-search';\nimport {WebexPlugin} from '@webex/webex-core';\nimport uuid from 'uuid';\n\nimport {LYRA_SPACE, UC_CLOUD, DEFAULT_PRODUCT_NAME} from './constants';\nimport DeviceCollection from './collection';\n\nconst DeviceManager = WebexPlugin.extend({\n namespace: 'DeviceManager',\n _devicePendingPinChallenge: null,\n _pairedDevice: null,\n _boundSpace: null,\n\n initialize() {\n // Initialize the paired method property\n this._pairedMethod = 'Manual';\n\n // Lyra mercury events listener\n this.webex.internal.mercury.on('event:lyra.space_updated', ({data}) => {\n this._receiveDeviceUpdates(data);\n });\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n getAll() {\n return DeviceCollection.getAll();\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n refresh() {\n DeviceCollection.reset();\n\n return this.webex\n .request({\n api: 'wdm',\n resource: 'devices/auxiliary',\n })\n .then((res) => {\n if (!res.body) {\n return Promise.reject();\n }\n\n return this._updateDeviceMetadata(res.body.items).then((devices) => {\n /* eslint-disable consistent-return */\n devices.forEach((device) => {\n if (device.deviceInfo && device.deviceInfo.machineType === LYRA_SPACE) {\n return this.webex.internal.lyra.space.get(device.deviceInfo).catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to receive device info', err);\n });\n }\n });\n /* eslint-enable consistent-return */\n res.body.items.forEach((device) => {\n DeviceCollection.set(device);\n });\n\n return this.getAll();\n });\n })\n .catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to fetch recent devices', err);\n });\n },\n\n /**\n * Search for a device by name\n * @param {Object} options\n * @param {string} options.searchQuery\n * @returns {Promise<Device>}\n */\n search(options) {\n if (!options || !options.searchQuery) {\n this.logger.error('DeviceManager#search: options.searchQuery is required');\n\n return Promise.reject(new Error('DeviceManager#search: options.searchQuery is required'));\n }\n\n return this.webex.internal.search\n .people({\n searchId: uuid.v4(),\n searchType: 'DEVICE_SEARCH',\n searchEntity: 'device',\n includePeople: false,\n includeRooms: true,\n queryString: options.searchQuery,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#search: failed to search a device', err);\n\n throw err;\n });\n },\n\n /**\n * Caches the device info and also registers to Redis for subsequent fetches\n * @param {Object} device\n * @param {string} device.id\n * @returns {deviceInfo}\n */\n upsert(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#upsert: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#upsert: device.id is required'));\n }\n this._pairedDevice = this._devicePendingPinChallenge;\n this._devicePendingPinChallenge = null;\n // check if the device is already existing, if so then merge else add\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n }\n\n // new device requested, add to wdm for subsequent retreivals\n return (\n this.webex\n .request({\n api: 'wdm',\n method: 'PUT',\n resource: `devices/auxiliary/Room/${deviceId}`,\n })\n .then((res) => {\n const auxDevice = res.body;\n\n return this._decryptDeviceName(auxDevice);\n })\n // eslint-disable-next-line no-shadow\n .then((device) => {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#upsert: failed to add/update a device', err);\n\n return Promise.reject(err);\n })\n );\n },\n\n /**\n * Retreives device info of a particular device\n * @param {string} token\n * @returns {Promise<deviceInfo>}\n */\n get(token) {\n if (!token) {\n this.logger.error('DeviceManager#get: token is required');\n\n return Promise.reject(new Error('DeviceManager#get: token is required'));\n }\n let deviceInfo;\n\n return this.webex.internal.lyra\n .getAdvertisedEndpoint(token)\n .then((res) => {\n deviceInfo = res;\n\n return this.webex.internal.lyra.space.get({id: res.advertiser.id});\n })\n .then((result) => {\n // the deviceInfo doesn't have proper displayName, hence update\n // displayName on deviceInfo for search to work\n if (result && result.identity && result.identity.displayName) {\n deviceInfo.advertiser.displayName = result.identity.displayName;\n }\n\n return deviceInfo;\n })\n .catch((err) => {\n this.logger.error('DeviceManager#get: failed to get device info', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Unregisters the device from Redis, will not fetch in subsequent loads,\n * similar to space.deleteBinding()\n * @param {string} deviceId\n * @returns {Promise<deviceInfo>}\n */\n remove(deviceId) {\n if (!deviceId) {\n this.logger.error('DeviceManager#remove: deviceId is required');\n\n return Promise.reject(new Error('DeviceManager#remove: deviceId is required'));\n }\n\n return this.webex\n .request({\n method: 'delete',\n api: 'wdm',\n resource: `devices/auxiliary/${deviceId}`,\n })\n .catch((error) => {\n this.logger.error('DeviceManager#remove: failed to remove the device', error);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Requests to display PIN on the device\n * @param {object} device\n * @param {object} options\n * @param {object} options.data\n * @returns {Promise<deviceInfo>}\n */\n requestPin(device, options = {}) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#requestPin: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#requestPin: device.id is required'));\n }\n const space = {id: deviceId, url: `/spaces/${deviceId}`};\n\n return this.webex.internal.lyra.space\n .get(space)\n .then((dev) => {\n // check if the space is pinChallenge capable\n if (dev && dev.occupants && dev.occupants.pinChallenge) {\n this.logger.info('DeviceManager#requestPin: space is PIN challenge capable');\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'MANUAL',\n verificationInitiation: 'PIN',\n data: options.data,\n })\n .then(() => {\n this._devicePendingPinChallenge = dev;\n\n // return the actual device so that it can be upserted on successful\n // PIN exchange\n return dev;\n });\n }\n // pairs with the space if it's not PIN challenge capable\n this.logger.info(\n 'DeviceManager#requestPin: space is not PIN challenge capable, probably already occupied, will still return device info'\n );\n\n return this.webex.internal.lyra.space.get(space).then(() => Promise.resolve(dev));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#requestPin: device failed PIN challenge request', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * pairs the device with the user (manual pairing), also adds it to\n * user's recents list for subsequent fetches.\n * similar to space.join()\n * @param {object} options\n * @param {number} options.pin\n * @returns {Promise<deviceInfo>}\n */\n pair(options = {}) {\n if (!options.pin) {\n this.logger.error('DeviceManager#pair: options.pin is required');\n\n return Promise.reject(new Error('DeviceManager#pair: options.pin is required'));\n }\n if (this._devicePendingPinChallenge) {\n const space = {\n id: this._devicePendingPinChallenge.identity.id,\n url: `/spaces/${this._devicePendingPinChallenge.identity.id}`,\n };\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'PIN_ANSWER',\n data: options.pin,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#pair: incorrect PIN, unable to pair ', err);\n\n return Promise.reject(err);\n })\n .then(() => this.upsert(this._devicePendingPinChallenge));\n }\n this.logger.error('DeviceManager#pair: no device to pair');\n\n return Promise.reject(new Error('DeviceManager#pair: no device to pair'));\n },\n\n /**\n * unpairs the device with the user (manual/ultrasonic pairing), but still\n * keeps in the recents list/does not remove from Redis\n * options.removeAllDevices will remove all associated devices to user\n * similar to space.leave()\n * @param {object} options\n * @param {boolean} options.removeAllDevices\n * @returns {Promise<deviceInfo>}\n */\n unpair(options = {}) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unpair: no device to unpair');\n\n return Promise.reject(new Error('DeviceManager#unpair: no device to unpair'));\n }\n const space = {url: `/spaces/${this._pairedDevice.identity.id}`};\n\n return this.webex.internal.lyra.space.leave(space, options).catch((err) => {\n this.logger.error('DeviceManager#unpair: failed to remove device from Lyra', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * binds the space to the paired device (if supported)\n * similar to space.bindConversation()\n * @param {object} options\n * @param {boolean} options.url, conversation url\n * @param {boolean} options.kmsResourceObjectUrl of the convo\n * @returns {Promise<deviceInfo>}\n */\n bindSpace(options = {}) {\n if (!options.url) {\n this.logger.error('DeviceManager#pair: options.url is required');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: options.url is required'));\n }\n if (!options.kmsResourceObjectUrl) {\n this.logger.error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required');\n\n return Promise.reject(\n new Error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required')\n );\n }\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#bindSpace: No device paired currently');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: No device paired currently'));\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n this._boundSpace = {\n kmsResourceObjectUrl: options.kmsResourceObjectUrl,\n url: options.url,\n };\n\n return this.webex.internal.lyra.space.bindConversation(space, this._boundSpace).catch((err) => {\n this.logger.error('DeviceManager#bindSpace: failed to bind device to Space');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * unbinds the space to the paired device (if supported)\n * similar to space.unbindConversation()\n * @returns {Promise<deviceInfo>}\n */\n unbindSpace() {\n if (!this._pairedDevice || !this._boundSpace) {\n this.logger.error('DeviceManager#unbindSpace: No space currently bound to the device');\n\n return Promise.reject(\n new Error('DeviceManager#unbindSpace: No space currently bound to the device')\n );\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n return this.webex.internal.lyra.space\n .unbindConversation(space, this._boundSpace)\n .then((res) => {\n this._boundSpace = null;\n\n return Promise.resolve(res);\n })\n .catch((err) => {\n this.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Gets the audio state of the paired device\n * similar to device.getAudioState()\n * @returns {Promise<audioState>}\n */\n getAudioState() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#getAudioState: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#getAudioState: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.getAudioState(this._pairedDevice);\n },\n\n /**\n * Updates audio state of the paired device, should be called every 10 minutes\n * or when mic or volume state is changed\n * similar to device.putAudioState()\n * @param {object} space\n * @param {object} audioState\n * @returns {Promise<audioState>}\n */\n putAudioState(space, audioState = {}) {\n return this.webex.internal.lyra.device.putAudioState(space, audioState);\n },\n\n /**\n * Mutes paired device\n * similar to device.mute()\n * @returns {Promise<audioState>}\n */\n mute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#mute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#mute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.mute(this._pairedDevice);\n },\n\n /**\n * Unmutes paired device\n * similar to device.unmute()\n * @returns {Promise<audioState>}\n */\n unmute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unmute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#unmute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.unmute(this._pairedDevice);\n },\n\n /**\n * Increases paired device's volume\n * similar to device.increaseVolume()\n * @returns {Promise<audioState>}\n */\n increaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#increaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#increaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.increaseVolume(this._pairedDevice);\n },\n\n /**\n * Decreases paired device's volume\n * similar to device.decreaseVolume()\n * @returns {Promise<audioState>}\n */\n decreaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#decreaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#decreaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.decreaseVolume(this._pairedDevice);\n },\n\n /**\n * Sets paired device's volume but should use increase and decrease api instead\n * similar to device.setVolume()\n * @param {number} level\n * @returns {Promise<audioState>}\n */\n setVolume(level = 0) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#setVolume: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#setVolume: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.setVolume(this._pairedDevice, level);\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {Array} deviceArray\n * @returns {device}\n */\n _updateDeviceMetadata(deviceArray = []) {\n if (!deviceArray.length) {\n return Promise.resolve(deviceArray);\n }\n const devices = cloneDeep(deviceArray);\n\n return Promise.all(\n devices.map((device, index) =>\n this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => {\n if (device.deviceClass === UC_CLOUD) {\n device.id = `${this.webex.internal.services.get('wdm')}/${device.id}`;\n }\n\n return this._decryptDeviceName(device);\n })\n .then((updatedDevice) => {\n devices[index] = updatedDevice;\n\n return Promise.resolve();\n })\n )\n ).then(() => Promise.resolve(devices));\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {object} inDevice\n * @returns {device}\n */\n _decryptDeviceName(inDevice = {}) {\n const device = cloneDeep(inDevice);\n\n if (\n device.metadata &&\n device.metadata.encryptedUserAssignedName &&\n device.metadata.encryptionKeyUrl\n ) {\n return this.webex.internal.encryption\n .decryptText(device.metadata.encryptionKeyUrl, device.metadata.encryptedUserAssignedName)\n .then((decryptedDeviceName) => {\n // set userAssignedName as the decypted value, unset encryptedUserAssignedName since it's not needed\n device.metadata.encryptedUserAssignedName = undefined;\n device.metadata.userAssignedName = decryptedDeviceName;\n\n return Promise.resolve(device);\n })\n .catch((err) => {\n // unset encryptedUserAssignedName if failed to decrypt\n device.metadata.encryptedUserAssignedName = undefined;\n this.logger.error(\n 'DeviceCollection#_decryptDeviceName: failed to decrypt device name',\n err\n );\n });\n }\n\n return Promise.resolve(device);\n },\n\n /**\n * Utility function to update device info on mercury updates\n * @param {object} device\n * @returns {device}\n */\n _receiveDeviceUpdates(device) {\n // we care only the updates are for the registered devices\n if (device && device.spaceUrl) {\n const deviceId = device.spaceUrl.substring(device.spaceUrl.lastIndexOf('/') + 1);\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n return this.webex.internal.lyra.space\n .get({id: deviceId})\n .then((space) => {\n // eslint-disable-next-line no-shadow\n const device = DeviceCollection.get(deviceId);\n\n if (\n device &&\n space.occupants &&\n (!space.occupants.self || !space.occupants.self.verified)\n ) {\n device.productName =\n (space.devices && space.devices[0] && space.devices[0].productName) ||\n DEFAULT_PRODUCT_NAME;\n // pin challenge is not verified reset _pairedDevice if ids\n // match\n const pairedDeviceId =\n this._pairedDevice && (this._pairedDevice.id || this._pairedDevice.identity.id);\n\n if (pairedDeviceId === deviceId) {\n this._pairedDevice = null;\n this.logger.info(\n `DeviceManager#_receiveDeviceUpdates: device ${deviceId} lost pairing`\n );\n\n return Promise.resolve();\n }\n // we do not want to reset the device pending PIN challenge\n if (this._devicePendingPinChallenge.identity.id !== deviceId) {\n return this.upsert(device);\n }\n\n return Promise.resolve();\n }\n\n return Promise.resolve();\n })\n .catch((err) => {\n this.logger.error(\n 'DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space',\n err\n );\n });\n }\n }\n\n return Promise.resolve();\n },\n\n /**\n * gets the currently paired device info if paired\n * @returns {device}\n */\n getPairedDevice() {\n if (!this._pairedDevice) {\n this.logger.info('DeviceManager#getPairedDevice: Currently no device is paired');\n\n return undefined;\n }\n const pairedDeviceId = this._pairedDevice?.id || this._pairedDevice?.identity?.id;\n\n return DeviceCollection.get(pairedDeviceId);\n },\n\n /**\n * Gets the currently set paired method\n * @returns {string} - The paired method (defaults to \"Manual\")\n */\n getPairedMethod() {\n return this._pairedMethod || 'Manual';\n },\n\n /**\n * Sets the paired method\n * @param {string} pairedMethod - The paired method to set\n * @returns {void}\n */\n setPairedMethod(pairedMethod) {\n this._pairedMethod = pairedMethod;\n },\n});\n\nexport default DeviceManager;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lodash","require","_webexCore","_uuid","_interopRequireDefault","_constants","_collection","DeviceManager","WebexPlugin","extend","namespace","_devicePendingPinChallenge","_pairedDevice","_boundSpace","initialize","_this","_pairedMethod","webex","internal","mercury","on","_ref","data","_receiveDeviceUpdates","getAll","DeviceCollection","refresh","_this2","reset","request","api","resource","then","res","body","_promise","default","reject","_updateDeviceMetadata","items","devices","forEach","device","deviceInfo","machineType","LYRA_SPACE","lyra","space","get","catch","err","logger","error","set","search","options","_this3","searchQuery","Error","people","searchId","uuid","v4","searchType","searchEntity","includePeople","includeRooms","queryString","upsert","_this4","deviceId","id","identity","existingDevice","resolve","method","concat","auxDevice","_decryptDeviceName","token","_this5","getAdvertisedEndpoint","advertiser","result","displayName","remove","_this6","requestPin","_this7","arguments","length","undefined","url","dev","occupants","pinChallenge","info","join","passType","verificationInitiation","pair","_this8","pin","unpair","_this9","leave","bindSpace","_this0","kmsResourceObjectUrl","bindConversation","unbindSpace","_this1","unbindConversation","getAudioState","putAudioState","audioState","mute","unmute","increaseVolume","decreaseVolume","setVolume","level","_this10","deviceArray","cloneDeep","all","map","index","services","waitForCatalog","deviceClass","UC_CLOUD","updatedDevice","_this11","inDevice","metadata","encryptedUserAssignedName","encryptionKeyUrl","encryption","decryptText","decryptedDeviceName","userAssignedName","_this12","spaceUrl","substring","lastIndexOf","self","verified","productName","DEFAULT_PRODUCT_NAME","pairedDeviceId","getPairedDevice","_this$_pairedDevice","_this$_pairedDevice2","_this$_pairedDevice2$","getPairedMethod","setPairedMethod","pairedMethod","version","_default","exports"],"sources":["device-manager.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {cloneDeep} from 'lodash';\nimport '@webex/internal-plugin-lyra';\nimport '@webex/internal-plugin-search';\nimport {WebexPlugin} from '@webex/webex-core';\nimport uuid from 'uuid';\n\nimport {LYRA_SPACE, UC_CLOUD, DEFAULT_PRODUCT_NAME} from './constants';\nimport DeviceCollection from './collection';\n\nconst DeviceManager = WebexPlugin.extend({\n namespace: 'DeviceManager',\n _devicePendingPinChallenge: null,\n _pairedDevice: null,\n _boundSpace: null,\n\n initialize() {\n // Initialize the paired method property\n this._pairedMethod = 'Manual';\n\n // Lyra mercury events listener\n this.webex.internal.mercury.on('event:lyra.space_updated', ({data}) => {\n this._receiveDeviceUpdates(data);\n });\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n getAll() {\n return DeviceCollection.getAll();\n },\n\n /**\n * Gets a list of all recent devices associated with the user\n * the device list gets populated from Redis\n * @returns {Promise<Device>}\n */\n refresh() {\n DeviceCollection.reset();\n\n return this.webex\n .request({\n api: 'wdm',\n resource: 'devices/auxiliary',\n })\n .then((res) => {\n if (!res.body) {\n return Promise.reject();\n }\n\n return this._updateDeviceMetadata(res.body.items).then((devices) => {\n /* eslint-disable consistent-return */\n devices.forEach((device) => {\n if (device.deviceInfo && device.deviceInfo.machineType === LYRA_SPACE) {\n return this.webex.internal.lyra.space.get(device.deviceInfo).catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to receive device info', err);\n });\n }\n });\n /* eslint-enable consistent-return */\n res.body.items.forEach((device) => {\n DeviceCollection.set(device);\n });\n\n return this.getAll();\n });\n })\n .catch((err) => {\n this.logger.error('DeviceManager#refresh: failed to fetch recent devices', err);\n });\n },\n\n /**\n * Search for a device by name\n * @param {Object} options\n * @param {string} options.searchQuery\n * @returns {Promise<Device>}\n */\n search(options) {\n if (!options || !options.searchQuery) {\n this.logger.error('DeviceManager#search: options.searchQuery is required');\n\n return Promise.reject(new Error('DeviceManager#search: options.searchQuery is required'));\n }\n\n return this.webex.internal.search\n .people({\n searchId: uuid.v4(),\n searchType: 'DEVICE_SEARCH',\n searchEntity: 'device',\n includePeople: false,\n includeRooms: true,\n queryString: options.searchQuery,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#search: failed to search a device', err);\n\n throw err;\n });\n },\n\n /**\n * Caches the device info and also registers to Redis for subsequent fetches\n * @param {Object} device\n * @param {string} device.id\n * @returns {deviceInfo}\n */\n upsert(device) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#upsert: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#upsert: device.id is required'));\n }\n this._pairedDevice = this._devicePendingPinChallenge;\n this._devicePendingPinChallenge = null;\n // check if the device is already existing, if so then merge else add\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n }\n\n // new device requested, add to wdm for subsequent retreivals\n return (\n this.webex\n .request({\n api: 'wdm',\n method: 'PUT',\n resource: `devices/auxiliary/Room/${deviceId}`,\n })\n .then((res) => {\n const auxDevice = res.body;\n\n return this._decryptDeviceName(auxDevice);\n })\n // eslint-disable-next-line no-shadow\n .then((device) => {\n DeviceCollection.set(device);\n\n return Promise.resolve(DeviceCollection.get(deviceId));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#upsert: failed to add/update a device', err);\n\n return Promise.reject(err);\n })\n );\n },\n\n /**\n * Retreives device info of a particular device\n * @param {string} token\n * @returns {Promise<deviceInfo>}\n */\n get(token) {\n if (!token) {\n this.logger.error('DeviceManager#get: token is required');\n\n return Promise.reject(new Error('DeviceManager#get: token is required'));\n }\n let deviceInfo;\n\n return this.webex.internal.lyra\n .getAdvertisedEndpoint(token)\n .then((res) => {\n deviceInfo = res;\n\n return this.webex.internal.lyra.space.get({id: res.advertiser.id});\n })\n .then((result) => {\n // the deviceInfo doesn't have proper displayName, hence update\n // displayName on deviceInfo for search to work\n if (result && result.identity && result.identity.displayName) {\n deviceInfo.advertiser.displayName = result.identity.displayName;\n }\n\n return deviceInfo;\n })\n .catch((err) => {\n this.logger.error('DeviceManager#get: failed to get device info', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Unregisters the device from Redis, will not fetch in subsequent loads,\n * similar to space.deleteBinding()\n * @param {string} deviceId\n * @returns {Promise<deviceInfo>}\n */\n remove(deviceId) {\n if (!deviceId) {\n this.logger.error('DeviceManager#remove: deviceId is required');\n\n return Promise.reject(new Error('DeviceManager#remove: deviceId is required'));\n }\n\n return this.webex\n .request({\n method: 'delete',\n api: 'wdm',\n resource: `devices/auxiliary/${deviceId}`,\n })\n .catch((error) => {\n this.logger.error('DeviceManager#remove: failed to remove the device', error);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Requests to display PIN on the device\n * @param {object} device\n * @param {object} options\n * @param {object} options.data\n * @returns {Promise<deviceInfo>}\n */\n requestPin(device, options = {}) {\n const deviceId = device.id || (device.identity && device.identity.id);\n\n if (!deviceId) {\n this.logger.error('DeviceManager#requestPin: device.id is required');\n\n return Promise.reject(new Error('DeviceManager#requestPin: device.id is required'));\n }\n const space = {id: deviceId, url: `/spaces/${deviceId}`};\n\n return this.webex.internal.lyra.space\n .get(space)\n .then((dev) => {\n // check if the space is pinChallenge capable\n if (dev && dev.occupants && dev.occupants.pinChallenge) {\n this.logger.info('DeviceManager#requestPin: space is PIN challenge capable');\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'MANUAL',\n verificationInitiation: 'PIN',\n data: options.data,\n })\n .then(() => {\n this._devicePendingPinChallenge = dev;\n\n // return the actual device so that it can be upserted on successful\n // PIN exchange\n return dev;\n });\n }\n // pairs with the space if it's not PIN challenge capable\n this.logger.info(\n 'DeviceManager#requestPin: space is not PIN challenge capable, probably already occupied, will still return device info'\n );\n\n return this.webex.internal.lyra.space.get(space).then(() => Promise.resolve(dev));\n })\n .catch((err) => {\n this.logger.error('DeviceManager#requestPin: device failed PIN challenge request', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * pairs the device with the user (manual pairing), also adds it to\n * user's recents list for subsequent fetches.\n * similar to space.join()\n * @param {object} options\n * @param {number} options.pin\n * @returns {Promise<deviceInfo>}\n */\n pair(options = {}) {\n if (!options.pin) {\n this.logger.error('DeviceManager#pair: options.pin is required');\n\n return Promise.reject(new Error('DeviceManager#pair: options.pin is required'));\n }\n if (this._devicePendingPinChallenge) {\n const space = {\n id: this._devicePendingPinChallenge.identity.id,\n url: `/spaces/${this._devicePendingPinChallenge.identity.id}`,\n };\n\n return this.webex.internal.lyra.space\n .join(space, {\n passType: 'PIN_ANSWER',\n data: options.pin,\n })\n .catch((err) => {\n this.logger.error('DeviceManager#pair: incorrect PIN, unable to pair ', err);\n\n return Promise.reject(err);\n })\n .then(() => this.upsert(this._devicePendingPinChallenge));\n }\n this.logger.error('DeviceManager#pair: no device to pair');\n\n return Promise.reject(new Error('DeviceManager#pair: no device to pair'));\n },\n\n /**\n * unpairs the device with the user (manual/ultrasonic pairing), but still\n * keeps in the recents list/does not remove from Redis\n * options.removeAllDevices will remove all associated devices to user\n * similar to space.leave()\n * @param {object} options\n * @param {boolean} options.removeAllDevices\n * @returns {Promise<deviceInfo>}\n */\n unpair(options = {}) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unpair: no device to unpair');\n\n return Promise.reject(new Error('DeviceManager#unpair: no device to unpair'));\n }\n const space = {url: `/spaces/${this._pairedDevice.identity.id}`};\n\n return this.webex.internal.lyra.space.leave(space, options).catch((err) => {\n this.logger.error('DeviceManager#unpair: failed to remove device from Lyra', err);\n\n return Promise.reject(err);\n });\n },\n\n /**\n * binds the space to the paired device (if supported)\n * similar to space.bindConversation()\n * @param {object} options\n * @param {boolean} options.url, conversation url\n * @param {boolean} options.kmsResourceObjectUrl of the convo\n * @returns {Promise<deviceInfo>}\n */\n bindSpace(options = {}) {\n if (!options.url) {\n this.logger.error('DeviceManager#pair: options.url is required');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: options.url is required'));\n }\n if (!options.kmsResourceObjectUrl) {\n this.logger.error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required');\n\n return Promise.reject(\n new Error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required')\n );\n }\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#bindSpace: No device paired currently');\n\n return Promise.reject(new Error('DeviceManager#bindSpace: No device paired currently'));\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n this._boundSpace = {\n kmsResourceObjectUrl: options.kmsResourceObjectUrl,\n url: options.url,\n };\n\n return this.webex.internal.lyra.space.bindConversation(space, this._boundSpace).catch((err) => {\n this.logger.error('DeviceManager#bindSpace: failed to bind device to Space');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * unbinds the space to the paired device (if supported)\n * similar to space.unbindConversation()\n * @returns {Promise<deviceInfo>}\n */\n unbindSpace() {\n if (!this._pairedDevice || !this._boundSpace) {\n this.logger.error('DeviceManager#unbindSpace: No space currently bound to the device');\n\n return Promise.reject(\n new Error('DeviceManager#unbindSpace: No space currently bound to the device')\n );\n }\n const space = {\n url: `/spaces/${this._pairedDevice.identity.id}`,\n id: this._pairedDevice.identity.id,\n };\n\n return this.webex.internal.lyra.space\n .unbindConversation(space, this._boundSpace)\n .then((res) => {\n this._boundSpace = null;\n\n return Promise.resolve(res);\n })\n .catch((err) => {\n this.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Gets the audio state of the paired device\n * similar to device.getAudioState()\n * @returns {Promise<audioState>}\n */\n getAudioState() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#getAudioState: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#getAudioState: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.getAudioState(this._pairedDevice);\n },\n\n /**\n * Updates audio state of the paired device, should be called every 10 minutes\n * or when mic or volume state is changed\n * similar to device.putAudioState()\n * @param {object} space\n * @param {object} audioState\n * @returns {Promise<audioState>}\n */\n putAudioState(space, audioState = {}) {\n return this.webex.internal.lyra.device.putAudioState(space, audioState);\n },\n\n /**\n * Mutes paired device\n * similar to device.mute()\n * @returns {Promise<audioState>}\n */\n mute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#mute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#mute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.mute(this._pairedDevice);\n },\n\n /**\n * Unmutes paired device\n * similar to device.unmute()\n * @returns {Promise<audioState>}\n */\n unmute() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#unmute: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#unmute: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.unmute(this._pairedDevice);\n },\n\n /**\n * Increases paired device's volume\n * similar to device.increaseVolume()\n * @returns {Promise<audioState>}\n */\n increaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#increaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#increaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.increaseVolume(this._pairedDevice);\n },\n\n /**\n * Decreases paired device's volume\n * similar to device.decreaseVolume()\n * @returns {Promise<audioState>}\n */\n decreaseVolume() {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#decreaseVolume: Currently no device is paired');\n\n return Promise.reject(\n new Error('DeviceManager#decreaseVolume: Currently no device is paired')\n );\n }\n\n return this.webex.internal.lyra.device.decreaseVolume(this._pairedDevice);\n },\n\n /**\n * Sets paired device's volume but should use increase and decrease api instead\n * similar to device.setVolume()\n * @param {number} level\n * @returns {Promise<audioState>}\n */\n setVolume(level = 0) {\n if (!this._pairedDevice) {\n this.logger.error('DeviceManager#setVolume: Currently no device is paired');\n\n return Promise.reject(new Error('DeviceManager#setVolume: Currently no device is paired'));\n }\n\n return this.webex.internal.lyra.device.setVolume(this._pairedDevice, level);\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {Array} deviceArray\n * @returns {device}\n */\n _updateDeviceMetadata(deviceArray = []) {\n if (!deviceArray.length) {\n return Promise.resolve(deviceArray);\n }\n const devices = cloneDeep(deviceArray);\n\n return Promise.all(\n devices.map((device, index) =>\n this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => {\n if (device.deviceClass === UC_CLOUD) {\n device.id = `${this.webex.internal.services.get('wdm')}/${device.id}`;\n }\n\n return this._decryptDeviceName(device);\n })\n .then((updatedDevice) => {\n devices[index] = updatedDevice;\n\n return Promise.resolve();\n })\n )\n ).then(() => Promise.resolve(devices));\n },\n\n /**\n * Utility function to update decrypted device name on device object\n * @param {object} inDevice\n * @returns {device}\n */\n _decryptDeviceName(inDevice = {}) {\n const device = cloneDeep(inDevice);\n\n if (\n device.metadata &&\n device.metadata.encryptedUserAssignedName &&\n device.metadata.encryptionKeyUrl\n ) {\n return this.webex.internal.encryption\n .decryptText(device.metadata.encryptionKeyUrl, device.metadata.encryptedUserAssignedName)\n .then((decryptedDeviceName) => {\n // set userAssignedName as the decypted value, unset encryptedUserAssignedName since it's not needed\n device.metadata.encryptedUserAssignedName = undefined;\n device.metadata.userAssignedName = decryptedDeviceName;\n\n return Promise.resolve(device);\n })\n .catch((err) => {\n // unset encryptedUserAssignedName if failed to decrypt\n device.metadata.encryptedUserAssignedName = undefined;\n this.logger.error(\n 'DeviceCollection#_decryptDeviceName: failed to decrypt device name',\n err\n );\n });\n }\n\n return Promise.resolve(device);\n },\n\n /**\n * Utility function to update device info on mercury updates\n * @param {object} device\n * @returns {device}\n */\n _receiveDeviceUpdates(device) {\n // we care only the updates are for the registered devices\n if (device && device.spaceUrl) {\n const deviceId = device.spaceUrl.substring(device.spaceUrl.lastIndexOf('/') + 1);\n const existingDevice = DeviceCollection.get(deviceId);\n\n if (existingDevice) {\n return this.webex.internal.lyra.space\n .get({id: deviceId})\n .then((space) => {\n // eslint-disable-next-line no-shadow\n const device = DeviceCollection.get(deviceId);\n\n if (\n device &&\n space.occupants &&\n (!space.occupants.self || !space.occupants.self.verified)\n ) {\n device.productName =\n (space.devices && space.devices[0] && space.devices[0].productName) ||\n DEFAULT_PRODUCT_NAME;\n // pin challenge is not verified reset _pairedDevice if ids\n // match\n const pairedDeviceId =\n this._pairedDevice && (this._pairedDevice.id || this._pairedDevice.identity.id);\n\n if (pairedDeviceId === deviceId) {\n this._pairedDevice = null;\n this.logger.info(\n `DeviceManager#_receiveDeviceUpdates: device ${deviceId} lost pairing`\n );\n\n return Promise.resolve();\n }\n // we do not want to reset the device pending PIN challenge\n if (this._devicePendingPinChallenge.identity.id !== deviceId) {\n return this.upsert(device);\n }\n\n return Promise.resolve();\n }\n\n return Promise.resolve();\n })\n .catch((err) => {\n this.logger.error(\n 'DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space',\n err\n );\n });\n }\n }\n\n return Promise.resolve();\n },\n\n /**\n * gets the currently paired device info if paired\n * @returns {device}\n */\n getPairedDevice() {\n if (!this._pairedDevice) {\n this.logger.info('DeviceManager#getPairedDevice: Currently no device is paired');\n\n return undefined;\n }\n const pairedDeviceId = this._pairedDevice?.id || this._pairedDevice?.identity?.id;\n\n return DeviceCollection.get(pairedDeviceId);\n },\n\n /**\n * Gets the currently set paired method\n * @returns {string} - The paired method (defaults to \"Manual\")\n */\n getPairedMethod() {\n return this._pairedMethod || 'Manual';\n },\n\n /**\n * Sets the paired method\n * @param {string} pairedMethod - The paired method to set\n * @returns {void}\n */\n setPairedMethod(pairedMethod) {\n this._pairedMethod = pairedMethod;\n },\n});\n\nexport default DeviceManager;\n"],"mappings":"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","ignoreList":[]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["require","_webexCore","_deviceManager","_interopRequireDefault","_config","registerPlugin","DeviceManager","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* globals */\n\nimport '@webex/internal-plugin-device';\nimport {registerPlugin} from '@webex/webex-core';\n\nimport DeviceManager from './device-manager';\nimport config from './config';\n\nregisterPlugin('devicemanager', DeviceManager, {\n config,\n});\n\nexport {default} from './device-manager';\nexport {default as config} from './config';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAMAA,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AAVA;AACA;AACA;;AAEA;;AAQA,IAAAK,yBAAc,EAAC,eAAe,EAAEC,sBAAa,EAAE;EAC7CC,MAAM,EAANA;AACF,CAAC,CAAC"}
1
+ {"version":3,"names":["require","_webexCore","_deviceManager","_interopRequireDefault","_config","registerPlugin","DeviceManager","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* globals */\n\nimport '@webex/internal-plugin-device';\nimport {registerPlugin} from '@webex/webex-core';\n\nimport DeviceManager from './device-manager';\nimport config from './config';\n\nregisterPlugin('devicemanager', DeviceManager, {\n config,\n});\n\nexport {default} from './device-manager';\nexport {default as config} from './config';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAMAA,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AAVA;AACA;AACA;;AAEA;;AAQA,IAAAK,yBAAc,EAAC,eAAe,EAAEC,sBAAa,EAAE;EAC7CC,MAAM,EAANA;AACF,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -22,14 +22,14 @@
22
22
  ]
23
23
  },
24
24
  "dependencies": {
25
- "@webex/internal-plugin-calendar": "3.10.0-wxc-disconnect.1",
26
- "@webex/internal-plugin-device": "3.10.0-wxc-disconnect.1",
27
- "@webex/internal-plugin-lyra": "3.10.0-wxc-disconnect.1",
28
- "@webex/internal-plugin-search": "3.10.0-wxc-disconnect.1",
29
- "@webex/plugin-authorization": "3.10.0-wxc-disconnect.1",
30
- "@webex/plugin-logger": "3.10.0-wxc-disconnect.1",
31
- "@webex/test-helper-chai": "3.10.0-wxc-disconnect.1",
32
- "@webex/webex-core": "3.10.0-wxc-disconnect.1",
25
+ "@webex/internal-plugin-calendar": "3.11.0",
26
+ "@webex/internal-plugin-device": "3.11.0",
27
+ "@webex/internal-plugin-lyra": "3.11.0",
28
+ "@webex/internal-plugin-search": "3.11.0",
29
+ "@webex/plugin-authorization": "3.11.0",
30
+ "@webex/plugin-logger": "3.11.0",
31
+ "@webex/test-helper-chai": "3.11.0",
32
+ "@webex/webex-core": "3.11.0",
33
33
  "lodash": "^4.17.21",
34
34
  "uuid": "^3.3.2"
35
35
  },
@@ -48,12 +48,12 @@
48
48
  "@webex/eslint-config-legacy": "0.0.0",
49
49
  "@webex/jest-config-legacy": "0.0.0",
50
50
  "@webex/legacy-tools": "0.0.0",
51
- "@webex/test-helper-chai": "3.10.0-wxc-disconnect.1",
52
- "@webex/test-helper-mocha": "3.10.0-wxc-disconnect.1",
53
- "@webex/test-helper-mock-webex": "3.10.0-wxc-disconnect.1",
54
- "@webex/test-helper-test-users": "3.10.0-wxc-disconnect.1",
51
+ "@webex/test-helper-chai": "3.11.0",
52
+ "@webex/test-helper-mocha": "3.11.0",
53
+ "@webex/test-helper-mock-webex": "3.11.0",
54
+ "@webex/test-helper-test-users": "3.11.0",
55
55
  "eslint": "^8.24.0",
56
56
  "prettier": "^2.7.1"
57
57
  },
58
- "version": "3.10.0-wxc-disconnect.1"
58
+ "version": "3.11.0"
59
59
  }