[polari/wip/fmuellner/combined-gsoc: 84/136] userTracker: Clean up _trackMember()



commit b1db8565ae02342240a7c2d3337ca4b6b517f4a2
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Jul 14 02:35:55 2016 +0200

    userTracker: Clean up _trackMember()
    
    It currently takes a map parameter which is set to either the global
    or per-room mapping. But then it's always called in pairs for either
    map, and behaves differently based on which map it was called with.
    Just remove the map parameter and handle both maps internally.

 src/userTracker.js |   47 ++++++++++++++++++++++-------------------------
 1 files changed, 22 insertions(+), 25 deletions(-)
---
diff --git a/src/userTracker.js b/src/userTracker.js
index 28200d3..d55cd3b 100644
--- a/src/userTracker.js
+++ b/src/userTracker.js
@@ -163,8 +163,7 @@ const UserTracker = new Lang.Class({
             globally*/
             members.forEach(m => {
                 m._room = emittingRoom;
-                this._trackMember(this._roomMapping.get(emittingRoom)._contactMapping, m, emittingRoom);
-                this._trackMember(this._globalContactMapping, m, emittingRoom);
+                this._trackMember(m, emittingRoom);
             });
         } else {
             /*handle the absence of a channel for the global case*/
@@ -216,8 +215,7 @@ const UserTracker = new Lang.Class({
 
         this._untrackMember(this._roomMapping.get(room)._contactMapping, oldMember, room);
         this._untrackMember(this._globalContactMapping, oldMember, room);
-        this._trackMember(this._roomMapping.get(room)._contactMapping, newMember, room);
-        this._trackMember(this._globalContactMapping, newMember, room);
+        this._trackMember(newMember, room);
     },
 
     _onMemberDisconnected: function(room, member, message) {
@@ -244,8 +242,7 @@ const UserTracker = new Lang.Class({
     _onMemberJoined: function(room, member) {
         member._room = room;
 
-        this._trackMember(this._roomMapping.get(room)._contactMapping, member, room);
-        this._trackMember(this._globalContactMapping, member, room);
+        this._trackMember(member, room);
     },
 
     _onMemberLeft: function(room, member, message) {
@@ -269,31 +266,31 @@ const UserTracker = new Lang.Class({
         return contacts.push(member);
     },
 
-    _trackMember: function(map, member, room) {
+    _trackMember: function(member, room) {
         let baseNick = Polari.util_get_basenick(member.alias);
+        let status = Tp.ConnectionPresenceType.AVAILABLE;
 
+        let map = this._globalContactMapping;
         if (this._pushMember(map, baseNick, member) == 1) {
-            if (map == this._globalContactMapping) {
-                this.emit("status-changed::" + baseNick, member.alias, Tp.ConnectionPresenceType.AVAILABLE);
-                //log("[global status] user " + member.alias + " is globally online");
+            this.emit("status-changed::" + baseNick, member.alias, status);
 
-                let notifyActionName = this.getNotifyActionName(member.alias);
-                let notifyAction = this._app.lookup_action(notifyActionName);
-
-                if (notifyAction.get_state().get_boolean()) {
-                    this.emitWatchedUserNotification(room, member);
-                    /*change state so that the button is not pressed if it reappears again*/
-                    notifyAction.change_state(GLib.Variant.new('b', false));
-                }
+            let notifyActionName = this.getNotifyActionName(member.alias);
+            let notifyAction = this._app.lookup_action(notifyActionName);
 
-                notifyAction.enabled = false;
-            } else {
-                this._runHandlers(room, member, Tp.ConnectionPresenceType.AVAILABLE);
+            if (notifyAction.get_state().get_boolean()) {
+                this.emitWatchedUserNotification(room, member);
+                /*change state so that the button is not pressed if it reappears again*/
+                notifyAction.change_state(GLib.Variant.new('b', false));
             }
+
+            notifyAction.enabled = false;
         }
 
-        if (this._globalContactMapping == map)
-            this.emit("contacts-changed::" + baseNick);
+        let roomMap = this._roomMapping.get(room)._contactMapping;
+        if (this._pushMember(roomMap, baseNick, member) == 1)
+            this._runHandlers(room, member, status);
+
+        this.emit("contacts-changed::" + baseNick);
     },
 
     _untrackMember: function(map, member, room) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]