summary refs log tree commit diff
diff options
context:
space:
mode:
authorEmmanuel ROHEE <erohee@amdocs.com>2014-09-24 12:22:40 +0200
committerEmmanuel ROHEE <erohee@amdocs.com>2014-09-24 12:22:40 +0200
commit6f5970a2e100f48742e925570a2f2fad1b401c40 (patch)
tree85a648a98fcc571c413c0e26b70597da85382444
parentState data now provides up-to-date users displaynames. So use it first. (diff)
downloadsynapse-6f5970a2e100f48742e925570a2f2fad1b401c40.tar.xz
Added hasOwnProperty tests when required to be robust to random properties added to he Object prototype
-rw-r--r--webclient/components/matrix/event-handler-service.js5
-rw-r--r--webclient/components/matrix/matrix-filter.js2
-rw-r--r--webclient/room/room-controller.js6
3 files changed, 12 insertions, 1 deletions
diff --git a/webclient/components/matrix/event-handler-service.js b/webclient/components/matrix/event-handler-service.js
index 770ac938ca..d8deb0ac8b 100644
--- a/webclient/components/matrix/event-handler-service.js
+++ b/webclient/components/matrix/event-handler-service.js
@@ -115,8 +115,9 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
 
         if (room) { // we got an existing room object from initialsync, seemingly.
             // Report all other metadata of the room object (membership, inviter, visibility, ...)
-            // XXX: do we *REALLY* want to iterate over *EVERY* field in the object, including all its methods etc? -- Matthew
             for (var field in room) {
+                if (!room.hasOwnProperty(field)) continue;
+
                 if (-1 === ["room_id", "messages", "state"].indexOf(field)) { // why indexOf - why not ===? --Matthew
                     $rootScope.events.rooms[room_id][field] = room[field];
                 }
@@ -517,6 +518,8 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
                 memberCount = 0;
 
                 for (var i in room.members) {
+                    if (!room.members.hasOwnProperty(i)) continue;
+
                     var member = room.members[i];
 
                     if ("join" === member.membership) {
diff --git a/webclient/components/matrix/matrix-filter.js b/webclient/components/matrix/matrix-filter.js
index 96642a8720..c27746b380 100644
--- a/webclient/components/matrix/matrix-filter.js
+++ b/webclient/components/matrix/matrix-filter.js
@@ -45,6 +45,8 @@ angular.module('matrixFilter', [])
                 // Limit the room renaming to 1:1 room
                 if (2 === Object.keys(room.members).length) {
                     for (var i in room.members) {
+                        if (!room.members.hasOwnProperty(i)) continue;
+
                         var member = room.members[i];
                         if (member.state_key !== user_id) {
                             roomName = eventHandlerService.getUserDisplayName(room_id, member.state_key);
diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js
index 384d7dc9a6..f188d92cea 100644
--- a/webclient/room/room-controller.js
+++ b/webclient/room/room-controller.js
@@ -400,6 +400,8 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
         // Find the max power level
         var maxPowerLevel = 0;
         for (var i in $scope.members) {
+            if (!$scope.members.hasOwnProperty(i)) continue;
+
             var member = $scope.members[i];
             if (member.powerLevel) {
                 maxPowerLevel = Math.max(maxPowerLevel, member.powerLevel);
@@ -409,6 +411,8 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
         // Normalized them on a 0..100% scale to be use in css width
         if (maxPowerLevel) {
             for (var i in $scope.members) {
+                if (!$scope.members.hasOwnProperty(i)) continue;
+
                 var member = $scope.members[i];
                 member.powerLevelNorm = (member.powerLevel * 100) / maxPowerLevel;
             }
@@ -724,6 +728,8 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
 
                     // Update the member list
                     for (var i in members) {
+                        if (!members.hasOwnProperty(i)) continue;
+
                         var member = members[i];
                         updateMemberList(member);
                     }