Regenerate room lists on Room event

To make sure that we handle rooms that our
client has not seen previously, we regenerate
the room list when the room is stored -
which is indicated by the js-sdk by the
Room event.
This commit is contained in:
Luke Barnard 2018-02-20 17:57:46 +00:00
parent b5146001d6
commit 644ddbf9b9
2 changed files with 13 additions and 0 deletions

View File

@ -62,6 +62,10 @@ function createAccountDataAction(matrixClient, accountDataEvent) {
};
}
function createRoomAction(matrixClient, room) {
return { action: 'MatrixActions.Room', room };
}
function createRoomTagsAction(matrixClient, roomTagsEvent, room) {
return { action: 'MatrixActions.Room.tags', room };
}
@ -96,6 +100,7 @@ export default {
start(matrixClient) {
this._addMatrixClientListener(matrixClient, 'sync', createSyncAction);
this._addMatrixClientListener(matrixClient, 'accountData', createAccountDataAction);
this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);
this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);
this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);
this._addMatrixClientListener(matrixClient, 'RoomMember.membership', createRoomMembershipAction);

View File

@ -97,6 +97,14 @@ class RoomListStore extends Store {
this._generateRoomLists();
}
break;
// This could be a new room that we've been invited to, joined or created
// we won't get a RoomMember.membership for these cases if we're not already
// a member.
case 'MatrixActions.Room': {
if (!this._state.ready || !this._matrixClient.credentials.userId) break;
this._generateRoomLists();
}
break;
case 'RoomListActions.tagRoom.pending': {
// XXX: we only show one optimistic update at any one time.
// Ideally we should be making a list of in-flight requests