Procházet zdrojové kódy

Merge pull request #580 from jitsi/status-message-clear

Fire status message update when there is no status message.
dev1
virtuacoplenny před 8 roky
rodič
revize
b7807fc160
1 změnil soubory, kde provedl 18 přidání a 3 odebrání
  1. 18
    3
      modules/xmpp/ChatRoom.js

+ 18
- 3
modules/xmpp/ChatRoom.js Zobrazit soubor

389
         const member = {};
389
         const member = {};
390
 
390
 
391
         member.show = $(pres).find('>show').text();
391
         member.show = $(pres).find('>show').text();
392
-        member.status = $(pres).find('>status').text();
392
+        const $statusNode = $(pres).find('>status');
393
+        const hasStatus = $statusNode.length;
394
+
395
+        if (hasStatus) {
396
+            member.status = $statusNode.text();
397
+        }
398
+        let hasStatusUpdate = false;
399
+
393
         const mucUserItem
400
         const mucUserItem
394
             = $(pres).find(
401
             = $(pres).find(
395
                 '>x[xmlns="http://jabber.org/protocol/muc#user"]>item');
402
                 '>x[xmlns="http://jabber.org/protocol/muc#user"]>item');
466
                     XMPPEvents.MUC_MEMBER_JOINED,
473
                     XMPPEvents.MUC_MEMBER_JOINED,
467
                     from, member.nick, member.role, member.isHiddenDomain);
474
                     from, member.nick, member.role, member.isHiddenDomain);
468
             }
475
             }
476
+
477
+            hasStatusUpdate = member.status !== undefined;
469
         } else {
478
         } else {
470
             // Presence update for existing participant
479
             // Presence update for existing participant
471
             // Watch role change:
480
             // Watch role change:
495
             if (member.displayName) {
504
             if (member.displayName) {
496
                 memberOfThis.displayName = member.displayName;
505
                 memberOfThis.displayName = member.displayName;
497
             }
506
             }
507
+
508
+            // update stored status message to be able to detect changes
509
+            if (memberOfThis.status !== member.status) {
510
+                hasStatusUpdate = true;
511
+                memberOfThis.status = member.status;
512
+            }
498
         }
513
         }
499
 
514
 
500
         // after we had fired member or room joined events, lets fire events
515
         // after we had fired member or room joined events, lets fire events
541
             }
556
             }
542
         }
557
         }
543
 
558
 
544
-        // Trigger status message update
545
-        if (member.status) {
559
+        // Trigger status message update if necessary
560
+        if (hasStatusUpdate) {
546
             this.eventEmitter.emit(
561
             this.eventEmitter.emit(
547
                 XMPPEvents.PRESENCE_STATUS,
562
                 XMPPEvents.PRESENCE_STATUS,
548
                 from,
563
                 from,

Načítá se…
Zrušit
Uložit