Merge branch 'master' of github.com:matrix-org/synapse into develop
						commit
						79a5fb469b
					
				|  | @ -1,3 +1,12 @@ | |||
| Changes in synapse 0.3.1 (2014-09-18) | ||||
| ===================================== | ||||
| This is a release to hotfix v0.3.0 to fix two regressions. | ||||
| 
 | ||||
| Webclient: | ||||
|  * Fix a regression where we sometimes displayed duplicate events. | ||||
|  * Fix a regression where we didn't immediately remove rooms you were | ||||
|    banned in from the recents list. | ||||
| 
 | ||||
| Changes in synapse 0.3.0 (2014-09-18) | ||||
| ===================================== | ||||
| See UPGRADE for information about changes to the client server API, including | ||||
|  |  | |||
|  | @ -16,4 +16,4 @@ | |||
| """ This is a reference implementation of a synapse home server. | ||||
| """ | ||||
| 
 | ||||
| __version__ = "0.3.0" | ||||
| __version__ = "0.3.1" | ||||
|  |  | |||
|  | @ -232,20 +232,12 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { | |||
|     }; | ||||
|      | ||||
|     var handleRoomMember = function(event, isLiveEvent, isStateEvent) { | ||||
|         // if the server is stupidly re-relaying a no-op join, discard it.
 | ||||
|         if (event.prev_content &&  | ||||
|             event.content.membership === "join" && | ||||
|             event.content.membership === event.prev_content.membership) | ||||
|         { | ||||
|             return; | ||||
|         } | ||||
|          | ||||
|         // add membership changes as if they were a room message if something interesting changed
 | ||||
|         // Exception: Do not do this if the event is a room state event because such events already come
 | ||||
|         // as room messages events. Moreover, when they come as room messages events, they are relatively ordered
 | ||||
|         // with other other room messages XXX This is no longer true, you only get a single event, not a room message event.
 | ||||
|         // FIXME: This possibly reintroduces multiple join messages.
 | ||||
|         if (event.content.prev !== event.content.membership) { // && !isStateEvent
 | ||||
|         // with other other room messages
 | ||||
|         if (event.content.prev !== event.content.membership && !isStateEvent) { | ||||
|             if (isLiveEvent) { | ||||
|                 $rootScope.events.rooms[event.room_id].messages.push(event); | ||||
|             } | ||||
|  | @ -376,7 +368,6 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { | |||
|                         handleMessage(event, isLiveEvent); | ||||
|                         break; | ||||
|                     case "m.room.member": | ||||
|                         isStateEvent = true; | ||||
|                         handleRoomMember(event, isLiveEvent, isStateEvent); | ||||
|                         break; | ||||
|                     case "m.presence": | ||||
|  | @ -406,8 +397,6 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { | |||
|         // isLiveEvents determines whether notifications should be shown, whether
 | ||||
|         // messages get appended to the start/end of lists, etc.
 | ||||
|         handleEvents: function(events, isLiveEvents, isStateEvents) { | ||||
|             // XXX FIXME TODO: isStateEvents is being left as undefined sometimes. It makes no sense
 | ||||
|             // to have isStateEvents as an arg, since things like m.room.member are ALWAYS state events.
 | ||||
|             for (var i=0; i<events.length; i++) { | ||||
|                 this.handleEvent(events[i], isLiveEvents, isStateEvents); | ||||
|             } | ||||
|  | @ -423,7 +412,6 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { | |||
|             if (dir && 'b' === dir) { | ||||
|                 // paginateBackMessages requests messages to be in reverse chronological order
 | ||||
|                 for (var i=0; i<events.length; i++) { | ||||
|                     // FIXME: Being live != being state
 | ||||
|                     this.handleEvent(events[i], isLiveEvents, isLiveEvents); | ||||
|                 } | ||||
|                  | ||||
|  | @ -433,7 +421,6 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) { | |||
|             else { | ||||
|                 // InitialSync returns messages in chronological order
 | ||||
|                 for (var i=events.length - 1; i>=0; i--) { | ||||
|                     // FIXME: Being live != being state
 | ||||
|                     this.handleEvent(events[i], isLiveEvents, isLiveEvents); | ||||
|                 } | ||||
|                 // Store where to start pagination
 | ||||
|  |  | |||
|  | @ -19,14 +19,13 @@ | |||
| angular.module('RecentsController') | ||||
| .filter('orderRecents', ["matrixService", "eventHandlerService", function(matrixService, eventHandlerService) { | ||||
|     return function(rooms) { | ||||
| 
 | ||||
|         var user_id = matrixService.config().user_id; | ||||
| 
 | ||||
|         // Transform the dict into an array
 | ||||
|         // The key, room_id, is already in value objects
 | ||||
|         var filtered = []; | ||||
|         angular.forEach(rooms, function(room, room_id) { | ||||
| 
 | ||||
|              | ||||
|             // Show the room only if the user has joined it or has been invited
 | ||||
|             // (ie, do not show it if he has been banned)
 | ||||
|             var member = eventHandlerService.getMember(room_id, user_id); | ||||
|  | @ -35,8 +34,9 @@ angular.module('RecentsController') | |||
|                 // Count users here
 | ||||
|                 // TODO: Compute it directly in eventHandlerService
 | ||||
|                 room.numUsersInRoom = eventHandlerService.getUsersCountInRoom(room_id); | ||||
| 
 | ||||
|                 filtered.push(room); | ||||
|             } | ||||
|             filtered.push(room); | ||||
|         }); | ||||
| 
 | ||||
|         // And time sort them
 | ||||
|  | @ -60,4 +60,4 @@ angular.module('RecentsController') | |||
|         }); | ||||
|         return filtered; | ||||
|     }; | ||||
| }]); | ||||
| }]); | ||||
		Loading…
	
		Reference in New Issue
	
	 Erik Johnston
						Erik Johnston