@webex/plugin-memberships 3.0.0-beta.5 → 3.0.0-beta.50
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/README.md +3 -6
- package/dist/index.js +1 -8
- package/dist/index.js.map +1 -1
- package/dist/memberships.js +20 -67
- package/dist/memberships.js.map +1 -1
- package/package.json +12 -12
- package/src/memberships.js +100 -103
- package/test/integration/spec/memberships.js +360 -304
package/README.md
CHANGED
|
@@ -29,15 +29,12 @@ npm install --save @webex/plugin-memberships
|
|
|
29
29
|
## Usage
|
|
30
30
|
|
|
31
31
|
```js
|
|
32
|
-
|
|
33
32
|
const Webex = require('webex');
|
|
34
33
|
|
|
35
34
|
const webex = Webex.init();
|
|
36
|
-
webex.memberships.get(id)
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
})
|
|
40
|
-
|
|
35
|
+
webex.memberships.get(id).then((membership) => {
|
|
36
|
+
console.log(membership);
|
|
37
|
+
});
|
|
41
38
|
```
|
|
42
39
|
|
|
43
40
|
## Maintainers
|
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 _memberships = _interopRequireDefault(require("./memberships"));
|
|
20
|
-
|
|
21
13
|
/*!
|
|
22
14
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
23
15
|
*/
|
|
16
|
+
|
|
24
17
|
(0, _webexCore.registerPlugin)('memberships', _memberships.default);
|
|
25
18
|
var _default = _memberships.default;
|
|
26
19
|
exports.default = _default;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["registerPlugin","Memberships"],"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 Memberships from './memberships';\n\nregisterPlugin('memberships', Memberships);\n\nexport default Memberships;\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["registerPlugin","Memberships"],"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 Memberships from './memberships';\n\nregisterPlugin('memberships', Memberships);\n\nexport default Memberships;\n"],"mappings":";;;;;;;;AAIA;AACA;AAEA;AAEA;AATA;AACA;AACA;;AASA,IAAAA,yBAAc,EAAC,aAAa,EAAEC,oBAAW,CAAC;AAAC,eAE5BA,oBAAW;AAAA"}
|
package/dist/memberships.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 _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
14
|
-
|
|
15
10
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
16
|
-
|
|
17
11
|
var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
18
|
-
|
|
19
12
|
var _common = require("@webex/common");
|
|
20
|
-
|
|
21
13
|
var _webexCore = require("@webex/webex-core");
|
|
22
|
-
|
|
23
14
|
/*!
|
|
24
15
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
25
16
|
*/
|
|
17
|
+
|
|
26
18
|
var debug = require('debug')('memberships');
|
|
19
|
+
|
|
27
20
|
/**
|
|
28
21
|
* @typedef {Object} MembershipObject
|
|
29
22
|
* @property {string} id - Unique identifier for the membership
|
|
@@ -43,8 +36,6 @@ var debug = require('debug')('memberships');
|
|
|
43
36
|
* @class
|
|
44
37
|
* @name Memberships
|
|
45
38
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
39
|
var Memberships = _webexCore.WebexPlugin.extend({
|
|
49
40
|
/**
|
|
50
41
|
* Register to listen for incoming membership events
|
|
@@ -91,11 +82,11 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
91
82
|
*/
|
|
92
83
|
listen: function listen() {
|
|
93
84
|
var _this = this;
|
|
94
|
-
|
|
95
85
|
// Create a common envelope that we will wrap all events in
|
|
96
86
|
return (0, _common.createEventEnvelope)(this.webex, _common.SDK_EVENT.EXTERNAL.RESOURCE.MEMBERSHIPS).then(function (envelope) {
|
|
97
|
-
_this.eventEnvelope = envelope;
|
|
87
|
+
_this.eventEnvelope = envelope;
|
|
98
88
|
|
|
89
|
+
// Register to listen to events
|
|
99
90
|
return _this.webex.internal.mercury.connect().then(function () {
|
|
100
91
|
_this.listenTo(_this.webex.internal.mercury, _common.SDK_EVENT.INTERNAL.WEBEX_ACTIVITY, function (event) {
|
|
101
92
|
return _this.onWebexApiEvent(event);
|
|
@@ -103,7 +94,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
103
94
|
});
|
|
104
95
|
});
|
|
105
96
|
},
|
|
106
|
-
|
|
107
97
|
/**
|
|
108
98
|
* Adds a person to a room. The person can be added by ID (`personId`) or by
|
|
109
99
|
* Email Address (`personEmail`). The person can be optionally added to the room
|
|
@@ -143,7 +133,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
143
133
|
return res.body;
|
|
144
134
|
});
|
|
145
135
|
},
|
|
146
|
-
|
|
147
136
|
/**
|
|
148
137
|
* Returns a single membership.
|
|
149
138
|
* @instance
|
|
@@ -179,7 +168,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
179
168
|
return res.body.items || res.body;
|
|
180
169
|
});
|
|
181
170
|
},
|
|
182
|
-
|
|
183
171
|
/**
|
|
184
172
|
* Returns a list of memberships. In most cases the results will only contain
|
|
185
173
|
* rooms that the authenticated user is a member of. You can filter the results
|
|
@@ -218,7 +206,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
218
206
|
*/
|
|
219
207
|
list: function list(options) {
|
|
220
208
|
var _this2 = this;
|
|
221
|
-
|
|
222
209
|
return this.request({
|
|
223
210
|
service: 'hydra',
|
|
224
211
|
resource: 'memberships',
|
|
@@ -227,7 +214,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
227
214
|
return new _webexCore.Page(res, _this2.webex);
|
|
228
215
|
});
|
|
229
216
|
},
|
|
230
|
-
|
|
231
217
|
/**
|
|
232
218
|
* Returns a list of memberships with details about the lastSeenId for each
|
|
233
219
|
* user, allowing a client to indicate "read status" in a space GUI
|
|
@@ -257,7 +243,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
257
243
|
*/
|
|
258
244
|
listWithReadStatus: function listWithReadStatus(options) {
|
|
259
245
|
var _this3 = this;
|
|
260
|
-
|
|
261
246
|
var deconstructedId = (0, _common.deconstructHydraId)(options.roomId);
|
|
262
247
|
var conversation = {
|
|
263
248
|
id: deconstructedId.id,
|
|
@@ -269,7 +254,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
269
254
|
participantAckFilter: 'all',
|
|
270
255
|
// show lastAck info for each participant
|
|
271
256
|
activitiesLimit: 0 // don't send the whole history of activity
|
|
272
|
-
|
|
273
257
|
}).then(function (resp) {
|
|
274
258
|
try {
|
|
275
259
|
// We keep track of the last read message by each user
|
|
@@ -282,7 +266,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
282
266
|
var roomType = (0, _common.getHydraRoomType)(resp.tags);
|
|
283
267
|
var myId = _this3.webex.internal.me.id;
|
|
284
268
|
var isRoomHidden = resp.tags.includes(_common.SDK_EVENT.INTERNAL.ACTIVITY_TAG.HIDDEN);
|
|
285
|
-
|
|
286
269
|
for (var i = 0; i < participants.length; i += 1) {
|
|
287
270
|
var participant = participants[i];
|
|
288
271
|
var participantInfo = {
|
|
@@ -294,28 +277,24 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
294
277
|
personOrgId: (0, _common.buildHydraOrgId)(participant.orgId, conversation.cluster),
|
|
295
278
|
isMonitor: false,
|
|
296
279
|
// deprecated, but included for completeness
|
|
297
|
-
roomType: roomType
|
|
298
|
-
|
|
280
|
+
roomType: roomType
|
|
281
|
+
// created is not available in the conversations payload
|
|
299
282
|
};
|
|
300
283
|
|
|
301
284
|
if (isRoomHidden && participantInfo.personId === myId) {
|
|
302
285
|
participantInfo.isRoomHidden = isRoomHidden;
|
|
303
286
|
}
|
|
304
|
-
|
|
305
287
|
if ('roomProperties' in participant) {
|
|
306
288
|
if ('lastSeenActivityDate' in participant.roomProperties) {
|
|
307
289
|
participantInfo.lastSeenId = (0, _common.buildHydraMessageId)(participant.roomProperties.lastSeenActivityUUID, conversation.cluster);
|
|
308
290
|
participantInfo.lastSeenDate = participant.roomProperties.lastSeenActivityDate;
|
|
309
291
|
}
|
|
310
|
-
|
|
311
292
|
if ('isModerator' in participant.roomProperties) {
|
|
312
293
|
participantInfo.isModerator = participant.roomProperties.isModerator;
|
|
313
294
|
}
|
|
314
295
|
}
|
|
315
|
-
|
|
316
296
|
lastReadInfo.items.push(participantInfo);
|
|
317
297
|
}
|
|
318
|
-
|
|
319
298
|
return _promise.default.resolve(lastReadInfo);
|
|
320
299
|
} catch (e) {
|
|
321
300
|
return _promise.default.reject(e);
|
|
@@ -324,7 +303,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
324
303
|
});
|
|
325
304
|
});
|
|
326
305
|
},
|
|
327
|
-
|
|
328
306
|
/**
|
|
329
307
|
* Deletes a single membership.
|
|
330
308
|
* @instance
|
|
@@ -372,11 +350,9 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
372
350
|
if (res.statusCode === 204) {
|
|
373
351
|
return undefined;
|
|
374
352
|
}
|
|
375
|
-
|
|
376
353
|
return res.body;
|
|
377
354
|
});
|
|
378
355
|
},
|
|
379
|
-
|
|
380
356
|
/**
|
|
381
357
|
* Used to update a single membership's properties
|
|
382
358
|
* @instance
|
|
@@ -450,7 +426,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
450
426
|
return res.body;
|
|
451
427
|
});
|
|
452
428
|
},
|
|
453
|
-
|
|
454
429
|
/**
|
|
455
430
|
* Updates the lastSeenId attribute of a membership.
|
|
456
431
|
* Call this method to send a "read receipt" for a given message.
|
|
@@ -463,7 +438,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
463
438
|
*/
|
|
464
439
|
updateLastSeen: function updateLastSeen(message) {
|
|
465
440
|
var _this4 = this;
|
|
466
|
-
|
|
467
441
|
var activity = {
|
|
468
442
|
id: (0, _common.deconstructHydraId)(message.id).id
|
|
469
443
|
};
|
|
@@ -492,7 +466,6 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
492
466
|
});
|
|
493
467
|
});
|
|
494
468
|
},
|
|
495
|
-
|
|
496
469
|
/**
|
|
497
470
|
* This function is called when an internal membership events fires,
|
|
498
471
|
* if the user registered for these events with the public listen() method.
|
|
@@ -504,10 +477,9 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
504
477
|
*/
|
|
505
478
|
onWebexApiEvent: function onWebexApiEvent(event) {
|
|
506
479
|
var _this5 = this;
|
|
507
|
-
|
|
508
480
|
var activity = event.data.activity;
|
|
509
|
-
/* eslint-disable no-case-declarations */
|
|
510
481
|
|
|
482
|
+
/* eslint-disable no-case-declarations */
|
|
511
483
|
switch (activity.verb) {
|
|
512
484
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.CREATE:
|
|
513
485
|
var membershipCreatedEventDataArray = activity.object.participants.items.map(function (participant) {
|
|
@@ -519,59 +491,44 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
519
491
|
membershipCreatedEventDataArray.forEach(function (data) {
|
|
520
492
|
if (data) {
|
|
521
493
|
debug("membership \"created\" payload: ".concat((0, _stringify.default)(data)));
|
|
522
|
-
|
|
523
494
|
_this5.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, data);
|
|
524
495
|
}
|
|
525
496
|
});
|
|
526
497
|
break;
|
|
527
|
-
|
|
528
498
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.ADD:
|
|
529
499
|
var membershipCreatedEventData = this.getMembershipEvent(activity, _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED);
|
|
530
|
-
|
|
531
500
|
if (membershipCreatedEventData) {
|
|
532
501
|
debug("membership \"created\" payload: ".concat((0, _stringify.default)(membershipCreatedEventData)));
|
|
533
502
|
this.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, membershipCreatedEventData);
|
|
534
503
|
}
|
|
535
|
-
|
|
536
504
|
break;
|
|
537
|
-
|
|
538
505
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.LEAVE:
|
|
539
506
|
var membershipDeletedEventData = this.getMembershipEvent(activity, _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.DELETED);
|
|
540
|
-
|
|
541
507
|
if (membershipDeletedEventData) {
|
|
542
508
|
debug("membership \"deleted\" payload: ".concat((0, _stringify.default)(membershipDeletedEventData)));
|
|
543
509
|
this.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.DELETED, membershipDeletedEventData);
|
|
544
510
|
}
|
|
545
|
-
|
|
546
511
|
break;
|
|
547
|
-
|
|
548
512
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.ADD_MODERATOR:
|
|
549
513
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.REMOVE_MODERATOR:
|
|
550
514
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE:
|
|
551
515
|
var membershipUpdatedEventData = this.getMembershipEvent(activity, _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED);
|
|
552
|
-
|
|
553
516
|
if (membershipUpdatedEventData) {
|
|
554
517
|
debug("membership \"updated\" payload: ".concat((0, _stringify.default)(membershipUpdatedEventData)));
|
|
555
518
|
this.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, membershipUpdatedEventData);
|
|
556
519
|
}
|
|
557
|
-
|
|
558
520
|
break;
|
|
559
|
-
|
|
560
521
|
case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE:
|
|
561
522
|
var membershipSeenEventData = this.getMembershipEvent(activity, _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.SEEN);
|
|
562
|
-
|
|
563
523
|
if (membershipSeenEventData) {
|
|
564
524
|
debug("membership \"updated\" payload: ".concat((0, _stringify.default)(membershipSeenEventData)));
|
|
565
525
|
this.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.SEEN, membershipSeenEventData);
|
|
566
526
|
}
|
|
567
|
-
|
|
568
527
|
break;
|
|
569
|
-
|
|
570
528
|
default:
|
|
571
529
|
break;
|
|
572
530
|
}
|
|
573
531
|
},
|
|
574
|
-
|
|
575
532
|
/**
|
|
576
533
|
* Constructs the data object for an event on the memberships resource,
|
|
577
534
|
* adhering to Hydra's Webhook data structure memberships.
|
|
@@ -591,48 +548,45 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
591
548
|
sdkEvent.event = event;
|
|
592
549
|
sdkEvent.data.created = activity.published;
|
|
593
550
|
sdkEvent.actorId = (0, _common.buildHydraPersonId)(activity.actor.entryUUID, cluster);
|
|
594
|
-
|
|
595
551
|
if (activity.verb !== _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE) {
|
|
596
552
|
sdkEvent.data.roomId = (0, _common.buildHydraRoomId)(activity.target.id, cluster);
|
|
597
553
|
sdkEvent.data.roomType = (0, _common.getHydraRoomType)(activity.target.tags);
|
|
598
554
|
sdkEvent.data.isRoomHidden = false; // any activity unhides a space.
|
|
599
555
|
} else {
|
|
600
556
|
sdkEvent.data.roomId = (0, _common.buildHydraRoomId)(activity.object.id, cluster);
|
|
601
|
-
sdkEvent.data.roomType = _common.SDK_EVENT.EXTERNAL.SPACE_TYPE.DIRECT;
|
|
602
|
-
|
|
557
|
+
sdkEvent.data.roomType = _common.SDK_EVENT.EXTERNAL.SPACE_TYPE.DIRECT;
|
|
558
|
+
// currently hidden attribute is only set on 1-1
|
|
603
559
|
sdkEvent.data.isRoomHidden = true;
|
|
604
560
|
}
|
|
605
|
-
|
|
606
561
|
if (activity.verb !== _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE) {
|
|
607
562
|
if (activity.object.roomProperties && activity.object.roomProperties.isModerator) {
|
|
608
563
|
sdkEvent.data.isModerator = true;
|
|
609
564
|
} else {
|
|
610
565
|
sdkEvent.data.isModerator = false;
|
|
611
566
|
}
|
|
612
|
-
}
|
|
567
|
+
}
|
|
568
|
+
// This is deprecated but still sent in the webhooks
|
|
613
569
|
// We won't send it for our new SDK events
|
|
614
570
|
// sdkEvent.data.isMonitor = false;
|
|
615
571
|
|
|
616
|
-
|
|
617
572
|
if (activity.verb === _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE) {
|
|
618
573
|
// For a read receipt the person is the "actor" or the one who did the reading
|
|
619
|
-
member = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.ACTOR;
|
|
620
|
-
|
|
621
|
-
space = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.TARGET;
|
|
622
|
-
|
|
574
|
+
member = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.ACTOR;
|
|
575
|
+
// The space with the read message is the "target"
|
|
576
|
+
space = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.TARGET;
|
|
577
|
+
// And the "object" is the message that was last seen
|
|
623
578
|
sdkEvent.data.lastSeenId = (0, _common.buildHydraMessageId)(activity.object.id, cluster);
|
|
624
579
|
} else if (activity.verb === _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE) {
|
|
625
580
|
// For a hide activity the person is also the "actor"
|
|
626
|
-
member = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.ACTOR;
|
|
627
|
-
|
|
581
|
+
member = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.ACTOR;
|
|
582
|
+
// But the space is now the "object"
|
|
628
583
|
space = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.OBJECT;
|
|
629
584
|
} else {
|
|
630
585
|
// For most memberships events the person is the 'object"
|
|
631
|
-
member = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.OBJECT;
|
|
632
|
-
|
|
586
|
+
member = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.OBJECT;
|
|
587
|
+
// and the space is the "target"
|
|
633
588
|
space = _common.SDK_EVENT.INTERNAL.ACTIVITY_FIELD.TARGET;
|
|
634
589
|
}
|
|
635
|
-
|
|
636
590
|
sdkEvent.data.id = (0, _common.buildHydraMembershipId)(activity[member].entryUUID, activity[space].id, cluster);
|
|
637
591
|
sdkEvent.data.personId = (0, _common.buildHydraPersonId)(activity[member].entryUUID, cluster);
|
|
638
592
|
sdkEvent.data.personEmail = activity[member].emailAddress || activity[member].entryEmail;
|
|
@@ -644,9 +598,8 @@ var Memberships = _webexCore.WebexPlugin.extend({
|
|
|
644
598
|
return null;
|
|
645
599
|
}
|
|
646
600
|
},
|
|
647
|
-
version: "3.0.0-beta.
|
|
601
|
+
version: "3.0.0-beta.50"
|
|
648
602
|
});
|
|
649
|
-
|
|
650
603
|
var _default = Memberships;
|
|
651
604
|
exports.default = _default;
|
|
652
605
|
//# sourceMappingURL=memberships.js.map
|
package/dist/memberships.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["debug","require","Memberships","WebexPlugin","extend","listen","createEventEnvelope","webex","SDK_EVENT","EXTERNAL","RESOURCE","MEMBERSHIPS","then","envelope","eventEnvelope","internal","mercury","connect","listenTo","INTERNAL","WEBEX_ACTIVITY","event","onWebexApiEvent","create","membership","request","method","service","resource","body","res","get","id","items","list","options","qs","Page","listWithReadStatus","deconstructedId","deconstructHydraId","roomId","conversation","cluster","ensureMyIdIsAvailable","services","waitForCatalog","participantAckFilter","activitiesLimit","resp","roomUUID","buildHydraRoomId","participants","lastReadInfo","roomType","getHydraRoomType","tags","myId","me","isRoomHidden","includes","ACTIVITY_TAG","HIDDEN","i","length","participant","participantInfo","buildHydraMembershipId","entryUUID","personId","buildHydraPersonId","personEmail","entryEmailAddress","entryEmail","personDisplayName","displayName","personOrgId","buildHydraOrgId","orgId","isMonitor","roomProperties","lastSeenId","buildHydraMessageId","lastSeenActivityUUID","lastSeenDate","lastSeenActivityDate","isModerator","push","resolve","e","reject","remove","statusCode","undefined","update","updateLastSeen","message","activity","acknowledge","ack","object","actor","target","emailAddress","created","published","data","verb","ACTIVITY_VERB","CREATE","membershipCreatedEventDataArray","map","output","getMembershipEvent","EVENT_TYPE","CREATED","forEach","trigger","ADD","membershipCreatedEventData","LEAVE","membershipDeletedEventData","DELETED","ADD_MODERATOR","REMOVE_MODERATOR","HIDE","membershipUpdatedEventData","UPDATED","ACKNOWLEDGE","membershipSeenEventData","SEEN","sdkEvent","getHydraClusterString","url","member","space","actorId","SPACE_TYPE","DIRECT","ACTIVITY_FIELD","ACTOR","TARGET","OBJECT","logger","error"],"sources":["memberships.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {\n SDK_EVENT,\n createEventEnvelope,\n ensureMyIdIsAvailable,\n buildHydraMembershipId,\n buildHydraMessageId,\n buildHydraOrgId,\n buildHydraPersonId,\n buildHydraRoomId,\n getHydraClusterString,\n getHydraRoomType,\n deconstructHydraId\n} from '@webex/common';\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport {cloneDeep} from 'lodash';\n\nconst debug = require('debug')('memberships');\n\n/**\n * @typedef {Object} MembershipObject\n * @property {string} id - Unique identifier for the membership\n * @property {string} roomId - The room ID\n * @property {string} personId - The person ID\n * @property {email} personEmail - The email address of the person / room member\n * @property {boolean} isModerator - Indicates whether the specified person should be a room moderator\n * @property {boolean} isMonitor - Indicates whether the specified member is a room monitor\n * @property {isoDate} created - The date and time that this membership was created\n */\n\n/**\n * Memberships represent a person's relationship to a room. Use this API to list\n * members of any room that you're in or create memberships to invite someone\n * to a room. Memberships can also be updated to make someone a moderator\n * or deleted to remove them from the room.\n * @class\n * @name Memberships\n */\nconst Memberships = WebexPlugin.extend({\n /**\n * Register to listen for incoming membership events\n * This is an alternate approach to registering for membership 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 Memberships\n * @returns {Promise}\n * @example\n * webex.memberships.listen()\n * .then(() => {\n * console.log('listening to membership events');\n * webex.memberships.on('created', (event) => {\n * console.log(`Got a membership:created event:\\n${event}`);\n * }\n * webex.memberships.on('updated', (event) => {\n * console.log(`Got a membership:updated event:\\n${event}`);\n * }\n * webex.memberships.on('seen', (event) => {\n * // This represents a \"read receipt\" and will include a\n * // lastSeenId for the message this member has just \"read\",\n * // There is currently no equivalent webhook for this event.\n * console.log(`Got a membership:seen event:\\n${event}`);\n * }\n * webex.memberships.on('deleted', (event) => => {\n * console.log(`Got a membership:created event:\\n${event}`);\n * }\n * })\n * .catch((e) => console.error(`Unable to register for membership events: ${e}`));\n * // App logic goes here...\n * // Later when it is time to clean up\n * webex.memberships.stopListening();\n * webex.memberships.off('created');\n * webex.memberships.off('updated');\n * webex.memberships.off('seen');\n * webex.memberships.off('deleted');\n\n */\n listen() {\n // Create a common envelope that we will wrap all events in\n return createEventEnvelope(this.webex,\n SDK_EVENT.EXTERNAL.RESOURCE.MEMBERSHIPS)\n .then((envelope) => {\n this.eventEnvelope = envelope;\n\n // Register to listen to events\n return this.webex.internal.mercury.connect().then(() => {\n this.listenTo(this.webex.internal.mercury,\n SDK_EVENT.INTERNAL.WEBEX_ACTIVITY,\n (event) => this.onWebexApiEvent(event));\n });\n });\n },\n\n /**\n * Adds a person to a room. The person can be added by ID (`personId`) or by\n * Email Address (`personEmail`). The person can be optionally added to the room\n * as a moderator.\n * @instance\n * @memberof Memberships\n * @param {MembershipObject} membership\n * @returns {Promise<MembershipObject>}\n * @example\n * webex.rooms.create({title: 'Create Membership Example'})\n * .then(function(room) {\n * return webex.memberships.create({\n * personEmail: 'alice@example.com',\n * roomId: room.id\n * });\n * })\n * .then(function(membership) {\n * var assert = require('assert');\n * assert(membership.id);\n * assert(membership.roomId);\n * assert(membership.personId);\n * assert(membership.personEmail);\n * assert('isModerator' in membership);\n * assert('isMonitor' in membership);\n * assert(membership.created);\n * return 'success';\n * });\n * // => success\n */\n create(membership) {\n return this.request({\n method: 'POST',\n service: 'hydra',\n resource: 'memberships',\n body: membership\n })\n .then((res) => res.body);\n },\n\n /**\n * Returns a single membership.\n * @instance\n * @memberof Memberships\n * @param {MembershipObject|uuid} membership\n * @returns {Promise<MembershipObject>}\n * @example\n * var membership;\n * webex.rooms.create({title: 'Get Membership Example'})\n * .then(function(room) {\n * return webex.memberships.create({\n * personEmail: 'alice@example.com',\n * roomId: room.id\n * });\n * })\n * .then(function(m) {\n * membership = m;\n * return webex.memberships.get(m.id);\n * })\n * .then(function(m) {\n * var assert = require('assert');\n * assert.deepEqual(m, membership);\n * return 'success';\n * });\n * // => success\n */\n get(membership) {\n const id = membership.id || membership;\n\n return this.request({\n service: 'hydra',\n resource: `memberships/${id}`\n })\n .then((res) => res.body.items || res.body);\n },\n\n /**\n * Returns a list of memberships. In most cases the results will only contain\n * rooms that the authenticated user is a member of. You can filter the results\n * by room to list people in a room or by person to find rooms that a\n * specific person is a member of.\n * @instance\n * @memberof Memberships\n * @param {Object} options\n * @param {string} options.personId\n * @param {string} options.personEmail\n * @param {string} options.roomId\n * @param {number} options.max\n * @returns {Promise<Page<MembershipObject>>}\n * @example\n * var room;\n * webex.rooms.create({title: 'List Membership Example'})\n * .then(function(r) {\n * room = r;\n * return webex.memberships.create({\n * personEmail: 'alice@example.com',\n * roomId: room.id\n * });\n * })\n * .then(function() {\n * return webex.memberships.list({roomId: room.id});\n * })\n * .then(function(memberships) {\n * var assert = require('assert');\n * assert.equal(memberships.length, 2);\n * for (var i = 0; i < memberships.length; i+= 1) {\n * assert.equal(memberships.items[i].roomId, room.id);\n * }\n * return 'success';\n * });\n * // => success\n */\n list(options) {\n return this.request({\n service: 'hydra',\n resource: 'memberships',\n qs: options\n })\n .then((res) => new Page(res, this.webex));\n },\n\n /**\n * Returns a list of memberships with details about the lastSeenId for each\n * user, allowing a client to indicate \"read status\" in a space GUI\n *\n * This differs from the memberships.list() function in the following ways:\n * -- it accepts only a room or object with a valid roomId\n * -- no other options, eg: max, are considered\n * -- results are not paginated\n * -- memberships in the return do not include the\n * \"created\", \"isRoomHidden\", fields\n * -- memberships in the return do include the new\n * \"lastSeenId\", and \"lastSeenDate\" fields\n * these will not exist if the member has never \"seen\" the space\n *\n * In general this function should be used only when the\n * client needs to access read status info.\n *\n * This function may be deprecated when this info is provided in the membership\n * objects returned in the list function.\n *\n *\n * @instance\n * @memberof Memberships\n * @param {Object} options\n * @param {string} options.roomId\n * @returns {Promise<MembershipObjectList>}\n */\n listWithReadStatus(options) {\n const deconstructedId = deconstructHydraId(options.roomId);\n const conversation = {\n id: deconstructedId.id,\n cluster: deconstructedId.cluster\n };\n\n return ensureMyIdIsAvailable(this.webex)\n .then(() => this.webex.internal.services.waitForCatalog('postauth')\n .then(() => this.webex.internal.conversation.get(conversation,\n {\n participantAckFilter: 'all', // show lastAck info for each participant\n activitiesLimit: 0 // don't send the whole history of activity\n })\n .then((resp) => {\n try {\n // We keep track of the last read message by each user\n const roomUUID = resp.id;\n const roomId = buildHydraRoomId(roomUUID, conversation.cluster);\n const participants = resp.participants.items;\n const lastReadInfo = {items: []};\n const roomType = getHydraRoomType(resp.tags);\n const myId = this.webex.internal.me.id;\n const isRoomHidden = resp.tags.includes(SDK_EVENT.INTERNAL.ACTIVITY_TAG.HIDDEN);\n\n for (let i = 0; i < participants.length; i += 1) {\n const participant = participants[i];\n const participantInfo = {\n id: buildHydraMembershipId(participant.entryUUID, roomUUID,\n conversation.cluster),\n roomId,\n personId: buildHydraPersonId(participant.entryUUID),\n personEmail: participant.entryEmailAddress ||\n participant.entryEmail,\n personDisplayName: participant.displayName,\n personOrgId: buildHydraOrgId(participant.orgId,\n conversation.cluster),\n isMonitor: false, // deprecated, but included for completeness\n roomType\n // created is not available in the conversations payload\n };\n\n if ((isRoomHidden) && (participantInfo.personId === myId)) {\n participantInfo.isRoomHidden = isRoomHidden;\n }\n\n if ('roomProperties' in participant) {\n if ('lastSeenActivityDate' in participant.roomProperties) {\n participantInfo.lastSeenId =\n buildHydraMessageId(participant.roomProperties.lastSeenActivityUUID,\n conversation.cluster);\n participantInfo.lastSeenDate =\n participant.roomProperties.lastSeenActivityDate;\n }\n if ('isModerator' in participant.roomProperties) {\n participantInfo.isModerator = participant.roomProperties.isModerator;\n }\n }\n\n lastReadInfo.items.push(participantInfo);\n }\n\n return Promise.resolve(lastReadInfo);\n }\n catch (e) {\n return Promise.reject(e);\n }\n })));\n },\n\n /**\n * Deletes a single membership.\n * @instance\n * @memberof Memberships\n * @param {MembershipObject|uuid} membership\n * @returns {Promise}\n * @example\n * var membership, room;\n * webex.rooms.create({title: 'Remove Membership Example'})\n * .then(function(r) {\n * room = r;\n * return webex.memberships.create({\n * personEmail: 'alice@example.com',\n * roomId: room.id\n * });\n * })\n * .then(function(m) {\n * membership = m;\n * return webex.memberships.list({roomId: room.id});\n * })\n * .then(function(memberships) {\n * var assert = require('assert');\n * assert.equal(memberships.length, 2);\n * return webex.memberships.remove(membership);\n * })\n * .then(function() {\n * return webex.memberships.list({roomId: room.id});\n * })\n * .then(function(memberships) {\n * var assert = require('assert');\n * assert.equal(memberships.length, 1);\n * return 'success';\n * });\n * // => success\n */\n remove(membership) {\n const id = membership.id || membership;\n\n return this.request({\n method: 'DELETE',\n service: 'hydra',\n resource: `memberships/${id}`\n })\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 membership's properties\n * @instance\n * @memberof Memberships\n * @param {MembershipObject|uuid} membership\n * @returns {Promise<MembershipObject>}\n * @example\n * // Change membership to make user a moderator\n * var membership, room;\n * webex.rooms.create({title: 'Memberships Example'})\n * .then(function(r) {\n * room = r;\n * return webex.memberships.list({roomId: room.id});\n * })\n * .then(function(memberships) {\n * membership = memberships.items[0];\n * var assert = require('assert');\n * assert.equal(membership.isModerator, false);\n * membership.isModerator = true;\n * return webex.memberships.update(membership);\n * })\n * .then(function() {\n * return webex.memberships.get(membership.id);\n * })\n * .then(function(membership) {\n * var assert = require('assert');\n * assert.equal(membership.isModerator, true);\n * return 'success';\n * });\n * // => success\n * @example\n * // Hide a one on one space\n * var assert = require('assert');\n * var membership, myId;\n * webex.people.get('me')\n * .then(function(person) {\n * myId = personId;\n * return webex.messages.create({\n * toPersonEmail: 'otherUser@acme.com',\n * text: 'This message will create a 1-1 space'\n * });\n * })\n * then(function(message) {\n * return webex.memberships.list({\n * roomId: message.roomId,\n * personId: myId\n * });\n * })\n * .then((memberships) => {\n * membership = memberships.items[0];\n * assert.equal(membership.isRoomHidden, false);\n * membership.isRoomHidden = true;\n * // This will generate a memberships:updated event\n * // that will only be seen by this user\n * return webex.memberships.update(membership);\n * })\n * .then(function(membership) {\n * assert.equal(membership.isRoomHidden, true);\n * return 'success';\n * });\n * // => success\n */\n update(membership) {\n const id = membership.id || membership;\n\n return this.request({\n method: 'PUT',\n service: 'hydra',\n resource: `memberships/${id}`,\n body: membership\n })\n .then((res) => res.body);\n },\n\n /**\n * Updates the lastSeenId attribute of a membership.\n * Call this method to send a \"read receipt\" for a given message.\n * This will update the lastSeenId for the user's membership in\n * space where the message is.\n * @instance\n * @memberof Memberships\n * @param {string} message\n * @returns {Promise<MembershipObject>}\n */\n updateLastSeen(message) {\n const activity = {\n id: deconstructHydraId(message.id).id\n };\n const deconstructedId = deconstructHydraId(message.roomId);\n const conversation = {\n id: deconstructedId.id,\n cluster: deconstructedId.cluster\n };\n\n return this.webex.internal.services.waitForCatalog('postauth')\n .then(() => this.webex.internal.conversation.acknowledge(conversation, activity)\n .then((ack) => ({\n lastSeenId: buildHydraMessageId(ack.object.id, conversation.cluster),\n id: buildHydraMembershipId(ack.actor.entryUUID,\n ack.target.id, conversation.cluster),\n personId: buildHydraPersonId(ack.actor.entryUUID, conversation.cluster),\n personEmail: ack.actor.emailAddress || ack.actor.entryEmail,\n personDisplayName: ack.actor.displayName,\n personOrgId: buildHydraOrgId(ack.actor.orgId, conversation.cluster),\n roomId: buildHydraRoomId(ack.target.id, conversation.cluster),\n roomType: getHydraRoomType(ack.target.tags),\n isRoomHidden: false, // any activity unhides a space.\n isMonitor: false, // deprecated, returned for back compat\n created: ack.published\n })));\n },\n\n /**\n * This function is called when an internal membership events fires,\n * if the user registered for these events with the public listen() method.\n * External users of the SDK should not call this function\n * @private\n * @memberof Memberships\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 membershipCreatedEventDataArray =\n activity.object.participants.items.map((participant) => {\n const output = cloneDeep(activity);\n\n output.target = cloneDeep(activity.object);\n output.object = cloneDeep(participant);\n\n return this.getMembershipEvent(output,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED);\n });\n\n membershipCreatedEventDataArray.forEach((data) => {\n if (data) {\n debug(`membership \"created\" payload: ${JSON.stringify(data)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, data);\n }\n });\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.ADD:\n const membershipCreatedEventData =\n this.getMembershipEvent(activity, SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED);\n\n if (membershipCreatedEventData) {\n debug(`membership \"created\" payload: \\\n ${JSON.stringify(membershipCreatedEventData)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, membershipCreatedEventData);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.LEAVE:\n const membershipDeletedEventData =\n this.getMembershipEvent(activity, SDK_EVENT.EXTERNAL.EVENT_TYPE.DELETED);\n\n if (membershipDeletedEventData) {\n debug(`membership \"deleted\" payload: \\\n ${JSON.stringify(membershipDeletedEventData)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.DELETED, membershipDeletedEventData);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.ADD_MODERATOR:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.REMOVE_MODERATOR:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE:\n const membershipUpdatedEventData =\n this.getMembershipEvent(activity, SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED);\n\n if (membershipUpdatedEventData) {\n debug(`membership \"updated\" payload: \\\n ${JSON.stringify(membershipUpdatedEventData)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, membershipUpdatedEventData);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE:\n const membershipSeenEventData =\n this.getMembershipEvent(activity, SDK_EVENT.EXTERNAL.EVENT_TYPE.SEEN);\n\n if (membershipSeenEventData) {\n debug(`membership \"updated\" payload: \\\n ${JSON.stringify(membershipSeenEventData)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.SEEN, membershipSeenEventData);\n }\n break;\n\n default:\n break;\n }\n },\n\n /**\n * Constructs the data object for an event on the memberships resource,\n * adhering to Hydra's Webhook data structure memberships.\n * External users of the SDK should not call this function\n * @private\n * @memberof Memberships\n * @param {Object} activity from mercury\n * @param {Object} event type of \"webhook\" event\n * @returns {Object} constructed event\n */\n getMembershipEvent(activity, event) {\n try {\n const sdkEvent = cloneDeep(this.eventEnvelope);\n const cluster = (activity.verb !== SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE) ?\n getHydraClusterString(this.webex, activity.target.url) :\n getHydraClusterString(this.webex, activity.url);\n let member;\n let space;\n\n sdkEvent.event = event;\n sdkEvent.data.created = activity.published;\n sdkEvent.actorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n if (activity.verb !== SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE) {\n sdkEvent.data.roomId = buildHydraRoomId(activity.target.id, cluster);\n sdkEvent.data.roomType = getHydraRoomType(activity.target.tags);\n sdkEvent.data.isRoomHidden = false; // any activity unhides a space.\n }\n else {\n sdkEvent.data.roomId = buildHydraRoomId(activity.object.id, cluster);\n sdkEvent.data.roomType = SDK_EVENT.EXTERNAL.SPACE_TYPE.DIRECT;\n // currently hidden attribute is only set on 1-1\n sdkEvent.data.isRoomHidden = true;\n }\n if (activity.verb !== SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE) {\n if ((activity.object.roomProperties) && (activity.object.roomProperties.isModerator)) {\n sdkEvent.data.isModerator = true;\n }\n else {\n sdkEvent.data.isModerator = false;\n }\n }\n // This is deprecated but still sent in the webhooks\n // We won't send it for our new SDK events\n // sdkEvent.data.isMonitor = false;\n\n if (activity.verb === SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE) {\n // For a read receipt the person is the \"actor\" or the one who did the reading\n member = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.ACTOR;\n // The space with the read message is the \"target\"\n space = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.TARGET;\n // And the \"object\" is the message that was last seen\n sdkEvent.data.lastSeenId = buildHydraMessageId(activity.object.id, cluster);\n }\n else if (activity.verb === SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE) {\n // For a hide activity the person is also the \"actor\"\n member = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.ACTOR;\n // But the space is now the \"object\"\n space = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.OBJECT;\n }\n else {\n // For most memberships events the person is the 'object\"\n member = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.OBJECT;\n // and the space is the \"target\"\n space = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.TARGET;\n }\n\n sdkEvent.data.id = buildHydraMembershipId(activity[member].entryUUID,\n activity[space].id, cluster);\n sdkEvent.data.personId = buildHydraPersonId(activity[member].entryUUID, cluster);\n sdkEvent.data.personEmail =\n activity[member].emailAddress || activity[member].entryEmail;\n sdkEvent.data.personDisplayName = activity[member].displayName;\n sdkEvent.data.personOrgId = buildHydraOrgId(activity[member].orgId, cluster);\n\n return sdkEvent;\n }\n catch (e) {\n this.webex.logger.error(`Unable to generate SDK event from mercury \\\n'socket activity for memberships:${event} event: ${e.message}`);\n\n return null;\n }\n }\n\n});\n\nexport default Memberships;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAIA;;AAaA;;AAjBA;AACA;AACA;AAkBA,IAAMA,KAAK,GAAGC,OAAO,CAAC,OAAD,CAAP,CAAiB,aAAjB,CAAd;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,WAAW,GAAGC,sBAAA,CAAYC,MAAZ,CAAmB;EACrC;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;EAEEC,MA7CqC,oBA6C5B;IAAA;;IACP;IACA,OAAO,IAAAC,2BAAA,EAAoB,KAAKC,KAAzB,EACLC,iBAAA,CAAUC,QAAV,CAAmBC,QAAnB,CAA4BC,WADvB,EAEJC,IAFI,CAEC,UAACC,QAAD,EAAc;MAClB,KAAI,CAACC,aAAL,GAAqBD,QAArB,CADkB,CAGlB;;MACA,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,EACER,iBAAA,CAAUW,QAAV,CAAmBC,cADrB,EAEE,UAACC,KAAD;UAAA,OAAW,KAAI,CAACC,eAAL,CAAqBD,KAArB,CAAX;QAAA,CAFF;MAGD,CAJM,CAAP;IAKD,CAXI,CAAP;EAYD,CA3DoC;;EA6DrC;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;EACEE,MA1FqC,kBA0F9BC,UA1F8B,EA0FlB;IACjB,OAAO,KAAKC,OAAL,CAAa;MAClBC,MAAM,EAAE,MADU;MAEl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"}
|
|
1
|
+
{"version":3,"names":["debug","require","Memberships","WebexPlugin","extend","listen","createEventEnvelope","webex","SDK_EVENT","EXTERNAL","RESOURCE","MEMBERSHIPS","then","envelope","eventEnvelope","internal","mercury","connect","listenTo","INTERNAL","WEBEX_ACTIVITY","event","onWebexApiEvent","create","membership","request","method","service","resource","body","res","get","id","items","list","options","qs","Page","listWithReadStatus","deconstructedId","deconstructHydraId","roomId","conversation","cluster","ensureMyIdIsAvailable","services","waitForCatalog","participantAckFilter","activitiesLimit","resp","roomUUID","buildHydraRoomId","participants","lastReadInfo","roomType","getHydraRoomType","tags","myId","me","isRoomHidden","includes","ACTIVITY_TAG","HIDDEN","i","length","participant","participantInfo","buildHydraMembershipId","entryUUID","personId","buildHydraPersonId","personEmail","entryEmailAddress","entryEmail","personDisplayName","displayName","personOrgId","buildHydraOrgId","orgId","isMonitor","roomProperties","lastSeenId","buildHydraMessageId","lastSeenActivityUUID","lastSeenDate","lastSeenActivityDate","isModerator","push","resolve","e","reject","remove","statusCode","undefined","update","updateLastSeen","message","activity","acknowledge","ack","object","actor","target","emailAddress","created","published","data","verb","ACTIVITY_VERB","CREATE","membershipCreatedEventDataArray","map","output","getMembershipEvent","EVENT_TYPE","CREATED","forEach","trigger","ADD","membershipCreatedEventData","LEAVE","membershipDeletedEventData","DELETED","ADD_MODERATOR","REMOVE_MODERATOR","HIDE","membershipUpdatedEventData","UPDATED","ACKNOWLEDGE","membershipSeenEventData","SEEN","sdkEvent","getHydraClusterString","url","member","space","actorId","SPACE_TYPE","DIRECT","ACTIVITY_FIELD","ACTOR","TARGET","OBJECT","logger","error"],"sources":["memberships.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {\n SDK_EVENT,\n createEventEnvelope,\n ensureMyIdIsAvailable,\n buildHydraMembershipId,\n buildHydraMessageId,\n buildHydraOrgId,\n buildHydraPersonId,\n buildHydraRoomId,\n getHydraClusterString,\n getHydraRoomType,\n deconstructHydraId,\n} from '@webex/common';\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport {cloneDeep} from 'lodash';\n\nconst debug = require('debug')('memberships');\n\n/**\n * @typedef {Object} MembershipObject\n * @property {string} id - Unique identifier for the membership\n * @property {string} roomId - The room ID\n * @property {string} personId - The person ID\n * @property {email} personEmail - The email address of the person / room member\n * @property {boolean} isModerator - Indicates whether the specified person should be a room moderator\n * @property {boolean} isMonitor - Indicates whether the specified member is a room monitor\n * @property {isoDate} created - The date and time that this membership was created\n */\n\n/**\n * Memberships represent a person's relationship to a room. Use this API to list\n * members of any room that you're in or create memberships to invite someone\n * to a room. Memberships can also be updated to make someone a moderator\n * or deleted to remove them from the room.\n * @class\n * @name Memberships\n */\nconst Memberships = WebexPlugin.extend({\n /**\n * Register to listen for incoming membership events\n * This is an alternate approach to registering for membership 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 Memberships\n * @returns {Promise}\n * @example\n * webex.memberships.listen()\n * .then(() => {\n * console.log('listening to membership events');\n * webex.memberships.on('created', (event) => {\n * console.log(`Got a membership:created event:\\n${event}`);\n * }\n * webex.memberships.on('updated', (event) => {\n * console.log(`Got a membership:updated event:\\n${event}`);\n * }\n * webex.memberships.on('seen', (event) => {\n * // This represents a \"read receipt\" and will include a\n * // lastSeenId for the message this member has just \"read\",\n * // There is currently no equivalent webhook for this event.\n * console.log(`Got a membership:seen event:\\n${event}`);\n * }\n * webex.memberships.on('deleted', (event) => => {\n * console.log(`Got a membership:created event:\\n${event}`);\n * }\n * })\n * .catch((e) => console.error(`Unable to register for membership events: ${e}`));\n * // App logic goes here...\n * // Later when it is time to clean up\n * webex.memberships.stopListening();\n * webex.memberships.off('created');\n * webex.memberships.off('updated');\n * webex.memberships.off('seen');\n * webex.memberships.off('deleted');\n\n */\n listen() {\n // Create a common envelope that we will wrap all events in\n return createEventEnvelope(this.webex, SDK_EVENT.EXTERNAL.RESOURCE.MEMBERSHIPS).then(\n (envelope) => {\n this.eventEnvelope = envelope;\n\n // Register to listen to events\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 /**\n * Adds a person to a room. The person can be added by ID (`personId`) or by\n * Email Address (`personEmail`). The person can be optionally added to the room\n * as a moderator.\n * @instance\n * @memberof Memberships\n * @param {MembershipObject} membership\n * @returns {Promise<MembershipObject>}\n * @example\n * webex.rooms.create({title: 'Create Membership Example'})\n * .then(function(room) {\n * return webex.memberships.create({\n * personEmail: 'alice@example.com',\n * roomId: room.id\n * });\n * })\n * .then(function(membership) {\n * var assert = require('assert');\n * assert(membership.id);\n * assert(membership.roomId);\n * assert(membership.personId);\n * assert(membership.personEmail);\n * assert('isModerator' in membership);\n * assert('isMonitor' in membership);\n * assert(membership.created);\n * return 'success';\n * });\n * // => success\n */\n create(membership) {\n return this.request({\n method: 'POST',\n service: 'hydra',\n resource: 'memberships',\n body: membership,\n }).then((res) => res.body);\n },\n\n /**\n * Returns a single membership.\n * @instance\n * @memberof Memberships\n * @param {MembershipObject|uuid} membership\n * @returns {Promise<MembershipObject>}\n * @example\n * var membership;\n * webex.rooms.create({title: 'Get Membership Example'})\n * .then(function(room) {\n * return webex.memberships.create({\n * personEmail: 'alice@example.com',\n * roomId: room.id\n * });\n * })\n * .then(function(m) {\n * membership = m;\n * return webex.memberships.get(m.id);\n * })\n * .then(function(m) {\n * var assert = require('assert');\n * assert.deepEqual(m, membership);\n * return 'success';\n * });\n * // => success\n */\n get(membership) {\n const id = membership.id || membership;\n\n return this.request({\n service: 'hydra',\n resource: `memberships/${id}`,\n }).then((res) => res.body.items || res.body);\n },\n\n /**\n * Returns a list of memberships. In most cases the results will only contain\n * rooms that the authenticated user is a member of. You can filter the results\n * by room to list people in a room or by person to find rooms that a\n * specific person is a member of.\n * @instance\n * @memberof Memberships\n * @param {Object} options\n * @param {string} options.personId\n * @param {string} options.personEmail\n * @param {string} options.roomId\n * @param {number} options.max\n * @returns {Promise<Page<MembershipObject>>}\n * @example\n * var room;\n * webex.rooms.create({title: 'List Membership Example'})\n * .then(function(r) {\n * room = r;\n * return webex.memberships.create({\n * personEmail: 'alice@example.com',\n * roomId: room.id\n * });\n * })\n * .then(function() {\n * return webex.memberships.list({roomId: room.id});\n * })\n * .then(function(memberships) {\n * var assert = require('assert');\n * assert.equal(memberships.length, 2);\n * for (var i = 0; i < memberships.length; i+= 1) {\n * assert.equal(memberships.items[i].roomId, room.id);\n * }\n * return 'success';\n * });\n * // => success\n */\n list(options) {\n return this.request({\n service: 'hydra',\n resource: 'memberships',\n qs: options,\n }).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Returns a list of memberships with details about the lastSeenId for each\n * user, allowing a client to indicate \"read status\" in a space GUI\n *\n * This differs from the memberships.list() function in the following ways:\n * -- it accepts only a room or object with a valid roomId\n * -- no other options, eg: max, are considered\n * -- results are not paginated\n * -- memberships in the return do not include the\n * \"created\", \"isRoomHidden\", fields\n * -- memberships in the return do include the new\n * \"lastSeenId\", and \"lastSeenDate\" fields\n * these will not exist if the member has never \"seen\" the space\n *\n * In general this function should be used only when the\n * client needs to access read status info.\n *\n * This function may be deprecated when this info is provided in the membership\n * objects returned in the list function.\n *\n *\n * @instance\n * @memberof Memberships\n * @param {Object} options\n * @param {string} options.roomId\n * @returns {Promise<MembershipObjectList>}\n */\n listWithReadStatus(options) {\n const deconstructedId = deconstructHydraId(options.roomId);\n const conversation = {\n id: deconstructedId.id,\n cluster: deconstructedId.cluster,\n };\n\n return ensureMyIdIsAvailable(this.webex).then(() =>\n this.webex.internal.services.waitForCatalog('postauth').then(() =>\n this.webex.internal.conversation\n .get(conversation, {\n participantAckFilter: 'all', // show lastAck info for each participant\n activitiesLimit: 0, // don't send the whole history of activity\n })\n .then((resp) => {\n try {\n // We keep track of the last read message by each user\n const roomUUID = resp.id;\n const roomId = buildHydraRoomId(roomUUID, conversation.cluster);\n const participants = resp.participants.items;\n const lastReadInfo = {items: []};\n const roomType = getHydraRoomType(resp.tags);\n const myId = this.webex.internal.me.id;\n const isRoomHidden = resp.tags.includes(SDK_EVENT.INTERNAL.ACTIVITY_TAG.HIDDEN);\n\n for (let i = 0; i < participants.length; i += 1) {\n const participant = participants[i];\n const participantInfo = {\n id: buildHydraMembershipId(participant.entryUUID, roomUUID, conversation.cluster),\n roomId,\n personId: buildHydraPersonId(participant.entryUUID),\n personEmail: participant.entryEmailAddress || participant.entryEmail,\n personDisplayName: participant.displayName,\n personOrgId: buildHydraOrgId(participant.orgId, conversation.cluster),\n isMonitor: false, // deprecated, but included for completeness\n roomType,\n // created is not available in the conversations payload\n };\n\n if (isRoomHidden && participantInfo.personId === myId) {\n participantInfo.isRoomHidden = isRoomHidden;\n }\n\n if ('roomProperties' in participant) {\n if ('lastSeenActivityDate' in participant.roomProperties) {\n participantInfo.lastSeenId = buildHydraMessageId(\n participant.roomProperties.lastSeenActivityUUID,\n conversation.cluster\n );\n participantInfo.lastSeenDate = participant.roomProperties.lastSeenActivityDate;\n }\n if ('isModerator' in participant.roomProperties) {\n participantInfo.isModerator = participant.roomProperties.isModerator;\n }\n }\n\n lastReadInfo.items.push(participantInfo);\n }\n\n return Promise.resolve(lastReadInfo);\n } catch (e) {\n return Promise.reject(e);\n }\n })\n )\n );\n },\n\n /**\n * Deletes a single membership.\n * @instance\n * @memberof Memberships\n * @param {MembershipObject|uuid} membership\n * @returns {Promise}\n * @example\n * var membership, room;\n * webex.rooms.create({title: 'Remove Membership Example'})\n * .then(function(r) {\n * room = r;\n * return webex.memberships.create({\n * personEmail: 'alice@example.com',\n * roomId: room.id\n * });\n * })\n * .then(function(m) {\n * membership = m;\n * return webex.memberships.list({roomId: room.id});\n * })\n * .then(function(memberships) {\n * var assert = require('assert');\n * assert.equal(memberships.length, 2);\n * return webex.memberships.remove(membership);\n * })\n * .then(function() {\n * return webex.memberships.list({roomId: room.id});\n * })\n * .then(function(memberships) {\n * var assert = require('assert');\n * assert.equal(memberships.length, 1);\n * return 'success';\n * });\n * // => success\n */\n remove(membership) {\n const id = membership.id || membership;\n\n return this.request({\n method: 'DELETE',\n service: 'hydra',\n resource: `memberships/${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 membership's properties\n * @instance\n * @memberof Memberships\n * @param {MembershipObject|uuid} membership\n * @returns {Promise<MembershipObject>}\n * @example\n * // Change membership to make user a moderator\n * var membership, room;\n * webex.rooms.create({title: 'Memberships Example'})\n * .then(function(r) {\n * room = r;\n * return webex.memberships.list({roomId: room.id});\n * })\n * .then(function(memberships) {\n * membership = memberships.items[0];\n * var assert = require('assert');\n * assert.equal(membership.isModerator, false);\n * membership.isModerator = true;\n * return webex.memberships.update(membership);\n * })\n * .then(function() {\n * return webex.memberships.get(membership.id);\n * })\n * .then(function(membership) {\n * var assert = require('assert');\n * assert.equal(membership.isModerator, true);\n * return 'success';\n * });\n * // => success\n * @example\n * // Hide a one on one space\n * var assert = require('assert');\n * var membership, myId;\n * webex.people.get('me')\n * .then(function(person) {\n * myId = personId;\n * return webex.messages.create({\n * toPersonEmail: 'otherUser@acme.com',\n * text: 'This message will create a 1-1 space'\n * });\n * })\n * then(function(message) {\n * return webex.memberships.list({\n * roomId: message.roomId,\n * personId: myId\n * });\n * })\n * .then((memberships) => {\n * membership = memberships.items[0];\n * assert.equal(membership.isRoomHidden, false);\n * membership.isRoomHidden = true;\n * // This will generate a memberships:updated event\n * // that will only be seen by this user\n * return webex.memberships.update(membership);\n * })\n * .then(function(membership) {\n * assert.equal(membership.isRoomHidden, true);\n * return 'success';\n * });\n * // => success\n */\n update(membership) {\n const id = membership.id || membership;\n\n return this.request({\n method: 'PUT',\n service: 'hydra',\n resource: `memberships/${id}`,\n body: membership,\n }).then((res) => res.body);\n },\n\n /**\n * Updates the lastSeenId attribute of a membership.\n * Call this method to send a \"read receipt\" for a given message.\n * This will update the lastSeenId for the user's membership in\n * space where the message is.\n * @instance\n * @memberof Memberships\n * @param {string} message\n * @returns {Promise<MembershipObject>}\n */\n updateLastSeen(message) {\n const activity = {\n id: deconstructHydraId(message.id).id,\n };\n const deconstructedId = deconstructHydraId(message.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.acknowledge(conversation, activity).then((ack) => ({\n lastSeenId: buildHydraMessageId(ack.object.id, conversation.cluster),\n id: buildHydraMembershipId(ack.actor.entryUUID, ack.target.id, conversation.cluster),\n personId: buildHydraPersonId(ack.actor.entryUUID, conversation.cluster),\n personEmail: ack.actor.emailAddress || ack.actor.entryEmail,\n personDisplayName: ack.actor.displayName,\n personOrgId: buildHydraOrgId(ack.actor.orgId, conversation.cluster),\n roomId: buildHydraRoomId(ack.target.id, conversation.cluster),\n roomType: getHydraRoomType(ack.target.tags),\n isRoomHidden: false, // any activity unhides a space.\n isMonitor: false, // deprecated, returned for back compat\n created: ack.published,\n }))\n );\n },\n\n /**\n * This function is called when an internal membership events fires,\n * if the user registered for these events with the public listen() method.\n * External users of the SDK should not call this function\n * @private\n * @memberof Memberships\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 membershipCreatedEventDataArray = activity.object.participants.items.map(\n (participant) => {\n const output = cloneDeep(activity);\n\n output.target = cloneDeep(activity.object);\n output.object = cloneDeep(participant);\n\n return this.getMembershipEvent(output, SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED);\n }\n );\n\n membershipCreatedEventDataArray.forEach((data) => {\n if (data) {\n debug(`membership \"created\" payload: ${JSON.stringify(data)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, data);\n }\n });\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.ADD:\n const membershipCreatedEventData = this.getMembershipEvent(\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED\n );\n\n if (membershipCreatedEventData) {\n debug(`membership \"created\" payload: \\\n ${JSON.stringify(membershipCreatedEventData)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, membershipCreatedEventData);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.LEAVE:\n const membershipDeletedEventData = this.getMembershipEvent(\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.DELETED\n );\n\n if (membershipDeletedEventData) {\n debug(`membership \"deleted\" payload: \\\n ${JSON.stringify(membershipDeletedEventData)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.DELETED, membershipDeletedEventData);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.ADD_MODERATOR:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.REMOVE_MODERATOR:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE:\n const membershipUpdatedEventData = this.getMembershipEvent(\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED\n );\n\n if (membershipUpdatedEventData) {\n debug(`membership \"updated\" payload: \\\n ${JSON.stringify(membershipUpdatedEventData)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, membershipUpdatedEventData);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE:\n const membershipSeenEventData = this.getMembershipEvent(\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.SEEN\n );\n\n if (membershipSeenEventData) {\n debug(`membership \"updated\" payload: \\\n ${JSON.stringify(membershipSeenEventData)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.SEEN, membershipSeenEventData);\n }\n break;\n\n default:\n break;\n }\n },\n\n /**\n * Constructs the data object for an event on the memberships resource,\n * adhering to Hydra's Webhook data structure memberships.\n * External users of the SDK should not call this function\n * @private\n * @memberof Memberships\n * @param {Object} activity from mercury\n * @param {Object} event type of \"webhook\" event\n * @returns {Object} constructed event\n */\n getMembershipEvent(activity, event) {\n try {\n const sdkEvent = cloneDeep(this.eventEnvelope);\n const cluster =\n activity.verb !== SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE\n ? getHydraClusterString(this.webex, activity.target.url)\n : getHydraClusterString(this.webex, activity.url);\n let member;\n let space;\n\n sdkEvent.event = event;\n sdkEvent.data.created = activity.published;\n sdkEvent.actorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n if (activity.verb !== SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE) {\n sdkEvent.data.roomId = buildHydraRoomId(activity.target.id, cluster);\n sdkEvent.data.roomType = getHydraRoomType(activity.target.tags);\n sdkEvent.data.isRoomHidden = false; // any activity unhides a space.\n } else {\n sdkEvent.data.roomId = buildHydraRoomId(activity.object.id, cluster);\n sdkEvent.data.roomType = SDK_EVENT.EXTERNAL.SPACE_TYPE.DIRECT;\n // currently hidden attribute is only set on 1-1\n sdkEvent.data.isRoomHidden = true;\n }\n if (activity.verb !== SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE) {\n if (activity.object.roomProperties && activity.object.roomProperties.isModerator) {\n sdkEvent.data.isModerator = true;\n } else {\n sdkEvent.data.isModerator = false;\n }\n }\n // This is deprecated but still sent in the webhooks\n // We won't send it for our new SDK events\n // sdkEvent.data.isMonitor = false;\n\n if (activity.verb === SDK_EVENT.INTERNAL.ACTIVITY_VERB.ACKNOWLEDGE) {\n // For a read receipt the person is the \"actor\" or the one who did the reading\n member = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.ACTOR;\n // The space with the read message is the \"target\"\n space = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.TARGET;\n // And the \"object\" is the message that was last seen\n sdkEvent.data.lastSeenId = buildHydraMessageId(activity.object.id, cluster);\n } else if (activity.verb === SDK_EVENT.INTERNAL.ACTIVITY_VERB.HIDE) {\n // For a hide activity the person is also the \"actor\"\n member = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.ACTOR;\n // But the space is now the \"object\"\n space = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.OBJECT;\n } else {\n // For most memberships events the person is the 'object\"\n member = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.OBJECT;\n // and the space is the \"target\"\n space = SDK_EVENT.INTERNAL.ACTIVITY_FIELD.TARGET;\n }\n\n sdkEvent.data.id = buildHydraMembershipId(\n activity[member].entryUUID,\n activity[space].id,\n cluster\n );\n sdkEvent.data.personId = buildHydraPersonId(activity[member].entryUUID, cluster);\n sdkEvent.data.personEmail = activity[member].emailAddress || activity[member].entryEmail;\n sdkEvent.data.personDisplayName = activity[member].displayName;\n sdkEvent.data.personOrgId = buildHydraOrgId(activity[member].orgId, cluster);\n\n return sdkEvent;\n } catch (e) {\n this.webex.logger.error(`Unable to generate SDK event from mercury \\\n'socket activity for memberships:${event} event: ${e.message}`);\n\n return null;\n }\n },\n});\n\nexport default Memberships;\n"],"mappings":";;;;;;;;;;;AAIA;AAaA;AAjBA;AACA;AACA;;AAkBA,IAAMA,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,WAAW,GAAGC,sBAAW,CAACC,MAAM,CAAC;EACrC;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;EAEEC,MAAM,oBAAG;IAAA;IACP;IACA,OAAO,IAAAC,2BAAmB,EAAC,IAAI,CAACC,KAAK,EAAEC,iBAAS,CAACC,QAAQ,CAACC,QAAQ,CAACC,WAAW,CAAC,CAACC,IAAI,CAClF,UAACC,QAAQ,EAAK;MACZ,KAAI,CAACC,aAAa,GAAGD,QAAQ;;MAE7B;MACA,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,CACF;EACH,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;EACEE,MAAM,kBAACC,UAAU,EAAE;IACjB,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBC,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE,OAAO;MAChBC,QAAQ,EAAE,aAAa;MACvBC,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;AACA;AACA;AACA;AACA;AACA;EACEE,GAAG,eAACP,UAAU,EAAE;IACd,IAAMQ,EAAE,GAAGR,UAAU,CAACQ,EAAE,IAAIR,UAAU;IAEtC,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBE,OAAO,EAAE,OAAO;MAChBC,QAAQ,wBAAiBI,EAAE;IAC7B,CAAC,CAAC,CAACpB,IAAI,CAAC,UAACkB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI,CAACI,KAAK,IAAIH,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;AACA;AACA;AACA;AACA;EACEK,IAAI,gBAACC,OAAO,EAAE;IAAA;IACZ,OAAO,IAAI,CAACV,OAAO,CAAC;MAClBE,OAAO,EAAE,OAAO;MAChBC,QAAQ,EAAE,aAAa;MACvBQ,EAAE,EAAED;IACN,CAAC,CAAC,CAACvB,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;EACE+B,kBAAkB,8BAACH,OAAO,EAAE;IAAA;IAC1B,IAAMI,eAAe,GAAG,IAAAC,0BAAkB,EAACL,OAAO,CAACM,MAAM,CAAC;IAC1D,IAAMC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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-memberships",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.50",
|
|
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.50",
|
|
24
|
+
"@webex/test-helper-test-users": "3.0.0-beta.50",
|
|
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.50",
|
|
29
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.50",
|
|
30
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.50",
|
|
31
|
+
"@webex/plugin-logger": "3.0.0-beta.50",
|
|
32
|
+
"@webex/plugin-memberships": "3.0.0-beta.50",
|
|
33
|
+
"@webex/plugin-messages": "3.0.0-beta.50",
|
|
34
|
+
"@webex/plugin-people": "3.0.0-beta.50",
|
|
35
|
+
"@webex/plugin-rooms": "3.0.0-beta.50",
|
|
36
|
+
"@webex/webex-core": "3.0.0-beta.50",
|
|
37
37
|
"debug": "^4.3.4",
|
|
38
38
|
"lodash": "^4.17.21"
|
|
39
39
|
}
|