|
|
@@ -413,7 +413,7 @@ JitsiConference.prototype.muteParticipant = function (id) {
|
|
413
|
413
|
this.room.muteParticipant(participant.getJid(), true);
|
|
414
|
414
|
};
|
|
415
|
415
|
|
|
416
|
|
-JitsiConference.prototype.onMemberJoined = function (jid, email, nick) {
|
|
|
416
|
+JitsiConference.prototype.onMemberJoined = function (jid, nick) {
|
|
417
|
417
|
var id = Strophe.getResourceFromJid(jid);
|
|
418
|
418
|
if (id === 'focus' || this.myUserId() === id) {
|
|
419
|
419
|
return;
|
|
|
@@ -6346,6 +6346,8 @@ ChatRoom.prototype.onPresence = function (pres) {
|
|
6346
|
6346
|
parser.packet2JSON(pres, nodes);
|
|
6347
|
6347
|
this.lastPresences[from] = nodes;
|
|
6348
|
6348
|
var jibri = null;
|
|
|
6349
|
+ // process nodes to extract data needed for MUC_JOINED and MUC_MEMBER_JOINED
|
|
|
6350
|
+ // events
|
|
6349
|
6351
|
for(var i = 0; i < nodes.length; i++)
|
|
6350
|
6352
|
{
|
|
6351
|
6353
|
var node = nodes[i];
|
|
|
@@ -6353,53 +6355,24 @@ ChatRoom.prototype.onPresence = function (pres) {
|
|
6353
|
6355
|
{
|
|
6354
|
6356
|
case "nick":
|
|
6355
|
6357
|
member.nick = node.value;
|
|
6356
|
|
- if(!member.isFocus) {
|
|
6357
|
|
- var displayName = !this.xmpp.options.displayJids
|
|
6358
|
|
- ? member.nick : Strophe.getResourceFromJid(from);
|
|
6359
|
|
-
|
|
6360
|
|
- if (displayName && displayName.length > 0) {
|
|
6361
|
|
- this.eventEmitter.emit(XMPPEvents.DISPLAY_NAME_CHANGED, from, displayName);
|
|
6362
|
|
- }
|
|
6363
|
|
- }
|
|
6364
|
6358
|
break;
|
|
6365
|
6359
|
case "userId":
|
|
6366
|
6360
|
member.id = node.value;
|
|
6367
|
6361
|
break;
|
|
6368
|
|
- case "bridgeIsDown":
|
|
6369
|
|
- if(!this.bridgeIsDown) {
|
|
6370
|
|
- this.bridgeIsDown = true;
|
|
6371
|
|
- this.eventEmitter.emit(XMPPEvents.BRIDGE_DOWN);
|
|
6372
|
|
- }
|
|
6373
|
|
- break;
|
|
6374
|
|
- case "jibri-recording-status":
|
|
6375
|
|
- var jibri = node;
|
|
6376
|
|
- break;
|
|
6377
|
|
- case "call-control":
|
|
6378
|
|
- var att = node.attributes;
|
|
6379
|
|
- if(!att)
|
|
6380
|
|
- break;
|
|
6381
|
|
- this.phoneNumber = att.phone || null;
|
|
6382
|
|
- this.phonePin = att.pin || null;
|
|
6383
|
|
- this.eventEmitter.emit(XMPPEvents.PHONE_NUMBER_CHANGED);
|
|
6384
|
|
- break;
|
|
6385
|
|
- default :
|
|
6386
|
|
- this.processNode(node, from);
|
|
6387
|
6362
|
}
|
|
6388
|
|
-
|
|
6389
|
6363
|
}
|
|
6390
|
6364
|
|
|
6391
|
6365
|
if (from == this.myroomjid) {
|
|
6392
|
|
- if (member.affiliation == 'owner')
|
|
6393
|
|
-
|
|
6394
|
|
- if (this.role !== member.role) {
|
|
|
6366
|
+ if (member.affiliation == 'owner'
|
|
|
6367
|
+ && this.role !== member.role) {
|
|
6395
|
6368
|
this.role = member.role;
|
|
6396
|
|
-
|
|
6397
|
|
- this.eventEmitter.emit(XMPPEvents.LOCAL_ROLE_CHANGED, this.role);
|
|
6398
|
|
- }
|
|
|
6369
|
+ this.eventEmitter.emit(
|
|
|
6370
|
+ XMPPEvents.LOCAL_ROLE_CHANGED, this.role);
|
|
|
6371
|
+ }
|
|
6399
|
6372
|
if (!this.joined) {
|
|
6400
|
6373
|
this.joined = true;
|
|
6401
|
6374
|
console.log("(TIME) MUC joined:\t", window.performance.now());
|
|
6402
|
|
- this.eventEmitter.emit(XMPPEvents.MUC_JOINED, from, member);
|
|
|
6375
|
+ this.eventEmitter.emit(XMPPEvents.MUC_JOINED);
|
|
6403
|
6376
|
}
|
|
6404
|
6377
|
} else if (this.members[from] === undefined) {
|
|
6405
|
6378
|
// new participant
|
|
|
@@ -6417,14 +6390,16 @@ ChatRoom.prototype.onPresence = function (pres) {
|
|
6417
|
6390
|
logger.info("Ignore focus: " + from + ", real JID: " + member.jid);
|
|
6418
|
6391
|
}
|
|
6419
|
6392
|
else {
|
|
6420
|
|
- this.eventEmitter.emit(XMPPEvents.MUC_MEMBER_JOINED, from, member.id, member.nick);
|
|
|
6393
|
+ this.eventEmitter.emit(
|
|
|
6394
|
+ XMPPEvents.MUC_MEMBER_JOINED, from, member.nick);
|
|
6421
|
6395
|
}
|
|
6422
|
6396
|
} else {
|
|
6423
|
6397
|
// Presence update for existing participant
|
|
6424
|
6398
|
// Watch role change:
|
|
6425
|
6399
|
if (this.members[from].role != member.role) {
|
|
6426
|
6400
|
this.members[from].role = member.role;
|
|
6427
|
|
- this.eventEmitter.emit(XMPPEvents.MUC_ROLE_CHANGED, from, member.role);
|
|
|
6401
|
+ this.eventEmitter.emit(
|
|
|
6402
|
+ XMPPEvents.MUC_ROLE_CHANGED, from, member.role);
|
|
6428
|
6403
|
}
|
|
6429
|
6404
|
|
|
6430
|
6405
|
// store the new display name
|
|
|
@@ -6432,7 +6407,45 @@ ChatRoom.prototype.onPresence = function (pres) {
|
|
6432
|
6407
|
this.members[from].displayName = member.displayName;
|
|
6433
|
6408
|
}
|
|
6434
|
6409
|
|
|
|
6410
|
+ // after we had fired member or room joined events, lets fire events
|
|
|
6411
|
+ // for the rest info we got in presence
|
|
|
6412
|
+ for(var i = 0; i < nodes.length; i++)
|
|
|
6413
|
+ {
|
|
|
6414
|
+ var node = nodes[i];
|
|
|
6415
|
+ switch(node.tagName)
|
|
|
6416
|
+ {
|
|
|
6417
|
+ case "nick":
|
|
|
6418
|
+ if(!member.isFocus) {
|
|
|
6419
|
+ var displayName = !this.xmpp.options.displayJids
|
|
|
6420
|
+ ? member.nick : Strophe.getResourceFromJid(from);
|
|
6435
|
6421
|
|
|
|
6422
|
+ if (displayName && displayName.length > 0) {
|
|
|
6423
|
+ this.eventEmitter.emit(
|
|
|
6424
|
+ XMPPEvents.DISPLAY_NAME_CHANGED, from, displayName);
|
|
|
6425
|
+ }
|
|
|
6426
|
+ }
|
|
|
6427
|
+ break;
|
|
|
6428
|
+ case "bridgeIsDown":
|
|
|
6429
|
+ if(!this.bridgeIsDown) {
|
|
|
6430
|
+ this.bridgeIsDown = true;
|
|
|
6431
|
+ this.eventEmitter.emit(XMPPEvents.BRIDGE_DOWN);
|
|
|
6432
|
+ }
|
|
|
6433
|
+ break;
|
|
|
6434
|
+ case "jibri-recording-status":
|
|
|
6435
|
+ var jibri = node;
|
|
|
6436
|
+ break;
|
|
|
6437
|
+ case "call-control":
|
|
|
6438
|
+ var att = node.attributes;
|
|
|
6439
|
+ if(!att)
|
|
|
6440
|
+ break;
|
|
|
6441
|
+ this.phoneNumber = att.phone || null;
|
|
|
6442
|
+ this.phonePin = att.pin || null;
|
|
|
6443
|
+ this.eventEmitter.emit(XMPPEvents.PHONE_NUMBER_CHANGED);
|
|
|
6444
|
+ break;
|
|
|
6445
|
+ default :
|
|
|
6446
|
+ this.processNode(node, from);
|
|
|
6447
|
+ }
|
|
|
6448
|
+ }
|
|
6436
|
6449
|
|
|
6437
|
6450
|
if(!member.isFocus)
|
|
6438
|
6451
|
this.eventEmitter.emit(XMPPEvents.USER_ID_CHANGED, from, member.id);
|