mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-17 02:53:57 +01:00
Patch for SYWEB-40 : isStateEvent is not being set correctly, and really shouldn't be a configurable arg in the first place. As a result of being undefined, the events.rooms[rid].members object was not being updated in some cases, which combined with the recents-filter bug (32808e4
), caused federated rooms to not appear in the recents list.
This commit is contained in:
parent
32808e4111
commit
fbf221ae6d
1 changed files with 8 additions and 2 deletions
|
@ -243,8 +243,9 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
// add membership changes as if they were a room message if something interesting changed
|
// 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
|
// 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
|
// as room messages events. Moreover, when they come as room messages events, they are relatively ordered
|
||||||
// with other other room messages
|
// with other other room messages XXX This is no longer true, you only get a single event, not a room message event.
|
||||||
if (event.content.prev !== event.content.membership && !isStateEvent) {
|
// FIXME: This possibly reintroduces multiple join messages.
|
||||||
|
if (event.content.prev !== event.content.membership) { // && !isStateEvent
|
||||||
if (isLiveEvent) {
|
if (isLiveEvent) {
|
||||||
$rootScope.events.rooms[event.room_id].messages.push(event);
|
$rootScope.events.rooms[event.room_id].messages.push(event);
|
||||||
}
|
}
|
||||||
|
@ -375,6 +376,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
handleMessage(event, isLiveEvent);
|
handleMessage(event, isLiveEvent);
|
||||||
break;
|
break;
|
||||||
case "m.room.member":
|
case "m.room.member":
|
||||||
|
isStateEvent = true;
|
||||||
handleRoomMember(event, isLiveEvent, isStateEvent);
|
handleRoomMember(event, isLiveEvent, isStateEvent);
|
||||||
break;
|
break;
|
||||||
case "m.presence":
|
case "m.presence":
|
||||||
|
@ -404,6 +406,8 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
// isLiveEvents determines whether notifications should be shown, whether
|
// isLiveEvents determines whether notifications should be shown, whether
|
||||||
// messages get appended to the start/end of lists, etc.
|
// messages get appended to the start/end of lists, etc.
|
||||||
handleEvents: function(events, isLiveEvents, isStateEvents) {
|
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++) {
|
for (var i=0; i<events.length; i++) {
|
||||||
this.handleEvent(events[i], isLiveEvents, isStateEvents);
|
this.handleEvent(events[i], isLiveEvents, isStateEvents);
|
||||||
}
|
}
|
||||||
|
@ -419,6 +423,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
if (dir && 'b' === dir) {
|
if (dir && 'b' === dir) {
|
||||||
// paginateBackMessages requests messages to be in reverse chronological order
|
// paginateBackMessages requests messages to be in reverse chronological order
|
||||||
for (var i=0; i<events.length; i++) {
|
for (var i=0; i<events.length; i++) {
|
||||||
|
// FIXME: Being live != being state
|
||||||
this.handleEvent(events[i], isLiveEvents, isLiveEvents);
|
this.handleEvent(events[i], isLiveEvents, isLiveEvents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,6 +433,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
else {
|
else {
|
||||||
// InitialSync returns messages in chronological order
|
// InitialSync returns messages in chronological order
|
||||||
for (var i=events.length - 1; i>=0; i--) {
|
for (var i=events.length - 1; i>=0; i--) {
|
||||||
|
// FIXME: Being live != being state
|
||||||
this.handleEvent(events[i], isLiveEvents, isLiveEvents);
|
this.handleEvent(events[i], isLiveEvents, isLiveEvents);
|
||||||
}
|
}
|
||||||
// Store where to start pagination
|
// Store where to start pagination
|
||||||
|
|
Loading…
Reference in a new issue