@webex/plugin-rooms 3.0.0-beta.15 → 3.0.0-beta.16
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/index.js +1 -8
- package/dist/index.js.map +1 -1
- package/dist/rooms.js +92 -168
- package/dist/rooms.js.map +1 -1
- package/package.json +12 -12
package/dist/index.js
CHANGED
|
@@ -1,26 +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
|
require("@webex/internal-plugin-conversation");
|
|
14
|
-
|
|
15
10
|
require("@webex/internal-plugin-mercury");
|
|
16
|
-
|
|
17
11
|
var _webexCore = require("@webex/webex-core");
|
|
18
|
-
|
|
19
12
|
var _rooms = _interopRequireDefault(require("./rooms"));
|
|
20
|
-
|
|
21
13
|
/*!
|
|
22
14
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
23
15
|
*/
|
|
16
|
+
|
|
24
17
|
(0, _webexCore.registerPlugin)('rooms', _rooms.default);
|
|
25
18
|
var _default = _rooms.default;
|
|
26
19
|
exports.default = _default;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["registerPlugin","Rooms"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-conversation';\nimport '@webex/internal-plugin-mercury';\n\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Rooms from './rooms';\n\nregisterPlugin('rooms', Rooms);\n\nexport default Rooms;\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["registerPlugin","Rooms"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-conversation';\nimport '@webex/internal-plugin-mercury';\n\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Rooms from './rooms';\n\nregisterPlugin('rooms', Rooms);\n\nexport default Rooms;\n"],"mappings":";;;;;;;;AAIA;AACA;AAEA;AAEA;AATA;AACA;AACA;;AASA,IAAAA,yBAAc,EAAC,OAAO,EAAEC,cAAK,CAAC;AAAC,eAEhBA,cAAK;AAAA"}
|
package/dist/rooms.js
CHANGED
|
@@ -1,60 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
4
|
-
|
|
5
4
|
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
6
|
-
|
|
7
5
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
8
|
-
|
|
9
6
|
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
10
|
-
|
|
11
7
|
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
12
|
-
|
|
13
8
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
14
|
-
|
|
15
9
|
var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
|
|
16
|
-
|
|
17
10
|
var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
|
|
18
|
-
|
|
19
11
|
var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
|
|
20
|
-
|
|
21
12
|
var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
|
|
22
|
-
|
|
23
13
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
24
|
-
|
|
25
14
|
_Object$defineProperty(exports, "__esModule", {
|
|
26
15
|
value: true
|
|
27
16
|
});
|
|
28
|
-
|
|
29
17
|
exports.default = void 0;
|
|
30
|
-
|
|
31
18
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
32
|
-
|
|
33
19
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
34
|
-
|
|
35
20
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
36
|
-
|
|
37
21
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
38
|
-
|
|
39
22
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
40
|
-
|
|
41
23
|
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
42
|
-
|
|
43
24
|
var _webexCore = require("@webex/webex-core");
|
|
44
|
-
|
|
45
25
|
var _common = require("@webex/common");
|
|
46
|
-
|
|
47
26
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
48
|
-
|
|
49
27
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
50
|
-
|
|
51
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
52
|
-
|
|
28
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
53
29
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
54
|
-
|
|
55
30
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
56
|
-
|
|
57
31
|
var debug = require('debug')('rooms');
|
|
32
|
+
|
|
58
33
|
/**
|
|
59
34
|
* @typedef {Object} RoomObject
|
|
60
35
|
* @property {string} id - (server generated) Unique identifier for the room
|
|
@@ -74,8 +49,6 @@ var debug = require('debug')('rooms');
|
|
|
74
49
|
* @class
|
|
75
50
|
* @name Rooms
|
|
76
51
|
*/
|
|
77
|
-
|
|
78
|
-
|
|
79
52
|
var Rooms = _webexCore.WebexPlugin.extend({
|
|
80
53
|
/**
|
|
81
54
|
* Register to listen for incoming rooms events
|
|
@@ -107,7 +80,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
107
80
|
*/
|
|
108
81
|
listen: function listen() {
|
|
109
82
|
var _this = this;
|
|
110
|
-
|
|
111
83
|
return (0, _common.createEventEnvelope)(this.webex, _common.SDK_EVENT.EXTERNAL.RESOURCE.ROOMS).then(function (envelope) {
|
|
112
84
|
_this.eventEnvelope = envelope;
|
|
113
85
|
return _this.webex.internal.mercury.connect().then(function () {
|
|
@@ -117,7 +89,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
117
89
|
});
|
|
118
90
|
});
|
|
119
91
|
},
|
|
120
|
-
|
|
121
92
|
/**
|
|
122
93
|
* Creates a new room. The authenticated user is automatically added as a
|
|
123
94
|
* member of the room. See the {@link Memberships} API to learn how to add
|
|
@@ -148,7 +119,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
148
119
|
return res.body;
|
|
149
120
|
});
|
|
150
121
|
},
|
|
151
|
-
|
|
152
122
|
/**
|
|
153
123
|
* Returns a single room.
|
|
154
124
|
* @instance
|
|
@@ -180,7 +150,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
180
150
|
return res.body.items || res.body;
|
|
181
151
|
});
|
|
182
152
|
},
|
|
183
|
-
|
|
184
153
|
/**
|
|
185
154
|
* Returns a list of rooms. In most cases the results will only contain rooms
|
|
186
155
|
* that the authenticated user is a member of.
|
|
@@ -215,7 +184,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
215
184
|
*/
|
|
216
185
|
list: function list(options) {
|
|
217
186
|
var _this2 = this;
|
|
218
|
-
|
|
219
187
|
return this.request({
|
|
220
188
|
service: 'hydra',
|
|
221
189
|
resource: 'rooms/',
|
|
@@ -224,7 +192,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
224
192
|
return new _webexCore.Page(res, _this2.webex);
|
|
225
193
|
});
|
|
226
194
|
},
|
|
227
|
-
|
|
228
195
|
/**
|
|
229
196
|
* Returns a list of rooms with details about the data of the last
|
|
230
197
|
* activity in the room, and the date of the users last presences in
|
|
@@ -271,57 +238,47 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
271
238
|
*/
|
|
272
239
|
listWithReadStatus: function listWithReadStatus() {
|
|
273
240
|
var _arguments = arguments,
|
|
274
|
-
|
|
275
|
-
|
|
241
|
+
_this3 = this;
|
|
276
242
|
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
277
243
|
var maxRecent, now, options;
|
|
278
244
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
279
|
-
while (1) {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
245
|
+
while (1) switch (_context.prev = _context.next) {
|
|
246
|
+
case 0:
|
|
247
|
+
maxRecent = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : 0;
|
|
248
|
+
now = new Date();
|
|
249
|
+
options = {
|
|
250
|
+
activitiesLimit: 0,
|
|
251
|
+
computeTitleIfEmpty: true,
|
|
252
|
+
conversationsLimit: 1000,
|
|
253
|
+
isActive: true
|
|
254
|
+
};
|
|
255
|
+
if (!(maxRecent > 0)) {
|
|
256
|
+
_context.next = 8;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
options.conversationsLimit = maxRecent;
|
|
260
|
+
options.sinceDate = now.setDate(now.getDate() - 14);
|
|
261
|
+
_context.next = 10;
|
|
262
|
+
break;
|
|
263
|
+
case 8:
|
|
264
|
+
if (!(maxRecent < 0 || maxRecent > 100)) {
|
|
298
265
|
_context.next = 10;
|
|
299
266
|
break;
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
return _this3.webex.internal.conversation.list(options);
|
|
312
|
-
}).then(function (conversations) {
|
|
313
|
-
return buildRoomInfoList(_this3.webex, conversations);
|
|
314
|
-
}));
|
|
315
|
-
|
|
316
|
-
case 11:
|
|
317
|
-
case "end":
|
|
318
|
-
return _context.stop();
|
|
319
|
-
}
|
|
267
|
+
}
|
|
268
|
+
return _context.abrupt("return", _promise.default.reject(new Error('rooms.listWithReadStatus: ' + 'optional maxRecent parameter must be an integer between 1 and 100')));
|
|
269
|
+
case 10:
|
|
270
|
+
return _context.abrupt("return", _this3.webex.internal.services.waitForCatalog('postauth').then(function () {
|
|
271
|
+
return _this3.webex.internal.conversation.list(options);
|
|
272
|
+
}).then(function (conversations) {
|
|
273
|
+
return buildRoomInfoList(_this3.webex, conversations);
|
|
274
|
+
}));
|
|
275
|
+
case 11:
|
|
276
|
+
case "end":
|
|
277
|
+
return _context.stop();
|
|
320
278
|
}
|
|
321
279
|
}, _callee);
|
|
322
280
|
}))();
|
|
323
281
|
},
|
|
324
|
-
|
|
325
282
|
/**
|
|
326
283
|
* Returns a single room object with details about the data of the last
|
|
327
284
|
* activity in the room, and the date of the users last presence in
|
|
@@ -355,7 +312,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
355
312
|
*/
|
|
356
313
|
getWithReadStatus: function getWithReadStatus(roomId) {
|
|
357
314
|
var _this4 = this;
|
|
358
|
-
|
|
359
315
|
var deconstructedId = (0, _common.deconstructHydraId)(roomId);
|
|
360
316
|
var conversation = {
|
|
361
317
|
id: deconstructedId.id,
|
|
@@ -365,13 +321,11 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
365
321
|
return _this4.webex.internal.conversation.get(conversation, {
|
|
366
322
|
computeTitleIfEmpty: true,
|
|
367
323
|
activitiesLimit: 0 // don't send the whole history of activity
|
|
368
|
-
|
|
369
324
|
}).then(function (convo) {
|
|
370
325
|
return buildRoomInfo(_this4.webex, convo);
|
|
371
326
|
});
|
|
372
327
|
});
|
|
373
328
|
},
|
|
374
|
-
|
|
375
329
|
/**
|
|
376
330
|
* Deletes a single room.
|
|
377
331
|
* @instance
|
|
@@ -411,11 +365,9 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
411
365
|
if (res.statusCode === 204) {
|
|
412
366
|
return undefined;
|
|
413
367
|
}
|
|
414
|
-
|
|
415
368
|
return res.body;
|
|
416
369
|
});
|
|
417
370
|
},
|
|
418
|
-
|
|
419
371
|
/**
|
|
420
372
|
* Used to update a single room's properties.
|
|
421
373
|
* @instance
|
|
@@ -451,7 +403,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
451
403
|
return res.body;
|
|
452
404
|
});
|
|
453
405
|
},
|
|
454
|
-
|
|
455
406
|
/**
|
|
456
407
|
* This function is called when an internal membership events fires,
|
|
457
408
|
* if the user registered for these events with the listen() function.
|
|
@@ -463,37 +414,30 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
463
414
|
*/
|
|
464
415
|
onWebexApiEvent: function onWebexApiEvent(event) {
|
|
465
416
|
var activity = event.data.activity;
|
|
466
|
-
/* eslint-disable no-case-declarations */
|
|
467
417
|
|
|
418
|
+
/* eslint-disable no-case-declarations */
|
|
468
419
|
switch (activity.verb) {
|
|
469
420
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.CREATE:
|
|
470
421
|
var roomCreatedEvent = this.getRoomEvent(this.webex, activity, _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED);
|
|
471
|
-
|
|
472
422
|
if (roomCreatedEvent) {
|
|
473
423
|
debug("room \"created\" payload: ".concat((0, _stringify.default)(roomCreatedEvent)));
|
|
474
424
|
this.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, roomCreatedEvent);
|
|
475
425
|
}
|
|
476
|
-
|
|
477
426
|
break;
|
|
478
|
-
|
|
479
427
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.UPDATE:
|
|
480
428
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.LOCK:
|
|
481
429
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.UNLOCK:
|
|
482
430
|
debug("generating a rooms:updated based on ".concat(activity.verb, " activity"));
|
|
483
431
|
var roomUpdatedEvent = this.getRoomEvent(this.webex, activity, _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED);
|
|
484
|
-
|
|
485
432
|
if (roomUpdatedEvent) {
|
|
486
433
|
debug("room \"updated\" payload: ".concat((0, _stringify.default)(roomUpdatedEvent)));
|
|
487
434
|
this.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, roomUpdatedEvent);
|
|
488
435
|
}
|
|
489
|
-
|
|
490
436
|
break;
|
|
491
|
-
|
|
492
437
|
default:
|
|
493
438
|
break;
|
|
494
439
|
}
|
|
495
440
|
},
|
|
496
|
-
|
|
497
441
|
/**
|
|
498
442
|
* Constructs the data object for an event on the rooms resource,
|
|
499
443
|
* adhering to Hydra's Webhook data structure.
|
|
@@ -513,13 +457,11 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
513
457
|
sdkEvent.event = event;
|
|
514
458
|
sdkEvent.data.created = activity.published;
|
|
515
459
|
sdkEvent.actorId = (0, _common.buildHydraPersonId)(activity.actor.entryUUID, cluster);
|
|
516
|
-
|
|
517
460
|
if (activity.object.id) {
|
|
518
461
|
sdkEvent.data.id = (0, _common.buildHydraRoomId)(activity.object.id, cluster);
|
|
519
462
|
} else {
|
|
520
463
|
sdkEvent.data.id = (0, _common.buildHydraRoomId)(activity.target.id, cluster);
|
|
521
464
|
}
|
|
522
|
-
|
|
523
465
|
if (event === _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED) {
|
|
524
466
|
sdkEvent.data.creatorId = (0, _common.buildHydraPersonId)(activity.actor.entryUUID, cluster);
|
|
525
467
|
sdkEvent.data.lastActivity = activity.published;
|
|
@@ -528,20 +470,18 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
528
470
|
// For some reason the tags are not in the object for an update activity
|
|
529
471
|
tags = activity.target.tags;
|
|
530
472
|
}
|
|
531
|
-
|
|
532
473
|
if (activity.object.creatorUUID) {
|
|
533
474
|
// This seems to be set in lock/unlock activities but not updated...
|
|
534
475
|
debug("Found a creatorId: ".concat(activity.object.creatorUUID, " in a ").concat(activity.verb, " event"));
|
|
535
476
|
sdkEvent.data.creatorId = (0, _common.buildHydraPersonId)(activity.object.creatorUUID, cluster);
|
|
536
|
-
}
|
|
477
|
+
}
|
|
478
|
+
// Webhook engine team sets this based on lastReadableActivityDate
|
|
537
479
|
// in the activity.target object. See: hydra/HydraRoom.java#L51
|
|
538
480
|
// This elements seems to be missing from the activity that the SDK is getting
|
|
539
481
|
// sdkEvent.data.lastActivity = activity.target.lastReadableActivityDate;
|
|
540
|
-
|
|
541
482
|
} else {
|
|
542
483
|
throw new Error('unexpected event type');
|
|
543
484
|
}
|
|
544
|
-
|
|
545
485
|
sdkEvent.data.type = (0, _common.getHydraRoomType)(tags);
|
|
546
486
|
sdkEvent.data.isLocked = tags.includes(_common.SDK_EVENT.INTERNAL.ACTIVITY_TAG.LOCKED);
|
|
547
487
|
return sdkEvent;
|
|
@@ -550,9 +490,8 @@ var Rooms = _webexCore.WebexPlugin.extend({
|
|
|
550
490
|
return null;
|
|
551
491
|
}
|
|
552
492
|
},
|
|
553
|
-
version: "3.0.0-beta.
|
|
493
|
+
version: "3.0.0-beta.16"
|
|
554
494
|
});
|
|
555
|
-
|
|
556
495
|
var _default = Rooms;
|
|
557
496
|
/**
|
|
558
497
|
* Helper method to build a roomInfo object from a conversation object
|
|
@@ -560,9 +499,7 @@ var _default = Rooms;
|
|
|
560
499
|
* @param {Conversation~ConversationObject} conversation
|
|
561
500
|
* @returns {Promise<RoomInfoObject>}
|
|
562
501
|
*/
|
|
563
|
-
|
|
564
502
|
exports.default = _default;
|
|
565
|
-
|
|
566
503
|
function buildRoomInfo(_x, _x2) {
|
|
567
504
|
return _buildRoomInfo.apply(this, arguments);
|
|
568
505
|
}
|
|
@@ -572,90 +509,77 @@ function buildRoomInfo(_x, _x2) {
|
|
|
572
509
|
* @param {Conversation~ConversationObjectList} conversations
|
|
573
510
|
* @returns {Promise<RoomInfoList>}
|
|
574
511
|
*/
|
|
575
|
-
|
|
576
|
-
|
|
577
512
|
function _buildRoomInfo() {
|
|
578
513
|
_buildRoomInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(webex, conversation) {
|
|
579
514
|
var type, cluster, title, lastActivityDate, roomInfo;
|
|
580
515
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
581
|
-
while (1) {
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
case "end":
|
|
609
|
-
return _context2.stop();
|
|
610
|
-
}
|
|
516
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
517
|
+
case 0:
|
|
518
|
+
_context2.prev = 0;
|
|
519
|
+
type = (0, _common.getHydraRoomType)(conversation.tags);
|
|
520
|
+
cluster = (0, _common.getHydraClusterString)(webex, conversation.url);
|
|
521
|
+
title = conversation.displayName ? conversation.displayName : conversation.computedTitle;
|
|
522
|
+
lastActivityDate = conversation.lastReadableActivityDate ? conversation.lastReadableActivityDate : conversation.lastRelevantActivityDate;
|
|
523
|
+
roomInfo = _objectSpread(_objectSpread(_objectSpread({
|
|
524
|
+
id: (0, _common.buildHydraRoomId)(conversation.id, cluster),
|
|
525
|
+
type: type
|
|
526
|
+
}, title && {
|
|
527
|
+
title: conversation.displayName
|
|
528
|
+
}), lastActivityDate && {
|
|
529
|
+
lastActivityDate: lastActivityDate
|
|
530
|
+
}), {}, {
|
|
531
|
+
lastSeenActivityDate: conversation.lastSeenActivityDate ? conversation.lastSeenActivityDate :
|
|
532
|
+
// If user has never been seen set the date to "a long time ago"
|
|
533
|
+
new Date(0).toISOString()
|
|
534
|
+
});
|
|
535
|
+
return _context2.abrupt("return", _promise.default.resolve(roomInfo));
|
|
536
|
+
case 9:
|
|
537
|
+
_context2.prev = 9;
|
|
538
|
+
_context2.t0 = _context2["catch"](0);
|
|
539
|
+
return _context2.abrupt("return", _promise.default.reject(_context2.t0));
|
|
540
|
+
case 12:
|
|
541
|
+
case "end":
|
|
542
|
+
return _context2.stop();
|
|
611
543
|
}
|
|
612
544
|
}, _callee2, null, [[0, 9]]);
|
|
613
545
|
}));
|
|
614
546
|
return _buildRoomInfo.apply(this, arguments);
|
|
615
547
|
}
|
|
616
|
-
|
|
617
548
|
function buildRoomInfoList(_x3, _x4) {
|
|
618
549
|
return _buildRoomInfoList.apply(this, arguments);
|
|
619
550
|
}
|
|
620
|
-
|
|
621
551
|
function _buildRoomInfoList() {
|
|
622
552
|
_buildRoomInfoList = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(webex, conversations) {
|
|
623
553
|
var roomReadInfo, roomInfoPromises, _iterator, _step, conversation;
|
|
624
|
-
|
|
625
554
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
626
|
-
while (1) {
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
conversation = _step.value;
|
|
639
|
-
roomInfoPromises.push(buildRoomInfo(webex, conversation));
|
|
640
|
-
}
|
|
641
|
-
} catch (err) {
|
|
642
|
-
_iterator.e(err);
|
|
643
|
-
} finally {
|
|
644
|
-
_iterator.f();
|
|
555
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
556
|
+
case 0:
|
|
557
|
+
// Convert each Conversation into a roomInfo object
|
|
558
|
+
roomReadInfo = {
|
|
559
|
+
items: []
|
|
560
|
+
};
|
|
561
|
+
roomInfoPromises = [];
|
|
562
|
+
_iterator = _createForOfIteratorHelper(conversations);
|
|
563
|
+
try {
|
|
564
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
565
|
+
conversation = _step.value;
|
|
566
|
+
roomInfoPromises.push(buildRoomInfo(webex, conversation));
|
|
645
567
|
}
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
568
|
+
} catch (err) {
|
|
569
|
+
_iterator.e(err);
|
|
570
|
+
} finally {
|
|
571
|
+
_iterator.f();
|
|
572
|
+
}
|
|
573
|
+
return _context3.abrupt("return", _promise.default.all(roomInfoPromises).then(function (roomInfoList) {
|
|
574
|
+
roomReadInfo.items = roomInfoList;
|
|
575
|
+
roomReadInfo.items.sort(function (a, b) {
|
|
576
|
+
return a.lastActivityDate < b.lastActivityDate ? 1 : -1;
|
|
577
|
+
});
|
|
578
|
+
return roomReadInfo;
|
|
579
|
+
}));
|
|
580
|
+
case 5:
|
|
581
|
+
case "end":
|
|
582
|
+
return _context3.stop();
|
|
659
583
|
}
|
|
660
584
|
}, _callee3);
|
|
661
585
|
}));
|
package/dist/rooms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["debug","require","Rooms","WebexPlugin","extend","listen","createEventEnvelope","webex","SDK_EVENT","EXTERNAL","RESOURCE","ROOMS","then","envelope","eventEnvelope","internal","mercury","connect","listenTo","INTERNAL","WEBEX_ACTIVITY","event","onWebexApiEvent","create","room","request","method","service","resource","body","res","get","options","id","qs","items","list","Page","listWithReadStatus","maxRecent","now","Date","activitiesLimit","computeTitleIfEmpty","conversationsLimit","isActive","sinceDate","setDate","getDate","reject","Error","services","waitForCatalog","conversation","conversations","buildRoomInfoList","getWithReadStatus","roomId","deconstructedId","deconstructHydraId","cluster","convo","buildRoomInfo","remove","statusCode","undefined","update","activity","data","verb","ACTIVITY_VERB","CREATE","roomCreatedEvent","getRoomEvent","EVENT_TYPE","CREATED","trigger","UPDATE","LOCK","UNLOCK","roomUpdatedEvent","UPDATED","sdkEvent","getHydraClusterString","url","tags","object","created","published","actorId","buildHydraPersonId","actor","entryUUID","buildHydraRoomId","target","creatorId","lastActivity","creatorUUID","type","getHydraRoomType","isLocked","includes","ACTIVITY_TAG","LOCKED","e","logger","error","message","title","displayName","computedTitle","lastActivityDate","lastReadableActivityDate","lastRelevantActivityDate","roomInfo","lastSeenActivityDate","toISOString","resolve","roomReadInfo","roomInfoPromises","push","all","roomInfoList","sort","a","b"],"sources":["rooms.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport {cloneDeep} from 'lodash';\nimport {\n SDK_EVENT,\n createEventEnvelope,\n buildHydraPersonId,\n buildHydraRoomId,\n getHydraClusterString,\n getHydraRoomType,\n deconstructHydraId,\n} from '@webex/common';\n\nconst debug = require('debug')('rooms');\n\n/**\n * @typedef {Object} RoomObject\n * @property {string} id - (server generated) Unique identifier for the room\n * @property {string} title - The display name for the room. All room members\n * will see the title so make it something good\n * @property {string} teamId - (optional) The ID of the team to which the room\n * belongs\n * @property {isoDate} created - (server generated) The date and time that the\n * room was created\n */\n\n/**\n * Rooms are virtual meeting places for getting stuff done. This resource\n * represents the room itself. Check out the {@link Memberships} API to learn\n * how to add and remove people from rooms and the {@link Messages} API for\n * posting and managing content.\n * @class\n * @name Rooms\n */\nconst Rooms = WebexPlugin.extend({\n /**\n * Register to listen for incoming rooms events\n * This is an alternate approach to registering for rooms webhooks.\n * The events passed to any registered handlers will be similar to the webhook JSON,\n * but will omit webhook specific fields such as name, secret, url, etc.\n * To utilize the `listen()` method, the authorization token used\n * will need to have `spark:all` and `spark:kms` scopes enabled.\n * Note that by configuring your application to enable or disable `spark:all`\n * via its configuration page will also enable or disable `spark:kms`.\n * See the <a href=\"https://webex.github.io/webex-js-sdk/samples/browser-socket/\">Sample App</a>\n * for more details.\n * @instance\n * @memberof Rooms\n * @returns {Promise}\n * @example\n * webex.rooms.listen()\n * .then(() => {\n * console.log('listening to room events');\n * webex.rooms.on('created', (event) => console.log(`Got a room:created event:\\n${event}`);\n * webex.rooms.on('updated', (event) => console.log(`Got a room:updated event:\\n${event}`);\n * })\n * .catch((e) => console.error(`Unable to register for room events: ${e}`));\n * // Some app logic...\n * // WHen it is time to cleanup\n * webex.rooms.stopListening();\n * webex.rooms.off('created');\n * webex.rooms.off('updated');\n */\n listen() {\n return createEventEnvelope(this.webex, SDK_EVENT.EXTERNAL.RESOURCE.ROOMS).then((envelope) => {\n this.eventEnvelope = envelope;\n\n return this.webex.internal.mercury.connect().then(() => {\n this.listenTo(this.webex.internal.mercury, SDK_EVENT.INTERNAL.WEBEX_ACTIVITY, (event) =>\n this.onWebexApiEvent(event)\n );\n });\n });\n },\n\n /**\n * Creates a new room. The authenticated user is automatically added as a\n * member of the room. See the {@link Memberships} API to learn how to add\n * more people to the room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject} room\n * @returns {Promise<RoomObject>}\n * @example\n * webex.rooms.create({title: 'Create Room Example'})\n * .then(function(room) {\n * var assert = require('assert')\n * assert(typeof room.created === 'string');\n * assert(typeof room.id === 'string');\n * assert(room.title === 'Create Room Example');\n * console.log(room.title);\n * return 'success';\n * });\n * // => success\n */\n create(room) {\n return this.request({\n method: 'POST',\n service: 'hydra',\n resource: 'rooms',\n body: room,\n }).then((res) => res.body);\n },\n\n /**\n * Returns a single room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject|string} room\n * @param {Object} options\n * @returns {Promise<RoomObject>}\n * @example\n * var room;\n * webex.rooms.create({title: 'Get Room Example'})\n * .then(function(r) {\n * room = r\n * return webex.rooms.get(room.id)\n * })\n * .then(function(r) {\n * var assert = require('assert');\n * assert.deepEqual(r, room);\n * return 'success';\n * });\n * // => success\n */\n get(room, options) {\n const id = room.id || room;\n\n return this.request({\n service: 'hydra',\n resource: `rooms/${id}`,\n qs: options,\n }).then((res) => res.body.items || res.body);\n },\n\n /**\n * Returns a list of rooms. In most cases the results will only contain rooms\n * that the authenticated user is a member of.\n * @instance\n * @memberof Rooms\n * @param {Object} options\n * @param {Object} options.max Limit the maximum number of rooms in the\n * response.\n * @returns {Promise<Page<RoomObject>>}\n * @example\n * var createdRooms;\n * Promise.all([\n * webex.rooms.create({title: 'List Rooms Example 1'}),\n * webex.rooms.create({title: 'List Rooms Example 2'}),\n * webex.rooms.create({title: 'List Rooms Example 3'})\n * ])\n * .then(function(r) {\n * createdRooms = r;\n * return webex.rooms.list({max: 3})\n * .then(function(rooms) {\n * var assert = require('assert');\n * assert(rooms.length === 3);\n * for (var i = 0; i < rooms.items.length; i+= 1) {\n * assert(createdRooms.filter(function(room) {\n * return room.id === rooms.items[i].id;\n * }).length === 1);\n * }\n * return 'success';\n * });\n * });\n * // => success\n */\n list(options) {\n return this.request({\n service: 'hydra',\n resource: 'rooms/',\n qs: options,\n }).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Returns a list of rooms with details about the data of the last\n * activity in the room, and the date of the users last presences in\n * the room. The list is sorted with this with most recent activity first\n *\n * For rooms where lastActivityDate > lastSeenDate the space\n * can be considered to be \"unread\"\n *\n * This differs from the rooms.list() function in the following ways:\n * -- when called with no parameters it returns an array of all\n * spaces, up to 1000, that the user is a member of\n * -- pagination is not supported. ALL rooms are returned which\n * can result in a large payload\n * -- For users with hundreds of spaces, this API can take some time to\n * to return, for this reason it supports an optional maxRecent parameter.\n * If set this will return only the specified number of spaces with activity\n * in the last two weeks. Recommended value is 30. Max supported is 100.\n * -- only \"id\", \"type\", \"lastActivityDate\", and \"lastSeenDate\" are\n * guaranteed to be available for each room in the list\n * -- \"title\" is usually returned, but not guaranteed\n *\n * In general this function should be used only when the client needs to\n * access read status info, for example on startup.\n * After startup, clients should track message and membership:seen events\n * to maintain read status client side.\n *\n * Since this API can take some time to return up to 1000 spaces, it is\n * recommended that custom clients call this first with the maxRecent parameter\n * set to 30, so that they can display some of the more recents spaces. Calling\n * this API a second time with no parameters will return all the spaces.\n *\n * Not all spaces may be returned, for example when users in more than 1000\n * spaces, or when a new spaces is added after this function is called,\n * but before it returns. Custom clients should be prepared to gracefully\n * handle cases where an event occurs in a space not returned by this call,\n * by querying rooms.getWithReadStatus() with the id of the room in question\n *\n * This function may be deprecated when this info is provided in the membership\n * objects returned in the list function.\n * @instance\n * @param {int} maxRecent\n * @memberof Rooms\n * @returns {Promise<RoomInfoObjectList>}\n */\n async listWithReadStatus(maxRecent = 0) {\n const now = new Date();\n const options = {\n activitiesLimit: 0,\n computeTitleIfEmpty: true,\n conversationsLimit: 1000,\n isActive: true,\n };\n\n if (maxRecent > 0) {\n options.conversationsLimit = maxRecent;\n options.sinceDate = now.setDate(now.getDate() - 14);\n } else if (maxRecent < 0 || maxRecent > 100) {\n return Promise.reject(\n new Error(\n 'rooms.listWithReadStatus: ' +\n 'optional maxRecent parameter must be an integer between 1 and 100'\n )\n );\n }\n\n return this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => this.webex.internal.conversation.list(options))\n .then((conversations) => buildRoomInfoList(this.webex, conversations));\n },\n\n /**\n * Returns a single room object with details about the data of the last\n * activity in the room, and the date of the users last presence in\n * the room.\n *\n * For rooms where lastActivityDate > lastSeenDate the room\n * can be considered to be \"unread\"\n *\n * This differs from the rooms.get() function in the following ways:\n * -- it takes a single roomId parameter to fetch\n * -- no other options are considered\n * -- only \"id\", \"type\", \"lastActivityDate\", and \"lastSeenDate\" are\n * guaranteed to be available in the return object\n * -- \"title\" is usually returned, but not guaranteed\n *\n * In general clients should use the listWithReadStatus() method on startup\n * to get the initial roomStatus and then update their client side copy by\n * responding to message, membership and room events.\n\n * This function allows a custom client to be \"nimble\" if it is responding\n * to an event with a roomId that was not in the original fetch. The\n * anticipated behavior is that getWithReadStats is called \"just in time\",\n * with the resulting room object being added to the list of cached room\n * objects on the client side.\n *\n * This function may be deprecated when this info is provided in the room\n * object returned in the get function.\n * @instance\n * @memberof Rooms\n * @param {string} roomId\n * @returns {Promise<RoomInfoObject>}\n */\n getWithReadStatus(roomId) {\n const deconstructedId = deconstructHydraId(roomId);\n const conversation = {\n id: deconstructedId.id,\n cluster: deconstructedId.cluster,\n };\n\n return this.webex.internal.services.waitForCatalog('postauth').then(() =>\n this.webex.internal.conversation\n .get(conversation, {\n computeTitleIfEmpty: true,\n activitiesLimit: 0, // don't send the whole history of activity\n })\n .then((convo) => buildRoomInfo(this.webex, convo))\n );\n },\n\n /**\n * Deletes a single room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject|string} room\n * @returns {Promise}\n * @example\n * var room;\n * webex.rooms.create({title: 'Remove Room Example'})\n * .then(function(r) {\n * room = r;\n * return webex.rooms.remove(room.id);\n * })\n * .then(function() {\n * return webex.rooms.get(room.id);\n * })\n * .then(function() {\n * var assert = require('assert');\n * assert(false, 'the previous get should have failed');\n * })\n * .catch(function(reason) {\n * var assert = require('assert');\n * assert.equal(reason.statusCode, 404);\n * return 'success'\n * });\n * // => success\n */\n remove(room) {\n const id = room.id || room;\n\n return this.request({\n method: 'DELETE',\n service: 'hydra',\n resource: `rooms/${id}`,\n }).then((res) => {\n // Firefox has some issues with 204s and/or DELETE. This should move to\n // http-core\n if (res.statusCode === 204) {\n return undefined;\n }\n\n return res.body;\n });\n },\n\n /**\n * Used to update a single room's properties.\n * @instance\n * @memberof Rooms\n * @param {RoomObject} room\n * @returns {Promise<RoomObject>}\n * @example\n * var room;\n * webex.rooms.update({title: 'Update Room Example'})\n * .then(function(r) {\n * room = r;\n * room.title = 'Update Room Example (Updated Title)';\n * return webex.rooms.update(room);\n * })\n * .then(function() {\n * return webex.rooms.get(room.id);\n * })\n * .then(function(room) {\n * var assert = require('assert');\n * assert.equal(room.title, 'Update Room Example (Updated Title)');\n * return 'success';\n * });\n * // => success\n */\n update(room) {\n const {id} = room;\n\n return this.request({\n method: 'PUT',\n service: 'hydra',\n resource: `rooms/${id}`,\n body: room,\n }).then((res) => res.body);\n },\n\n /**\n * This function is called when an internal membership events fires,\n * if the user registered for these events with the listen() function.\n * External users of the SDK should not call this function\n * @private\n * @memberof Rooms\n * @param {Object} event\n * @returns {void}\n */\n onWebexApiEvent(event) {\n const {activity} = event.data;\n\n /* eslint-disable no-case-declarations */\n switch (activity.verb) {\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.CREATE:\n const roomCreatedEvent = this.getRoomEvent(\n this.webex,\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED\n );\n\n if (roomCreatedEvent) {\n debug(`room \"created\" payload: \\\n ${JSON.stringify(roomCreatedEvent)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, roomCreatedEvent);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.UPDATE:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.LOCK:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.UNLOCK:\n debug(`generating a rooms:updated based on ${activity.verb} activity`);\n const roomUpdatedEvent = this.getRoomEvent(\n this.webex,\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED\n );\n\n if (roomUpdatedEvent) {\n debug(`room \"updated\" payload: \\\n ${JSON.stringify(roomUpdatedEvent)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, roomUpdatedEvent);\n }\n break;\n\n default:\n break;\n }\n },\n\n /**\n * Constructs the data object for an event on the rooms resource,\n * adhering to Hydra's Webhook data structure.\n * External users of the SDK should not call this function\n * @private\n * @memberof Rooms\n * @param {Object} webex sdk instance\n * @param {Object} activity from mercury\n * @param {Object} event type of \"webhook\" event\n * @returns {Object} constructed event\n */\n getRoomEvent(webex, activity, event) {\n try {\n const sdkEvent = cloneDeep(this.eventEnvelope);\n const cluster = getHydraClusterString(webex, activity.url);\n let {tags} = activity.object;\n\n sdkEvent.event = event;\n sdkEvent.data.created = activity.published;\n sdkEvent.actorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n if (activity.object.id) {\n sdkEvent.data.id = buildHydraRoomId(activity.object.id, cluster);\n } else {\n sdkEvent.data.id = buildHydraRoomId(activity.target.id, cluster);\n }\n\n if (event === SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED) {\n sdkEvent.data.creatorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n sdkEvent.data.lastActivity = activity.published;\n } else if (event === SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED) {\n if (activity.verb === 'update') {\n // For some reason the tags are not in the object for an update activity\n tags = activity.target.tags;\n }\n if (activity.object.creatorUUID) {\n // This seems to be set in lock/unlock activities but not updated...\n debug(`Found a creatorId: ${activity.object.creatorUUID} in a ${activity.verb} event`);\n sdkEvent.data.creatorId = buildHydraPersonId(activity.object.creatorUUID, cluster);\n }\n // Webhook engine team sets this based on lastReadableActivityDate\n // in the activity.target object. See: hydra/HydraRoom.java#L51\n // This elements seems to be missing from the activity that the SDK is getting\n // sdkEvent.data.lastActivity = activity.target.lastReadableActivityDate;\n } else {\n throw new Error('unexpected event type');\n }\n sdkEvent.data.type = getHydraRoomType(tags);\n sdkEvent.data.isLocked = tags.includes(SDK_EVENT.INTERNAL.ACTIVITY_TAG.LOCKED);\n\n return sdkEvent;\n } catch (e) {\n this.webex.logger.error(\n `Unable to generate SDK event from mercury socket activity for rooms:${event} event: ${e.message}`\n );\n\n return null;\n }\n },\n});\n\nexport default Rooms;\n\n/**\n * Helper method to build a roomInfo object from a conversation object\n * @param {Object} webex sdk object\n * @param {Conversation~ConversationObject} conversation\n * @returns {Promise<RoomInfoObject>}\n */\nasync function buildRoomInfo(webex, conversation) {\n try {\n const type = getHydraRoomType(conversation.tags);\n const cluster = getHydraClusterString(webex, conversation.url);\n const title = conversation.displayName ? conversation.displayName : conversation.computedTitle;\n const lastActivityDate = conversation.lastReadableActivityDate\n ? conversation.lastReadableActivityDate\n : conversation.lastRelevantActivityDate;\n\n const roomInfo = {\n id: buildHydraRoomId(conversation.id, cluster),\n type,\n ...(title && {title: conversation.displayName}),\n ...(lastActivityDate && {lastActivityDate}),\n lastSeenActivityDate: conversation.lastSeenActivityDate\n ? conversation.lastSeenActivityDate\n : // If user has never been seen set the date to \"a long time ago\"\n new Date(0).toISOString(),\n };\n\n return Promise.resolve(roomInfo);\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\n/**\n * Helper method to build a list of roomInfo object from conversation list\n * @param {Object} webex sdk object\n * @param {Conversation~ConversationObjectList} conversations\n * @returns {Promise<RoomInfoList>}\n */\nasync function buildRoomInfoList(webex, conversations) {\n // Convert each Conversation into a roomInfo object\n const roomReadInfo = {items: []};\n const roomInfoPromises = [];\n\n for (const conversation of conversations) {\n roomInfoPromises.push(buildRoomInfo(webex, conversation));\n }\n\n return Promise.all(roomInfoPromises).then((roomInfoList) => {\n roomReadInfo.items = roomInfoList;\n roomReadInfo.items.sort((a, b) => (a.lastActivityDate < b.lastActivityDate ? 1 : -1));\n\n return roomReadInfo;\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AAEA;;;;;;;;;;;;AAUA,IAAMA,KAAK,GAAGC,OAAO,CAAC,OAAD,CAAP,CAAiB,OAAjB,CAAd;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,KAAK,GAAGC,sBAAA,CAAYC,MAAZ,CAAmB;EAC/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,MA7B+B,oBA6BtB;IAAA;;IACP,OAAO,IAAAC,2BAAA,EAAoB,KAAKC,KAAzB,EAAgCC,iBAAA,CAAUC,QAAV,CAAmBC,QAAnB,CAA4BC,KAA5D,EAAmEC,IAAnE,CAAwE,UAACC,QAAD,EAAc;MAC3F,KAAI,CAACC,aAAL,GAAqBD,QAArB;MAEA,OAAO,KAAI,CAACN,KAAL,CAAWQ,QAAX,CAAoBC,OAApB,CAA4BC,OAA5B,GAAsCL,IAAtC,CAA2C,YAAM;QACtD,KAAI,CAACM,QAAL,CAAc,KAAI,CAACX,KAAL,CAAWQ,QAAX,CAAoBC,OAAlC,EAA2CR,iBAAA,CAAUW,QAAV,CAAmBC,cAA9D,EAA8E,UAACC,KAAD;UAAA,OAC5E,KAAI,CAACC,eAAL,CAAqBD,KAArB,CAD4E;QAAA,CAA9E;MAGD,CAJM,CAAP;IAKD,CARM,CAAP;EASD,CAvC8B;;EAyC/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,MA7D+B,kBA6DxBC,IA7DwB,EA6DlB;IACX,OAAO,KAAKC,OAAL,CAAa;MAClBC,MAAM,EAAE,MADU;MAElBC,OAAO,EAAE,OAFS;MAGlBC,QAAQ,EAAE,OAHQ;MAIlBC,IAAI,EAAEL;IAJY,CAAb,EAKJZ,IALI,CAKC,UAACkB,GAAD;MAAA,OAASA,GAAG,CAACD,IAAb;IAAA,CALD,CAAP;EAMD,CApE8B;;EAsE/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,GA3F+B,eA2F3BP,IA3F2B,EA2FrBQ,OA3FqB,EA2FZ;IACjB,IAAMC,EAAE,GAAGT,IAAI,CAACS,EAAL,IAAWT,IAAtB;IAEA,OAAO,KAAKC,OAAL,CAAa;MAClBE,OAAO,EAAE,OADS;MAElBC,QAAQ,kBAAWK,EAAX,CAFU;MAGlBC,EAAE,EAAEF;IAHc,CAAb,EAIJpB,IAJI,CAIC,UAACkB,GAAD;MAAA,OAASA,GAAG,CAACD,IAAJ,CAASM,KAAT,IAAkBL,GAAG,CAACD,IAA/B;IAAA,CAJD,CAAP;EAKD,CAnG8B;;EAqG/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEO,IArI+B,gBAqI1BJ,OArI0B,EAqIjB;IAAA;;IACZ,OAAO,KAAKP,OAAL,CAAa;MAClBE,OAAO,EAAE,OADS;MAElBC,QAAQ,EAAE,QAFQ;MAGlBM,EAAE,EAAEF;IAHc,CAAb,EAIJpB,IAJI,CAIC,UAACkB,GAAD;MAAA,OAAS,IAAIO,eAAJ,CAASP,GAAT,EAAc,MAAI,CAACvB,KAAnB,CAAT;IAAA,CAJD,CAAP;EAKD,CA3I8B;;EA6I/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQ+B,kBAzLyB,gCAyLS;IAAA;IAAA;;IAAA;MAAA;MAAA;QAAA;UAAA;YAAA;cAAfC,SAAe,0EAAH,CAAG;cAChC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"}
|
|
1
|
+
{"version":3,"names":["debug","require","Rooms","WebexPlugin","extend","listen","createEventEnvelope","webex","SDK_EVENT","EXTERNAL","RESOURCE","ROOMS","then","envelope","eventEnvelope","internal","mercury","connect","listenTo","INTERNAL","WEBEX_ACTIVITY","event","onWebexApiEvent","create","room","request","method","service","resource","body","res","get","options","id","qs","items","list","Page","listWithReadStatus","maxRecent","now","Date","activitiesLimit","computeTitleIfEmpty","conversationsLimit","isActive","sinceDate","setDate","getDate","reject","Error","services","waitForCatalog","conversation","conversations","buildRoomInfoList","getWithReadStatus","roomId","deconstructedId","deconstructHydraId","cluster","convo","buildRoomInfo","remove","statusCode","undefined","update","activity","data","verb","ACTIVITY_VERB","CREATE","roomCreatedEvent","getRoomEvent","EVENT_TYPE","CREATED","trigger","UPDATE","LOCK","UNLOCK","roomUpdatedEvent","UPDATED","sdkEvent","getHydraClusterString","url","tags","object","created","published","actorId","buildHydraPersonId","actor","entryUUID","buildHydraRoomId","target","creatorId","lastActivity","creatorUUID","type","getHydraRoomType","isLocked","includes","ACTIVITY_TAG","LOCKED","e","logger","error","message","title","displayName","computedTitle","lastActivityDate","lastReadableActivityDate","lastRelevantActivityDate","roomInfo","lastSeenActivityDate","toISOString","resolve","roomReadInfo","roomInfoPromises","push","all","roomInfoList","sort","a","b"],"sources":["rooms.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport {cloneDeep} from 'lodash';\nimport {\n SDK_EVENT,\n createEventEnvelope,\n buildHydraPersonId,\n buildHydraRoomId,\n getHydraClusterString,\n getHydraRoomType,\n deconstructHydraId,\n} from '@webex/common';\n\nconst debug = require('debug')('rooms');\n\n/**\n * @typedef {Object} RoomObject\n * @property {string} id - (server generated) Unique identifier for the room\n * @property {string} title - The display name for the room. All room members\n * will see the title so make it something good\n * @property {string} teamId - (optional) The ID of the team to which the room\n * belongs\n * @property {isoDate} created - (server generated) The date and time that the\n * room was created\n */\n\n/**\n * Rooms are virtual meeting places for getting stuff done. This resource\n * represents the room itself. Check out the {@link Memberships} API to learn\n * how to add and remove people from rooms and the {@link Messages} API for\n * posting and managing content.\n * @class\n * @name Rooms\n */\nconst Rooms = WebexPlugin.extend({\n /**\n * Register to listen for incoming rooms events\n * This is an alternate approach to registering for rooms webhooks.\n * The events passed to any registered handlers will be similar to the webhook JSON,\n * but will omit webhook specific fields such as name, secret, url, etc.\n * To utilize the `listen()` method, the authorization token used\n * will need to have `spark:all` and `spark:kms` scopes enabled.\n * Note that by configuring your application to enable or disable `spark:all`\n * via its configuration page will also enable or disable `spark:kms`.\n * See the <a href=\"https://webex.github.io/webex-js-sdk/samples/browser-socket/\">Sample App</a>\n * for more details.\n * @instance\n * @memberof Rooms\n * @returns {Promise}\n * @example\n * webex.rooms.listen()\n * .then(() => {\n * console.log('listening to room events');\n * webex.rooms.on('created', (event) => console.log(`Got a room:created event:\\n${event}`);\n * webex.rooms.on('updated', (event) => console.log(`Got a room:updated event:\\n${event}`);\n * })\n * .catch((e) => console.error(`Unable to register for room events: ${e}`));\n * // Some app logic...\n * // WHen it is time to cleanup\n * webex.rooms.stopListening();\n * webex.rooms.off('created');\n * webex.rooms.off('updated');\n */\n listen() {\n return createEventEnvelope(this.webex, SDK_EVENT.EXTERNAL.RESOURCE.ROOMS).then((envelope) => {\n this.eventEnvelope = envelope;\n\n return this.webex.internal.mercury.connect().then(() => {\n this.listenTo(this.webex.internal.mercury, SDK_EVENT.INTERNAL.WEBEX_ACTIVITY, (event) =>\n this.onWebexApiEvent(event)\n );\n });\n });\n },\n\n /**\n * Creates a new room. The authenticated user is automatically added as a\n * member of the room. See the {@link Memberships} API to learn how to add\n * more people to the room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject} room\n * @returns {Promise<RoomObject>}\n * @example\n * webex.rooms.create({title: 'Create Room Example'})\n * .then(function(room) {\n * var assert = require('assert')\n * assert(typeof room.created === 'string');\n * assert(typeof room.id === 'string');\n * assert(room.title === 'Create Room Example');\n * console.log(room.title);\n * return 'success';\n * });\n * // => success\n */\n create(room) {\n return this.request({\n method: 'POST',\n service: 'hydra',\n resource: 'rooms',\n body: room,\n }).then((res) => res.body);\n },\n\n /**\n * Returns a single room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject|string} room\n * @param {Object} options\n * @returns {Promise<RoomObject>}\n * @example\n * var room;\n * webex.rooms.create({title: 'Get Room Example'})\n * .then(function(r) {\n * room = r\n * return webex.rooms.get(room.id)\n * })\n * .then(function(r) {\n * var assert = require('assert');\n * assert.deepEqual(r, room);\n * return 'success';\n * });\n * // => success\n */\n get(room, options) {\n const id = room.id || room;\n\n return this.request({\n service: 'hydra',\n resource: `rooms/${id}`,\n qs: options,\n }).then((res) => res.body.items || res.body);\n },\n\n /**\n * Returns a list of rooms. In most cases the results will only contain rooms\n * that the authenticated user is a member of.\n * @instance\n * @memberof Rooms\n * @param {Object} options\n * @param {Object} options.max Limit the maximum number of rooms in the\n * response.\n * @returns {Promise<Page<RoomObject>>}\n * @example\n * var createdRooms;\n * Promise.all([\n * webex.rooms.create({title: 'List Rooms Example 1'}),\n * webex.rooms.create({title: 'List Rooms Example 2'}),\n * webex.rooms.create({title: 'List Rooms Example 3'})\n * ])\n * .then(function(r) {\n * createdRooms = r;\n * return webex.rooms.list({max: 3})\n * .then(function(rooms) {\n * var assert = require('assert');\n * assert(rooms.length === 3);\n * for (var i = 0; i < rooms.items.length; i+= 1) {\n * assert(createdRooms.filter(function(room) {\n * return room.id === rooms.items[i].id;\n * }).length === 1);\n * }\n * return 'success';\n * });\n * });\n * // => success\n */\n list(options) {\n return this.request({\n service: 'hydra',\n resource: 'rooms/',\n qs: options,\n }).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Returns a list of rooms with details about the data of the last\n * activity in the room, and the date of the users last presences in\n * the room. The list is sorted with this with most recent activity first\n *\n * For rooms where lastActivityDate > lastSeenDate the space\n * can be considered to be \"unread\"\n *\n * This differs from the rooms.list() function in the following ways:\n * -- when called with no parameters it returns an array of all\n * spaces, up to 1000, that the user is a member of\n * -- pagination is not supported. ALL rooms are returned which\n * can result in a large payload\n * -- For users with hundreds of spaces, this API can take some time to\n * to return, for this reason it supports an optional maxRecent parameter.\n * If set this will return only the specified number of spaces with activity\n * in the last two weeks. Recommended value is 30. Max supported is 100.\n * -- only \"id\", \"type\", \"lastActivityDate\", and \"lastSeenDate\" are\n * guaranteed to be available for each room in the list\n * -- \"title\" is usually returned, but not guaranteed\n *\n * In general this function should be used only when the client needs to\n * access read status info, for example on startup.\n * After startup, clients should track message and membership:seen events\n * to maintain read status client side.\n *\n * Since this API can take some time to return up to 1000 spaces, it is\n * recommended that custom clients call this first with the maxRecent parameter\n * set to 30, so that they can display some of the more recents spaces. Calling\n * this API a second time with no parameters will return all the spaces.\n *\n * Not all spaces may be returned, for example when users in more than 1000\n * spaces, or when a new spaces is added after this function is called,\n * but before it returns. Custom clients should be prepared to gracefully\n * handle cases where an event occurs in a space not returned by this call,\n * by querying rooms.getWithReadStatus() with the id of the room in question\n *\n * This function may be deprecated when this info is provided in the membership\n * objects returned in the list function.\n * @instance\n * @param {int} maxRecent\n * @memberof Rooms\n * @returns {Promise<RoomInfoObjectList>}\n */\n async listWithReadStatus(maxRecent = 0) {\n const now = new Date();\n const options = {\n activitiesLimit: 0,\n computeTitleIfEmpty: true,\n conversationsLimit: 1000,\n isActive: true,\n };\n\n if (maxRecent > 0) {\n options.conversationsLimit = maxRecent;\n options.sinceDate = now.setDate(now.getDate() - 14);\n } else if (maxRecent < 0 || maxRecent > 100) {\n return Promise.reject(\n new Error(\n 'rooms.listWithReadStatus: ' +\n 'optional maxRecent parameter must be an integer between 1 and 100'\n )\n );\n }\n\n return this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => this.webex.internal.conversation.list(options))\n .then((conversations) => buildRoomInfoList(this.webex, conversations));\n },\n\n /**\n * Returns a single room object with details about the data of the last\n * activity in the room, and the date of the users last presence in\n * the room.\n *\n * For rooms where lastActivityDate > lastSeenDate the room\n * can be considered to be \"unread\"\n *\n * This differs from the rooms.get() function in the following ways:\n * -- it takes a single roomId parameter to fetch\n * -- no other options are considered\n * -- only \"id\", \"type\", \"lastActivityDate\", and \"lastSeenDate\" are\n * guaranteed to be available in the return object\n * -- \"title\" is usually returned, but not guaranteed\n *\n * In general clients should use the listWithReadStatus() method on startup\n * to get the initial roomStatus and then update their client side copy by\n * responding to message, membership and room events.\n\n * This function allows a custom client to be \"nimble\" if it is responding\n * to an event with a roomId that was not in the original fetch. The\n * anticipated behavior is that getWithReadStats is called \"just in time\",\n * with the resulting room object being added to the list of cached room\n * objects on the client side.\n *\n * This function may be deprecated when this info is provided in the room\n * object returned in the get function.\n * @instance\n * @memberof Rooms\n * @param {string} roomId\n * @returns {Promise<RoomInfoObject>}\n */\n getWithReadStatus(roomId) {\n const deconstructedId = deconstructHydraId(roomId);\n const conversation = {\n id: deconstructedId.id,\n cluster: deconstructedId.cluster,\n };\n\n return this.webex.internal.services.waitForCatalog('postauth').then(() =>\n this.webex.internal.conversation\n .get(conversation, {\n computeTitleIfEmpty: true,\n activitiesLimit: 0, // don't send the whole history of activity\n })\n .then((convo) => buildRoomInfo(this.webex, convo))\n );\n },\n\n /**\n * Deletes a single room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject|string} room\n * @returns {Promise}\n * @example\n * var room;\n * webex.rooms.create({title: 'Remove Room Example'})\n * .then(function(r) {\n * room = r;\n * return webex.rooms.remove(room.id);\n * })\n * .then(function() {\n * return webex.rooms.get(room.id);\n * })\n * .then(function() {\n * var assert = require('assert');\n * assert(false, 'the previous get should have failed');\n * })\n * .catch(function(reason) {\n * var assert = require('assert');\n * assert.equal(reason.statusCode, 404);\n * return 'success'\n * });\n * // => success\n */\n remove(room) {\n const id = room.id || room;\n\n return this.request({\n method: 'DELETE',\n service: 'hydra',\n resource: `rooms/${id}`,\n }).then((res) => {\n // Firefox has some issues with 204s and/or DELETE. This should move to\n // http-core\n if (res.statusCode === 204) {\n return undefined;\n }\n\n return res.body;\n });\n },\n\n /**\n * Used to update a single room's properties.\n * @instance\n * @memberof Rooms\n * @param {RoomObject} room\n * @returns {Promise<RoomObject>}\n * @example\n * var room;\n * webex.rooms.update({title: 'Update Room Example'})\n * .then(function(r) {\n * room = r;\n * room.title = 'Update Room Example (Updated Title)';\n * return webex.rooms.update(room);\n * })\n * .then(function() {\n * return webex.rooms.get(room.id);\n * })\n * .then(function(room) {\n * var assert = require('assert');\n * assert.equal(room.title, 'Update Room Example (Updated Title)');\n * return 'success';\n * });\n * // => success\n */\n update(room) {\n const {id} = room;\n\n return this.request({\n method: 'PUT',\n service: 'hydra',\n resource: `rooms/${id}`,\n body: room,\n }).then((res) => res.body);\n },\n\n /**\n * This function is called when an internal membership events fires,\n * if the user registered for these events with the listen() function.\n * External users of the SDK should not call this function\n * @private\n * @memberof Rooms\n * @param {Object} event\n * @returns {void}\n */\n onWebexApiEvent(event) {\n const {activity} = event.data;\n\n /* eslint-disable no-case-declarations */\n switch (activity.verb) {\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.CREATE:\n const roomCreatedEvent = this.getRoomEvent(\n this.webex,\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED\n );\n\n if (roomCreatedEvent) {\n debug(`room \"created\" payload: \\\n ${JSON.stringify(roomCreatedEvent)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, roomCreatedEvent);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.UPDATE:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.LOCK:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.UNLOCK:\n debug(`generating a rooms:updated based on ${activity.verb} activity`);\n const roomUpdatedEvent = this.getRoomEvent(\n this.webex,\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED\n );\n\n if (roomUpdatedEvent) {\n debug(`room \"updated\" payload: \\\n ${JSON.stringify(roomUpdatedEvent)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, roomUpdatedEvent);\n }\n break;\n\n default:\n break;\n }\n },\n\n /**\n * Constructs the data object for an event on the rooms resource,\n * adhering to Hydra's Webhook data structure.\n * External users of the SDK should not call this function\n * @private\n * @memberof Rooms\n * @param {Object} webex sdk instance\n * @param {Object} activity from mercury\n * @param {Object} event type of \"webhook\" event\n * @returns {Object} constructed event\n */\n getRoomEvent(webex, activity, event) {\n try {\n const sdkEvent = cloneDeep(this.eventEnvelope);\n const cluster = getHydraClusterString(webex, activity.url);\n let {tags} = activity.object;\n\n sdkEvent.event = event;\n sdkEvent.data.created = activity.published;\n sdkEvent.actorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n if (activity.object.id) {\n sdkEvent.data.id = buildHydraRoomId(activity.object.id, cluster);\n } else {\n sdkEvent.data.id = buildHydraRoomId(activity.target.id, cluster);\n }\n\n if (event === SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED) {\n sdkEvent.data.creatorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n sdkEvent.data.lastActivity = activity.published;\n } else if (event === SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED) {\n if (activity.verb === 'update') {\n // For some reason the tags are not in the object for an update activity\n tags = activity.target.tags;\n }\n if (activity.object.creatorUUID) {\n // This seems to be set in lock/unlock activities but not updated...\n debug(`Found a creatorId: ${activity.object.creatorUUID} in a ${activity.verb} event`);\n sdkEvent.data.creatorId = buildHydraPersonId(activity.object.creatorUUID, cluster);\n }\n // Webhook engine team sets this based on lastReadableActivityDate\n // in the activity.target object. See: hydra/HydraRoom.java#L51\n // This elements seems to be missing from the activity that the SDK is getting\n // sdkEvent.data.lastActivity = activity.target.lastReadableActivityDate;\n } else {\n throw new Error('unexpected event type');\n }\n sdkEvent.data.type = getHydraRoomType(tags);\n sdkEvent.data.isLocked = tags.includes(SDK_EVENT.INTERNAL.ACTIVITY_TAG.LOCKED);\n\n return sdkEvent;\n } catch (e) {\n this.webex.logger.error(\n `Unable to generate SDK event from mercury socket activity for rooms:${event} event: ${e.message}`\n );\n\n return null;\n }\n },\n});\n\nexport default Rooms;\n\n/**\n * Helper method to build a roomInfo object from a conversation object\n * @param {Object} webex sdk object\n * @param {Conversation~ConversationObject} conversation\n * @returns {Promise<RoomInfoObject>}\n */\nasync function buildRoomInfo(webex, conversation) {\n try {\n const type = getHydraRoomType(conversation.tags);\n const cluster = getHydraClusterString(webex, conversation.url);\n const title = conversation.displayName ? conversation.displayName : conversation.computedTitle;\n const lastActivityDate = conversation.lastReadableActivityDate\n ? conversation.lastReadableActivityDate\n : conversation.lastRelevantActivityDate;\n\n const roomInfo = {\n id: buildHydraRoomId(conversation.id, cluster),\n type,\n ...(title && {title: conversation.displayName}),\n ...(lastActivityDate && {lastActivityDate}),\n lastSeenActivityDate: conversation.lastSeenActivityDate\n ? conversation.lastSeenActivityDate\n : // If user has never been seen set the date to \"a long time ago\"\n new Date(0).toISOString(),\n };\n\n return Promise.resolve(roomInfo);\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\n/**\n * Helper method to build a list of roomInfo object from conversation list\n * @param {Object} webex sdk object\n * @param {Conversation~ConversationObjectList} conversations\n * @returns {Promise<RoomInfoList>}\n */\nasync function buildRoomInfoList(webex, conversations) {\n // Convert each Conversation into a roomInfo object\n const roomReadInfo = {items: []};\n const roomInfoPromises = [];\n\n for (const conversation of conversations) {\n roomInfoPromises.push(buildRoomInfo(webex, conversation));\n }\n\n return Promise.all(roomInfoPromises).then((roomInfoList) => {\n roomReadInfo.items = roomInfoList;\n roomReadInfo.items.sort((a, b) => (a.lastActivityDate < b.lastActivityDate ? 1 : -1));\n\n return roomReadInfo;\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA;AAEA;AAQuB;AAAA;AAAA;AAAA;AAAA;AAEvB,IAAMA,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,KAAK,GAAGC,sBAAW,CAACC,MAAM,CAAC;EAC/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,MAAM,oBAAG;IAAA;IACP,OAAO,IAAAC,2BAAmB,EAAC,IAAI,CAACC,KAAK,EAAEC,iBAAS,CAACC,QAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,CAACC,IAAI,CAAC,UAACC,QAAQ,EAAK;MAC3F,KAAI,CAACC,aAAa,GAAGD,QAAQ;MAE7B,OAAO,KAAI,CAACN,KAAK,CAACQ,QAAQ,CAACC,OAAO,CAACC,OAAO,EAAE,CAACL,IAAI,CAAC,YAAM;QACtD,KAAI,CAACM,QAAQ,CAAC,KAAI,CAACX,KAAK,CAACQ,QAAQ,CAACC,OAAO,EAAER,iBAAS,CAACW,QAAQ,CAACC,cAAc,EAAE,UAACC,KAAK;UAAA,OAClF,KAAI,CAACC,eAAe,CAACD,KAAK,CAAC;QAAA,EAC5B;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,MAAM,kBAACC,IAAI,EAAE;IACX,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBC,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE,OAAO;MAChBC,QAAQ,EAAE,OAAO;MACjBC,IAAI,EAAEL;IACR,CAAC,CAAC,CAACZ,IAAI,CAAC,UAACkB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,GAAG,eAACP,IAAI,EAAEQ,OAAO,EAAE;IACjB,IAAMC,EAAE,GAAGT,IAAI,CAACS,EAAE,IAAIT,IAAI;IAE1B,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBE,OAAO,EAAE,OAAO;MAChBC,QAAQ,kBAAWK,EAAE,CAAE;MACvBC,EAAE,EAAEF;IACN,CAAC,CAAC,CAACpB,IAAI,CAAC,UAACkB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI,CAACM,KAAK,IAAIL,GAAG,CAACD,IAAI;IAAA,EAAC;EAC9C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEO,IAAI,gBAACJ,OAAO,EAAE;IAAA;IACZ,OAAO,IAAI,CAACP,OAAO,CAAC;MAClBE,OAAO,EAAE,OAAO;MAChBC,QAAQ,EAAE,QAAQ;MAClBM,EAAE,EAAEF;IACN,CAAC,CAAC,CAACpB,IAAI,CAAC,UAACkB,GAAG;MAAA,OAAK,IAAIO,eAAI,CAACP,GAAG,EAAE,MAAI,CAACvB,KAAK,CAAC;IAAA,EAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQ+B,kBAAkB,gCAAgB;IAAA;MAAA;IAAA;MAAA;MAAA;QAAA;UAAA;YAAfC,SAAS,0EAAG,CAAC;YAC9BC,GAAG,GAAG,IAAIC,IAAI,EAAE;YAChBT,OAAO,GAAG;cACdU,eAAe,EAAE,CAA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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-rooms",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.16",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,20 +20,20 @@
|
|
|
20
20
|
]
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
24
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
23
|
+
"@webex/test-helper-chai": "3.0.0-beta.16",
|
|
24
|
+
"@webex/test-helper-test-users": "3.0.0-beta.16",
|
|
25
25
|
"sinon": "^9.2.4"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@webex/common": "3.0.0-beta.
|
|
29
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
30
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
31
|
-
"@webex/plugin-logger": "3.0.0-beta.
|
|
32
|
-
"@webex/plugin-memberships": "3.0.0-beta.
|
|
33
|
-
"@webex/plugin-messages": "3.0.0-beta.
|
|
34
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
35
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
36
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
28
|
+
"@webex/common": "3.0.0-beta.16",
|
|
29
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.16",
|
|
30
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.16",
|
|
31
|
+
"@webex/plugin-logger": "3.0.0-beta.16",
|
|
32
|
+
"@webex/plugin-memberships": "3.0.0-beta.16",
|
|
33
|
+
"@webex/plugin-messages": "3.0.0-beta.16",
|
|
34
|
+
"@webex/plugin-people": "3.0.0-beta.16",
|
|
35
|
+
"@webex/plugin-rooms": "3.0.0-beta.16",
|
|
36
|
+
"@webex/webex-core": "3.0.0-beta.16",
|
|
37
37
|
"debug": "^4.3.4",
|
|
38
38
|
"lodash": "^4.17.21"
|
|
39
39
|
}
|