@webex/plugin-device-manager 3.0.0-beta.15 → 3.0.0-beta.17
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 +2 -9
- package/dist/collection.js.map +1 -1
- package/dist/config.js +0 -2
- package/dist/config.js.map +1 -1
- package/dist/constants.js +0 -2
- package/dist/constants.js.map +1 -1
- package/dist/device-manager.js +16 -122
- package/dist/device-manager.js.map +1 -1
- package/dist/index.js +1 -9
- package/dist/index.js.map +1 -1
- package/package.json +10 -10
package/dist/collection.js
CHANGED
|
@@ -1,29 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
|
|
14
|
-
|
|
15
10
|
var _merge2 = _interopRequireDefault(require("lodash/merge"));
|
|
16
|
-
|
|
17
11
|
var DeviceCollection = {
|
|
18
12
|
devices: {},
|
|
19
13
|
get: function get(deviceId) {
|
|
20
14
|
return this.devices[deviceId];
|
|
21
15
|
},
|
|
22
16
|
set: function set(device) {
|
|
23
|
-
var deviceId = device.id || device.identity && device.identity.id;
|
|
24
|
-
|
|
17
|
+
var deviceId = device.id || device.identity && device.identity.id;
|
|
18
|
+
// check if the device is already existing, if so then merge else add
|
|
25
19
|
var existingDevice = this.devices[deviceId];
|
|
26
|
-
|
|
27
20
|
if (existingDevice) {
|
|
28
21
|
// already existing, merge for any new binding information
|
|
29
22
|
(0, _merge2.default)(existingDevice, device);
|
package/dist/collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DeviceCollection","devices","get","deviceId","set","device","id","identity","existingDevice","reset","getAll"],"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":"
|
|
1
|
+
{"version":3,"names":["DeviceCollection","devices","get","deviceId","set","device","id","identity","existingDevice","reset","getAll"],"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":";;;;;;;;;;AAEA,IAAMA,gBAAgB,GAAG;EACvBC,OAAO,EAAE,CAAC,CAAC;EAEXC,GAAG,eAACC,QAAQ,EAAE;IACZ,OAAO,IAAI,CAACF,OAAO,CAACE,QAAQ,CAAC;EAC/B,CAAC;EAEDC,GAAG,eAACC,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,qBAAMA,cAAc,EAAEH,MAAM,CAAC;IAC/B,CAAC,MAAM;MACL,IAAI,CAACJ,OAAO,CAACE,QAAQ,CAAC,GAAGE,MAAM;IACjC;EACF,CAAC;EAEDI,KAAK,mBAAG;IACN,IAAI,CAACR,OAAO,GAAG,CAAC,CAAC;EACnB,CAAC;EAEDS,MAAM,oBAAG;IACP,OAAO,qBAAc,IAAI,CAACT,OAAO,CAAC;EACpC;AACF,CAAC;AAAC,eAEaD,gBAAgB;AAAA"}
|
package/dist/config.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
|
|
9
7
|
exports.default = void 0;
|
|
10
8
|
var _default = {};
|
|
11
9
|
exports.default = _default;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["config.js"],"sourcesContent":["export default {};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":[],"sources":["config.js"],"sourcesContent":["export default {};\n"],"mappings":";;;;;;;eAAe,CAAC,CAAC;AAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
|
|
9
7
|
exports.UC_CLOUD = exports.LYRA_SPACE = exports.DEFAULT_PRODUCT_NAME = void 0;
|
|
10
8
|
var LYRA_SPACE = 'LYRA_SPACE';
|
|
11
9
|
exports.LYRA_SPACE = LYRA_SPACE;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LYRA_SPACE","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":"
|
|
1
|
+
{"version":3,"names":["LYRA_SPACE","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,GAAG,YAAY;AAAC;AAChC,IAAMC,QAAQ,GAAG,UAAU;AAAC;AAC5B,IAAMC,oBAAoB,GAAG,SAAS;AAAC"}
|
package/dist/device-manager.js
CHANGED
|
@@ -1,31 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
14
|
-
|
|
15
10
|
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
16
|
-
|
|
17
11
|
require("@webex/internal-plugin-lyra");
|
|
18
|
-
|
|
19
12
|
require("@webex/internal-plugin-search");
|
|
20
|
-
|
|
21
13
|
var _webexCore = require("@webex/webex-core");
|
|
22
|
-
|
|
23
14
|
var _uuid = _interopRequireDefault(require("uuid"));
|
|
24
|
-
|
|
25
15
|
var _constants = require("./constants");
|
|
26
|
-
|
|
27
16
|
var _collection = _interopRequireDefault(require("./collection"));
|
|
28
|
-
|
|
29
17
|
var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
30
18
|
namespace: 'DeviceManager',
|
|
31
19
|
_devicePendingPinChallenge: null,
|
|
@@ -33,15 +21,12 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
33
21
|
_boundSpace: null,
|
|
34
22
|
initialize: function initialize() {
|
|
35
23
|
var _this = this;
|
|
36
|
-
|
|
37
24
|
// Lyra mercury events listener
|
|
38
25
|
this.webex.internal.mercury.on('event:lyra.space_updated', function (_ref) {
|
|
39
26
|
var data = _ref.data;
|
|
40
|
-
|
|
41
27
|
_this._receiveDeviceUpdates(data);
|
|
42
28
|
});
|
|
43
29
|
},
|
|
44
|
-
|
|
45
30
|
/**
|
|
46
31
|
* Gets a list of all recent devices associated with the user
|
|
47
32
|
* the device list gets populated from Redis
|
|
@@ -50,7 +35,6 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
50
35
|
getAll: function getAll() {
|
|
51
36
|
return _collection.default.getAll();
|
|
52
37
|
},
|
|
53
|
-
|
|
54
38
|
/**
|
|
55
39
|
* Gets a list of all recent devices associated with the user
|
|
56
40
|
* the device list gets populated from Redis
|
|
@@ -58,9 +42,7 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
58
42
|
*/
|
|
59
43
|
refresh: function refresh() {
|
|
60
44
|
var _this2 = this;
|
|
61
|
-
|
|
62
45
|
_collection.default.reset();
|
|
63
|
-
|
|
64
46
|
return this.webex.request({
|
|
65
47
|
api: 'wdm',
|
|
66
48
|
resource: 'devices/auxiliary'
|
|
@@ -68,7 +50,6 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
68
50
|
if (!res.body) {
|
|
69
51
|
return _promise.default.reject();
|
|
70
52
|
}
|
|
71
|
-
|
|
72
53
|
return _this2._updateDeviceMetadata(res.body.items).then(function (devices) {
|
|
73
54
|
/* eslint-disable consistent-return */
|
|
74
55
|
devices.forEach(function (device) {
|
|
@@ -79,7 +60,6 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
79
60
|
}
|
|
80
61
|
});
|
|
81
62
|
/* eslint-enable consistent-return */
|
|
82
|
-
|
|
83
63
|
res.body.items.forEach(function (device) {
|
|
84
64
|
_collection.default.set(device);
|
|
85
65
|
});
|
|
@@ -89,7 +69,6 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
89
69
|
_this2.logger.error('DeviceManager#refresh: failed to fetch recent devices', err);
|
|
90
70
|
});
|
|
91
71
|
},
|
|
92
|
-
|
|
93
72
|
/**
|
|
94
73
|
* Search for a device by name
|
|
95
74
|
* @param {Object} options
|
|
@@ -98,12 +77,10 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
98
77
|
*/
|
|
99
78
|
search: function search(options) {
|
|
100
79
|
var _this3 = this;
|
|
101
|
-
|
|
102
80
|
if (!options || !options.searchQuery) {
|
|
103
81
|
this.logger.error('DeviceManager#search: options.searchQuery is required');
|
|
104
82
|
return _promise.default.reject(new Error('DeviceManager#search: options.searchQuery is required'));
|
|
105
83
|
}
|
|
106
|
-
|
|
107
84
|
return this.webex.internal.search.people({
|
|
108
85
|
searchId: _uuid.default.v4(),
|
|
109
86
|
searchType: 'DEVICE_SEARCH',
|
|
@@ -113,11 +90,9 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
113
90
|
queryString: options.searchQuery
|
|
114
91
|
}).catch(function (err) {
|
|
115
92
|
_this3.logger.error('DeviceManager#search: failed to search a device', err);
|
|
116
|
-
|
|
117
93
|
throw err;
|
|
118
94
|
});
|
|
119
95
|
},
|
|
120
|
-
|
|
121
96
|
/**
|
|
122
97
|
* Caches the device info and also registers to Redis for subsequent fetches
|
|
123
98
|
* @param {Object} device
|
|
@@ -126,26 +101,21 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
126
101
|
*/
|
|
127
102
|
upsert: function upsert(device) {
|
|
128
103
|
var _this4 = this;
|
|
129
|
-
|
|
130
104
|
var deviceId = device.id || device.identity && device.identity.id;
|
|
131
|
-
|
|
132
105
|
if (!deviceId) {
|
|
133
106
|
this.logger.error('DeviceManager#upsert: device.id is required');
|
|
134
107
|
return _promise.default.reject(new Error('DeviceManager#upsert: device.id is required'));
|
|
135
108
|
}
|
|
136
|
-
|
|
137
109
|
this._pairedDevice = this._devicePendingPinChallenge;
|
|
138
|
-
this._devicePendingPinChallenge = null;
|
|
139
|
-
|
|
110
|
+
this._devicePendingPinChallenge = null;
|
|
111
|
+
// check if the device is already existing, if so then merge else add
|
|
140
112
|
var existingDevice = _collection.default.get(deviceId);
|
|
141
|
-
|
|
142
113
|
if (existingDevice) {
|
|
143
114
|
_collection.default.set(device);
|
|
144
|
-
|
|
145
115
|
return _promise.default.resolve(_collection.default.get(deviceId));
|
|
146
|
-
}
|
|
147
|
-
|
|
116
|
+
}
|
|
148
117
|
|
|
118
|
+
// new device requested, add to wdm for subsequent retreivals
|
|
149
119
|
return this.webex.request({
|
|
150
120
|
api: 'wdm',
|
|
151
121
|
method: 'PUT',
|
|
@@ -153,18 +123,16 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
153
123
|
}).then(function (res) {
|
|
154
124
|
var auxDevice = res.body;
|
|
155
125
|
return _this4._decryptDeviceName(auxDevice);
|
|
156
|
-
})
|
|
126
|
+
})
|
|
127
|
+
// eslint-disable-next-line no-shadow
|
|
157
128
|
.then(function (device) {
|
|
158
129
|
_collection.default.set(device);
|
|
159
|
-
|
|
160
130
|
return _promise.default.resolve(_collection.default.get(deviceId));
|
|
161
131
|
}).catch(function (err) {
|
|
162
132
|
_this4.logger.error('DeviceManager#upsert: failed to add/update a device', err);
|
|
163
|
-
|
|
164
133
|
return _promise.default.reject(err);
|
|
165
134
|
});
|
|
166
135
|
},
|
|
167
|
-
|
|
168
136
|
/**
|
|
169
137
|
* Retreives device info of a particular device
|
|
170
138
|
* @param {string} token
|
|
@@ -172,12 +140,10 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
172
140
|
*/
|
|
173
141
|
get: function get(token) {
|
|
174
142
|
var _this5 = this;
|
|
175
|
-
|
|
176
143
|
if (!token) {
|
|
177
144
|
this.logger.error('DeviceManager#get: token is required');
|
|
178
145
|
return _promise.default.reject(new Error('DeviceManager#get: token is required'));
|
|
179
146
|
}
|
|
180
|
-
|
|
181
147
|
var deviceInfo;
|
|
182
148
|
return this.webex.internal.lyra.getAdvertisedEndpoint(token).then(function (res) {
|
|
183
149
|
deviceInfo = res;
|
|
@@ -190,15 +156,12 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
190
156
|
if (result && result.identity && result.identity.displayName) {
|
|
191
157
|
deviceInfo.advertiser.displayName = result.identity.displayName;
|
|
192
158
|
}
|
|
193
|
-
|
|
194
159
|
return deviceInfo;
|
|
195
160
|
}).catch(function (err) {
|
|
196
161
|
_this5.logger.error('DeviceManager#get: failed to get device info', err);
|
|
197
|
-
|
|
198
162
|
return _promise.default.reject(err);
|
|
199
163
|
});
|
|
200
164
|
},
|
|
201
|
-
|
|
202
165
|
/**
|
|
203
166
|
* Unregisters the device from Redis, will not fetch in subsequent loads,
|
|
204
167
|
* similar to space.deleteBinding()
|
|
@@ -207,23 +170,19 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
207
170
|
*/
|
|
208
171
|
remove: function remove(deviceId) {
|
|
209
172
|
var _this6 = this;
|
|
210
|
-
|
|
211
173
|
if (!deviceId) {
|
|
212
174
|
this.logger.error('DeviceManager#remove: deviceId is required');
|
|
213
175
|
return _promise.default.reject(new Error('DeviceManager#remove: deviceId is required'));
|
|
214
176
|
}
|
|
215
|
-
|
|
216
177
|
return this.webex.request({
|
|
217
178
|
method: 'delete',
|
|
218
179
|
api: 'wdm',
|
|
219
180
|
resource: "devices/auxiliary/".concat(deviceId)
|
|
220
181
|
}).catch(function (error) {
|
|
221
182
|
_this6.logger.error('DeviceManager#remove: failed to remove the device', error);
|
|
222
|
-
|
|
223
183
|
return _promise.default.reject(error);
|
|
224
184
|
});
|
|
225
185
|
},
|
|
226
|
-
|
|
227
186
|
/**
|
|
228
187
|
* Requests to display PIN on the device
|
|
229
188
|
* @param {object} device
|
|
@@ -233,15 +192,12 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
233
192
|
*/
|
|
234
193
|
requestPin: function requestPin(device) {
|
|
235
194
|
var _this7 = this;
|
|
236
|
-
|
|
237
195
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
238
196
|
var deviceId = device.id || device.identity && device.identity.id;
|
|
239
|
-
|
|
240
197
|
if (!deviceId) {
|
|
241
198
|
this.logger.error('DeviceManager#requestPin: device.id is required');
|
|
242
199
|
return _promise.default.reject(new Error('DeviceManager#requestPin: device.id is required'));
|
|
243
200
|
}
|
|
244
|
-
|
|
245
201
|
var space = {
|
|
246
202
|
id: deviceId,
|
|
247
203
|
url: "/spaces/".concat(deviceId)
|
|
@@ -250,32 +206,28 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
250
206
|
// check if the space is pinChallenge capable
|
|
251
207
|
if (dev && dev.occupants && dev.occupants.pinChallenge) {
|
|
252
208
|
_this7.logger.info('DeviceManager#requestPin: space is PIN challenge capable');
|
|
253
|
-
|
|
254
209
|
return _this7.webex.internal.lyra.space.join(space, {
|
|
255
210
|
passType: 'MANUAL',
|
|
256
211
|
verificationInitiation: 'PIN',
|
|
257
212
|
data: options.data
|
|
258
213
|
}).then(function () {
|
|
259
|
-
_this7._devicePendingPinChallenge = dev;
|
|
260
|
-
// PIN exchange
|
|
214
|
+
_this7._devicePendingPinChallenge = dev;
|
|
261
215
|
|
|
216
|
+
// return the actual device so that it can be upserted on successful
|
|
217
|
+
// PIN exchange
|
|
262
218
|
return dev;
|
|
263
219
|
});
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
|
|
220
|
+
}
|
|
221
|
+
// pairs with the space if it's not PIN challenge capable
|
|
267
222
|
_this7.logger.info('DeviceManager#requestPin: space is not PIN challenge capable, probably already occupied, will still return device info');
|
|
268
|
-
|
|
269
223
|
return _this7.webex.internal.lyra.space.get(space).then(function () {
|
|
270
224
|
return _promise.default.resolve(dev);
|
|
271
225
|
});
|
|
272
226
|
}).catch(function (err) {
|
|
273
227
|
_this7.logger.error('DeviceManager#requestPin: device failed PIN challenge request', err);
|
|
274
|
-
|
|
275
228
|
return _promise.default.reject(err);
|
|
276
229
|
});
|
|
277
230
|
},
|
|
278
|
-
|
|
279
231
|
/**
|
|
280
232
|
* pairs the device with the user (manual pairing), also adds it to
|
|
281
233
|
* user's recents list for subsequent fetches.
|
|
@@ -286,14 +238,11 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
286
238
|
*/
|
|
287
239
|
pair: function pair() {
|
|
288
240
|
var _this8 = this;
|
|
289
|
-
|
|
290
241
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
291
|
-
|
|
292
242
|
if (!options.pin) {
|
|
293
243
|
this.logger.error('DeviceManager#pair: options.pin is required');
|
|
294
244
|
return _promise.default.reject(new Error('DeviceManager#pair: options.pin is required'));
|
|
295
245
|
}
|
|
296
|
-
|
|
297
246
|
if (this._devicePendingPinChallenge) {
|
|
298
247
|
var space = {
|
|
299
248
|
id: this._devicePendingPinChallenge.identity.id,
|
|
@@ -304,17 +253,14 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
304
253
|
data: options.pin
|
|
305
254
|
}).catch(function (err) {
|
|
306
255
|
_this8.logger.error('DeviceManager#pair: incorrect PIN, unable to pair ', err);
|
|
307
|
-
|
|
308
256
|
return _promise.default.reject(err);
|
|
309
257
|
}).then(function () {
|
|
310
258
|
return _this8.upsert(_this8._devicePendingPinChallenge);
|
|
311
259
|
});
|
|
312
260
|
}
|
|
313
|
-
|
|
314
261
|
this.logger.error('DeviceManager#pair: no device to pair');
|
|
315
262
|
return _promise.default.reject(new Error('DeviceManager#pair: no device to pair'));
|
|
316
263
|
},
|
|
317
|
-
|
|
318
264
|
/**
|
|
319
265
|
* unpairs the device with the user (manual/ultrasonic pairing), but still
|
|
320
266
|
* keeps in the recents list/does not remove from Redis
|
|
@@ -326,24 +272,19 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
326
272
|
*/
|
|
327
273
|
unpair: function unpair() {
|
|
328
274
|
var _this9 = this;
|
|
329
|
-
|
|
330
275
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
331
|
-
|
|
332
276
|
if (!this._pairedDevice) {
|
|
333
277
|
this.logger.error('DeviceManager#unpair: no device to unpair');
|
|
334
278
|
return _promise.default.reject(new Error('DeviceManager#unpair: no device to unpair'));
|
|
335
279
|
}
|
|
336
|
-
|
|
337
280
|
var space = {
|
|
338
281
|
url: "/spaces/".concat(this._pairedDevice.identity.id)
|
|
339
282
|
};
|
|
340
283
|
return this.webex.internal.lyra.space.leave(space, options).catch(function (err) {
|
|
341
284
|
_this9.logger.error('DeviceManager#unpair: failed to remove device from Lyra', err);
|
|
342
|
-
|
|
343
285
|
return _promise.default.reject(err);
|
|
344
286
|
});
|
|
345
287
|
},
|
|
346
|
-
|
|
347
288
|
/**
|
|
348
289
|
* binds the space to the paired device (if supported)
|
|
349
290
|
* similar to space.bindConversation()
|
|
@@ -354,24 +295,19 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
354
295
|
*/
|
|
355
296
|
bindSpace: function bindSpace() {
|
|
356
297
|
var _this10 = this;
|
|
357
|
-
|
|
358
298
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
359
|
-
|
|
360
299
|
if (!options.url) {
|
|
361
300
|
this.logger.error('DeviceManager#pair: options.url is required');
|
|
362
301
|
return _promise.default.reject(new Error('DeviceManager#bindSpace: options.url is required'));
|
|
363
302
|
}
|
|
364
|
-
|
|
365
303
|
if (!options.kmsResourceObjectUrl) {
|
|
366
304
|
this.logger.error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required');
|
|
367
305
|
return _promise.default.reject(new Error('DeviceManager#bindSpace: options.kmsResourceObjectUrl is required'));
|
|
368
306
|
}
|
|
369
|
-
|
|
370
307
|
if (!this._pairedDevice) {
|
|
371
308
|
this.logger.error('DeviceManager#bindSpace: No device paired currently');
|
|
372
309
|
return _promise.default.reject(new Error('DeviceManager#bindSpace: No device paired currently'));
|
|
373
310
|
}
|
|
374
|
-
|
|
375
311
|
var space = {
|
|
376
312
|
url: "/spaces/".concat(this._pairedDevice.identity.id),
|
|
377
313
|
id: this._pairedDevice.identity.id
|
|
@@ -382,11 +318,9 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
382
318
|
};
|
|
383
319
|
return this.webex.internal.lyra.space.bindConversation(space, this._boundSpace).catch(function (err) {
|
|
384
320
|
_this10.logger.error('DeviceManager#bindSpace: failed to bind device to Space');
|
|
385
|
-
|
|
386
321
|
return _promise.default.reject(err);
|
|
387
322
|
});
|
|
388
323
|
},
|
|
389
|
-
|
|
390
324
|
/**
|
|
391
325
|
* unbinds the space to the paired device (if supported)
|
|
392
326
|
* similar to space.unbindConversation()
|
|
@@ -394,12 +328,10 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
394
328
|
*/
|
|
395
329
|
unbindSpace: function unbindSpace() {
|
|
396
330
|
var _this11 = this;
|
|
397
|
-
|
|
398
331
|
if (!this._pairedDevice || !this._boundSpace) {
|
|
399
332
|
this.logger.error('DeviceManager#unbindSpace: No space currently bound to the device');
|
|
400
333
|
return _promise.default.reject(new Error('DeviceManager#unbindSpace: No space currently bound to the device'));
|
|
401
334
|
}
|
|
402
|
-
|
|
403
335
|
var space = {
|
|
404
336
|
url: "/spaces/".concat(this._pairedDevice.identity.id),
|
|
405
337
|
id: this._pairedDevice.identity.id
|
|
@@ -409,11 +341,9 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
409
341
|
return _promise.default.resolve(res);
|
|
410
342
|
}).catch(function (err) {
|
|
411
343
|
_this11.logger.error('DeviceManager#unbindSpace: failed to unbind Space to device');
|
|
412
|
-
|
|
413
344
|
return _promise.default.reject(err);
|
|
414
345
|
});
|
|
415
346
|
},
|
|
416
|
-
|
|
417
347
|
/**
|
|
418
348
|
* Gets the audio state of the paired device
|
|
419
349
|
* similar to device.getAudioState()
|
|
@@ -424,10 +354,8 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
424
354
|
this.logger.error('DeviceManager#getAudioState: Currently no device is paired');
|
|
425
355
|
return _promise.default.reject(new Error('DeviceManager#getAudioState: Currently no device is paired'));
|
|
426
356
|
}
|
|
427
|
-
|
|
428
357
|
return this.webex.internal.lyra.device.getAudioState(this._pairedDevice);
|
|
429
358
|
},
|
|
430
|
-
|
|
431
359
|
/**
|
|
432
360
|
* Updates audio state of the paired device, should be called every 10 minutes
|
|
433
361
|
* or when mic or volume state is changed
|
|
@@ -440,7 +368,6 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
440
368
|
var audioState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
441
369
|
return this.webex.internal.lyra.device.putAudioState(space, audioState);
|
|
442
370
|
},
|
|
443
|
-
|
|
444
371
|
/**
|
|
445
372
|
* Mutes paired device
|
|
446
373
|
* similar to device.mute()
|
|
@@ -451,10 +378,8 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
451
378
|
this.logger.error('DeviceManager#mute: Currently no device is paired');
|
|
452
379
|
return _promise.default.reject(new Error('DeviceManager#mute: Currently no device is paired'));
|
|
453
380
|
}
|
|
454
|
-
|
|
455
381
|
return this.webex.internal.lyra.device.mute(this._pairedDevice);
|
|
456
382
|
},
|
|
457
|
-
|
|
458
383
|
/**
|
|
459
384
|
* Unmutes paired device
|
|
460
385
|
* similar to device.unmute()
|
|
@@ -465,10 +390,8 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
465
390
|
this.logger.error('DeviceManager#unmute: Currently no device is paired');
|
|
466
391
|
return _promise.default.reject(new Error('DeviceManager#unmute: Currently no device is paired'));
|
|
467
392
|
}
|
|
468
|
-
|
|
469
393
|
return this.webex.internal.lyra.device.unmute(this._pairedDevice);
|
|
470
394
|
},
|
|
471
|
-
|
|
472
395
|
/**
|
|
473
396
|
* Increases paired device's volume
|
|
474
397
|
* similar to device.increaseVolume()
|
|
@@ -479,10 +402,8 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
479
402
|
this.logger.error('DeviceManager#increaseVolume: Currently no device is paired');
|
|
480
403
|
return _promise.default.reject(new Error('DeviceManager#increaseVolume: Currently no device is paired'));
|
|
481
404
|
}
|
|
482
|
-
|
|
483
405
|
return this.webex.internal.lyra.device.increaseVolume(this._pairedDevice);
|
|
484
406
|
},
|
|
485
|
-
|
|
486
407
|
/**
|
|
487
408
|
* Decreases paired device's volume
|
|
488
409
|
* similar to device.decreaseVolume()
|
|
@@ -493,10 +414,8 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
493
414
|
this.logger.error('DeviceManager#decreaseVolume: Currently no device is paired');
|
|
494
415
|
return _promise.default.reject(new Error('DeviceManager#decreaseVolume: Currently no device is paired'));
|
|
495
416
|
}
|
|
496
|
-
|
|
497
417
|
return this.webex.internal.lyra.device.decreaseVolume(this._pairedDevice);
|
|
498
418
|
},
|
|
499
|
-
|
|
500
419
|
/**
|
|
501
420
|
* Sets paired device's volume but should use increase and decrease api instead
|
|
502
421
|
* similar to device.setVolume()
|
|
@@ -505,15 +424,12 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
505
424
|
*/
|
|
506
425
|
setVolume: function setVolume() {
|
|
507
426
|
var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
508
|
-
|
|
509
427
|
if (!this._pairedDevice) {
|
|
510
428
|
this.logger.error('DeviceManager#setVolume: Currently no device is paired');
|
|
511
429
|
return _promise.default.reject(new Error('DeviceManager#setVolume: Currently no device is paired'));
|
|
512
430
|
}
|
|
513
|
-
|
|
514
431
|
return this.webex.internal.lyra.device.setVolume(this._pairedDevice, level);
|
|
515
432
|
},
|
|
516
|
-
|
|
517
433
|
/**
|
|
518
434
|
* Utility function to update decrypted device name on device object
|
|
519
435
|
* @param {Array} deviceArray
|
|
@@ -521,20 +437,16 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
521
437
|
*/
|
|
522
438
|
_updateDeviceMetadata: function _updateDeviceMetadata() {
|
|
523
439
|
var _this12 = this;
|
|
524
|
-
|
|
525
440
|
var deviceArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
526
|
-
|
|
527
441
|
if (!deviceArray.length) {
|
|
528
442
|
return _promise.default.resolve(deviceArray);
|
|
529
443
|
}
|
|
530
|
-
|
|
531
444
|
var devices = (0, _cloneDeep2.default)(deviceArray);
|
|
532
445
|
return _promise.default.all(devices.map(function (device, index) {
|
|
533
446
|
return _this12.webex.internal.services.waitForCatalog('postauth').then(function () {
|
|
534
447
|
if (device.deviceClass === _constants.UC_CLOUD) {
|
|
535
448
|
device.id = "".concat(_this12.webex.internal.services.get('wdm'), "/").concat(device.id);
|
|
536
449
|
}
|
|
537
|
-
|
|
538
450
|
return _this12._decryptDeviceName(device);
|
|
539
451
|
}).then(function (updatedDevice) {
|
|
540
452
|
devices[index] = updatedDevice;
|
|
@@ -544,7 +456,6 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
544
456
|
return _promise.default.resolve(devices);
|
|
545
457
|
});
|
|
546
458
|
},
|
|
547
|
-
|
|
548
459
|
/**
|
|
549
460
|
* Utility function to update decrypted device name on device object
|
|
550
461
|
* @param {object} inDevice
|
|
@@ -552,10 +463,8 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
552
463
|
*/
|
|
553
464
|
_decryptDeviceName: function _decryptDeviceName() {
|
|
554
465
|
var _this13 = this;
|
|
555
|
-
|
|
556
466
|
var inDevice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
557
467
|
var device = (0, _cloneDeep2.default)(inDevice);
|
|
558
|
-
|
|
559
468
|
if (device.metadata && device.metadata.encryptedUserAssignedName && device.metadata.encryptionKeyUrl) {
|
|
560
469
|
return this.webex.internal.encryption.decryptText(device.metadata.encryptionKeyUrl, device.metadata.encryptedUserAssignedName).then(function (decryptedDeviceName) {
|
|
561
470
|
// set userAssignedName as the decypted value, unset encryptedUserAssignedName since it's not needed
|
|
@@ -565,14 +474,11 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
565
474
|
}).catch(function (err) {
|
|
566
475
|
// unset encryptedUserAssignedName if failed to decrypt
|
|
567
476
|
device.metadata.encryptedUserAssignedName = undefined;
|
|
568
|
-
|
|
569
477
|
_this13.logger.error('DeviceCollection#_decryptDeviceName: failed to decrypt device name', err);
|
|
570
478
|
});
|
|
571
479
|
}
|
|
572
|
-
|
|
573
480
|
return _promise.default.resolve(device);
|
|
574
481
|
},
|
|
575
|
-
|
|
576
482
|
/**
|
|
577
483
|
* Utility function to update device info on mercury updates
|
|
578
484
|
* @param {object} device
|
|
@@ -580,54 +486,42 @@ var DeviceManager = _webexCore.WebexPlugin.extend({
|
|
|
580
486
|
*/
|
|
581
487
|
_receiveDeviceUpdates: function _receiveDeviceUpdates(device) {
|
|
582
488
|
var _this14 = this;
|
|
583
|
-
|
|
584
489
|
// we care only the updates are for the registered devices
|
|
585
490
|
if (device && device.spaceUrl) {
|
|
586
491
|
var deviceId = device.spaceUrl.substring(device.spaceUrl.lastIndexOf('/') + 1);
|
|
587
|
-
|
|
588
492
|
var existingDevice = _collection.default.get(deviceId);
|
|
589
|
-
|
|
590
493
|
if (existingDevice) {
|
|
591
494
|
return this.webex.internal.lyra.space.get({
|
|
592
495
|
id: deviceId
|
|
593
496
|
}).then(function (space) {
|
|
594
497
|
// eslint-disable-next-line no-shadow
|
|
595
498
|
var device = _collection.default.get(deviceId);
|
|
596
|
-
|
|
597
499
|
if (device && space.occupants && (!space.occupants.self || !space.occupants.self.verified)) {
|
|
598
|
-
device.productName = space.devices && space.devices[0] && space.devices[0].productName || _constants.DEFAULT_PRODUCT_NAME;
|
|
500
|
+
device.productName = space.devices && space.devices[0] && space.devices[0].productName || _constants.DEFAULT_PRODUCT_NAME;
|
|
501
|
+
// pin challenge is not verified reset _pairedDevice if ids
|
|
599
502
|
// match
|
|
600
|
-
|
|
601
503
|
var pairedDeviceId = _this14._pairedDevice && (_this14._pairedDevice.id || _this14._pairedDevice.identity.id);
|
|
602
|
-
|
|
603
504
|
if (pairedDeviceId === deviceId) {
|
|
604
505
|
_this14._pairedDevice = null;
|
|
605
|
-
|
|
606
506
|
_this14.logger.info("DeviceManager#_receiveDeviceUpdates: device ".concat(deviceId, " lost pairing"));
|
|
607
|
-
|
|
608
507
|
return _promise.default.resolve();
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
|
|
508
|
+
}
|
|
509
|
+
// we do not want to reset the device pending PIN challenge
|
|
612
510
|
if (_this14._devicePendingPinChallenge.identity.id !== deviceId) {
|
|
613
511
|
return _this14.upsert(device);
|
|
614
512
|
}
|
|
615
|
-
|
|
616
513
|
return _promise.default.resolve();
|
|
617
514
|
}
|
|
618
|
-
|
|
619
515
|
return _promise.default.resolve();
|
|
620
516
|
}).catch(function (err) {
|
|
621
517
|
_this14.logger.error('DeviceManager#_receiveDeviceUpdates: failed to receive updates for Lyra space', err);
|
|
622
518
|
});
|
|
623
519
|
}
|
|
624
520
|
}
|
|
625
|
-
|
|
626
521
|
return _promise.default.resolve();
|
|
627
522
|
},
|
|
628
|
-
version: "3.0.0-beta.
|
|
523
|
+
version: "3.0.0-beta.17"
|
|
629
524
|
});
|
|
630
|
-
|
|
631
525
|
var _default = DeviceManager;
|
|
632
526
|
exports.default = _default;
|
|
633
527
|
//# sourceMappingURL=device-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DeviceManager","WebexPlugin","extend","namespace","_devicePendingPinChallenge","_pairedDevice","_boundSpace","initialize","webex","internal","mercury","on","data","_receiveDeviceUpdates","getAll","DeviceCollection","refresh","reset","request","api","resource","then","res","body","reject","_updateDeviceMetadata","items","devices","forEach","device","deviceInfo","machineType","LYRA_SPACE","lyra","space","get","catch","err","logger","error","set","search","options","searchQuery","Error","people","searchId","uuid","v4","searchType","searchEntity","includePeople","includeRooms","queryString","upsert","deviceId","id","identity","existingDevice","resolve","method","auxDevice","_decryptDeviceName","token","getAdvertisedEndpoint","advertiser","result","displayName","remove","requestPin","url","dev","occupants","pinChallenge","info","join","passType","verificationInitiation","pair","pin","unpair","leave","bindSpace","kmsResourceObjectUrl","bindConversation","unbindSpace","unbindConversation","getAudioState","putAudioState","audioState","mute","unmute","increaseVolume","decreaseVolume","setVolume","level","deviceArray","length","all","map","index","services","waitForCatalog","deviceClass","UC_CLOUD","updatedDevice","inDevice","metadata","encryptedUserAssignedName","encryptionKeyUrl","encryption","decryptText","decryptedDeviceName","undefined","userAssignedName","spaceUrl","substring","lastIndexOf","self","verified","productName","DEFAULT_PRODUCT_NAME","pairedDeviceId"],"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 // 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\nexport default DeviceManager;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["DeviceManager","WebexPlugin","extend","namespace","_devicePendingPinChallenge","_pairedDevice","_boundSpace","initialize","webex","internal","mercury","on","data","_receiveDeviceUpdates","getAll","DeviceCollection","refresh","reset","request","api","resource","then","res","body","reject","_updateDeviceMetadata","items","devices","forEach","device","deviceInfo","machineType","LYRA_SPACE","lyra","space","get","catch","err","logger","error","set","search","options","searchQuery","Error","people","searchId","uuid","v4","searchType","searchEntity","includePeople","includeRooms","queryString","upsert","deviceId","id","identity","existingDevice","resolve","method","auxDevice","_decryptDeviceName","token","getAdvertisedEndpoint","advertiser","result","displayName","remove","requestPin","url","dev","occupants","pinChallenge","info","join","passType","verificationInitiation","pair","pin","unpair","leave","bindSpace","kmsResourceObjectUrl","bindConversation","unbindSpace","unbindConversation","getAudioState","putAudioState","audioState","mute","unmute","increaseVolume","decreaseVolume","setVolume","level","deviceArray","length","all","map","index","services","waitForCatalog","deviceClass","UC_CLOUD","updatedDevice","inDevice","metadata","encryptedUserAssignedName","encryptionKeyUrl","encryption","decryptText","decryptedDeviceName","undefined","userAssignedName","spaceUrl","substring","lastIndexOf","self","verified","productName","DEFAULT_PRODUCT_NAME","pairedDeviceId"],"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 // 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\nexport default DeviceManager;\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,40 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
_Object$defineProperty(exports, "config", {
|
|
12
9
|
enumerable: true,
|
|
13
10
|
get: function get() {
|
|
14
11
|
return _config.default;
|
|
15
12
|
}
|
|
16
13
|
});
|
|
17
|
-
|
|
18
14
|
_Object$defineProperty(exports, "default", {
|
|
19
15
|
enumerable: true,
|
|
20
16
|
get: function get() {
|
|
21
17
|
return _deviceManager.default;
|
|
22
18
|
}
|
|
23
19
|
});
|
|
24
|
-
|
|
25
20
|
require("@webex/internal-plugin-device");
|
|
26
|
-
|
|
27
21
|
var _webexCore = require("@webex/webex-core");
|
|
28
|
-
|
|
29
22
|
var _deviceManager = _interopRequireDefault(require("./device-manager"));
|
|
30
|
-
|
|
31
23
|
var _config = _interopRequireDefault(require("./config"));
|
|
32
|
-
|
|
33
24
|
/*!
|
|
34
25
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
35
26
|
*/
|
|
36
27
|
|
|
37
28
|
/* globals */
|
|
29
|
+
|
|
38
30
|
(0, _webexCore.registerPlugin)('devicemanager', _deviceManager.default, {
|
|
39
31
|
config: _config.default
|
|
40
32
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["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":"
|
|
1
|
+
{"version":3,"names":["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":";;;;;;;;;;;;;;;;;;;AAMA;AACA;AAEA;AACA;AAVA;AACA;AACA;;AAEA;;AAQA,IAAAA,yBAAc,EAAC,eAAe,EAAEC,sBAAa,EAAE;EAC7CC,MAAM,EAANA;AACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-device-manager",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.17",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"contributors": [
|
|
@@ -23,15 +23,15 @@
|
|
|
23
23
|
]
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@webex/internal-plugin-calendar": "3.0.0-beta.
|
|
27
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
28
|
-
"@webex/internal-plugin-lyra": "3.0.0-beta.
|
|
29
|
-
"@webex/internal-plugin-search": "3.0.0-beta.
|
|
30
|
-
"@webex/plugin-authorization": "3.0.0-beta.
|
|
31
|
-
"@webex/plugin-device-manager": "3.0.0-beta.
|
|
32
|
-
"@webex/plugin-logger": "3.0.0-beta.
|
|
33
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
34
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
26
|
+
"@webex/internal-plugin-calendar": "3.0.0-beta.17",
|
|
27
|
+
"@webex/internal-plugin-device": "3.0.0-beta.17",
|
|
28
|
+
"@webex/internal-plugin-lyra": "3.0.0-beta.17",
|
|
29
|
+
"@webex/internal-plugin-search": "3.0.0-beta.17",
|
|
30
|
+
"@webex/plugin-authorization": "3.0.0-beta.17",
|
|
31
|
+
"@webex/plugin-device-manager": "3.0.0-beta.17",
|
|
32
|
+
"@webex/plugin-logger": "3.0.0-beta.17",
|
|
33
|
+
"@webex/test-helper-chai": "3.0.0-beta.17",
|
|
34
|
+
"@webex/webex-core": "3.0.0-beta.17",
|
|
35
35
|
"lodash": "^4.17.21",
|
|
36
36
|
"uuid": "^3.3.2"
|
|
37
37
|
}
|