Compare commits

...

3 Commits

Author SHA1 Message Date
Erik Johnston
9fd0c74e90 Bump changelog and versions 2014-09-18 14:46:23 +01:00
Emmanuel ROHEE
b7d42c1e93 SYWEB-40: Only local rooms are shown in the recents list.
Removed an old patch that deduplicated join events. This patch is now useless. Plus it is buggy since it compared event.content and event.prev_content only on the membership field whereas these objects contain more data now like displayname...
2014-09-18 15:28:52 +02:00
Emmanuel ROHEE
0db0528e8e Reverted patches done for SYWEB-40 2014-09-18 15:19:35 +02:00
5 changed files with 17 additions and 21 deletions

View File

@@ -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

View File

@@ -1 +1 @@
0.3.0
0.3.1

View File

@@ -16,4 +16,4 @@
""" This is a reference implementation of a synapse home server.
"""
__version__ = "0.3.0"
__version__ = "0.3.1"

View File

@@ -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

View File

@@ -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;
};
}]);
}]);