@webex/plugin-device-manager 3.10.0 → 3.11.0-webex-services-ready.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/collection.js.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/device-manager.js +19 -19
- package/dist/device-manager.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +13 -13
package/dist/collection.js.map
CHANGED
|
@@ -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,
|
|
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":[]}
|
package/dist/config.js.map
CHANGED
|
@@ -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":[]}
|
package/dist/constants.js.map
CHANGED
|
@@ -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":[]}
|
package/dist/device-manager.js
CHANGED
|
@@ -301,7 +301,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
301
301
|
* @returns {Promise<deviceInfo>}
|
|
302
302
|
*/
|
|
303
303
|
bindSpace: function bindSpace() {
|
|
304
|
-
var
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
347
|
+
_this1._boundSpace = null;
|
|
348
348
|
return _promise.default.resolve(res);
|
|
349
349
|
}).catch(function (err) {
|
|
350
|
-
|
|
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
|
|
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
|
|
453
|
+
return _this10.webex.internal.services.waitForCatalog('postauth').then(function () {
|
|
454
454
|
if (device.deviceClass === _constants.UC_CLOUD) {
|
|
455
|
-
device.id = "".concat(
|
|
455
|
+
device.id = "".concat(_this10.webex.internal.services.get('wdm'), "/").concat(device.id);
|
|
456
456
|
}
|
|
457
|
-
return
|
|
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
|
|
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
|
-
|
|
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
|
|
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 =
|
|
510
|
+
var pairedDeviceId = _this12._pairedDevice && (_this12._pairedDevice.id || _this12._pairedDevice.identity.id);
|
|
511
511
|
if (pairedDeviceId === deviceId) {
|
|
512
|
-
|
|
513
|
-
|
|
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 (
|
|
518
|
-
return
|
|
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
|
-
|
|
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.
|
|
558
|
+
version: "3.11.0-webex-services-ready.1"
|
|
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.
|
|
26
|
-
"@webex/internal-plugin-device": "3.
|
|
27
|
-
"@webex/internal-plugin-lyra": "3.
|
|
28
|
-
"@webex/internal-plugin-search": "3.
|
|
29
|
-
"@webex/plugin-authorization": "3.
|
|
30
|
-
"@webex/plugin-logger": "3.
|
|
31
|
-
"@webex/test-helper-chai": "3.10.0",
|
|
32
|
-
"@webex/webex-core": "3.
|
|
25
|
+
"@webex/internal-plugin-calendar": "3.11.0-webex-services-ready.1",
|
|
26
|
+
"@webex/internal-plugin-device": "3.11.0-webex-services-ready.1",
|
|
27
|
+
"@webex/internal-plugin-lyra": "3.11.0-webex-services-ready.1",
|
|
28
|
+
"@webex/internal-plugin-search": "3.11.0-webex-services-ready.1",
|
|
29
|
+
"@webex/plugin-authorization": "3.11.0-webex-services-ready.1",
|
|
30
|
+
"@webex/plugin-logger": "3.11.0-webex-services-ready.1",
|
|
31
|
+
"@webex/test-helper-chai": "3.10.0-webex-services-ready.2",
|
|
32
|
+
"@webex/webex-core": "3.11.0-webex-services-ready.1",
|
|
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",
|
|
52
|
-
"@webex/test-helper-mocha": "3.10.0",
|
|
53
|
-
"@webex/test-helper-mock-webex": "3.10.0",
|
|
54
|
-
"@webex/test-helper-test-users": "3.10.0",
|
|
51
|
+
"@webex/test-helper-chai": "3.10.0-webex-services-ready.2",
|
|
52
|
+
"@webex/test-helper-mocha": "3.10.0-webex-services-ready.2",
|
|
53
|
+
"@webex/test-helper-mock-webex": "3.10.0-webex-services-ready.2",
|
|
54
|
+
"@webex/test-helper-test-users": "3.10.0-webex-services-ready.2",
|
|
55
55
|
"eslint": "^8.24.0",
|
|
56
56
|
"prettier": "^2.7.1"
|
|
57
57
|
},
|
|
58
|
-
"version": "3.
|
|
58
|
+
"version": "3.11.0-webex-services-ready.1"
|
|
59
59
|
}
|