Merge pull request #2160 from matrix-org/bwindels/selfmembershipaction

only dispatch an action for self-membership
This commit is contained in:
Bruno Windels 2018-09-10 17:30:41 +02:00 committed by GitHub
commit ab931e0f62
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 9 deletions

View file

@ -149,9 +149,9 @@ function createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTi
*/ */
/** /**
* Create a MatrixActions.RoomMember.membership action that represents * Create a MatrixActions.Room.selfMembership action that represents
* a MatrixClient `RoomMember.membership` matrix event, emitted when a * a MatrixClient `RoomMember.membership` matrix event for the syncing user,
* member's membership is updated. * emitted when the member's membership is updated.
* *
* @param {MatrixClient} matrixClient the matrix client. * @param {MatrixClient} matrixClient the matrix client.
* @param {MatrixEvent} membershipEvent the m.room.member event. * @param {MatrixEvent} membershipEvent the m.room.member event.
@ -159,8 +159,11 @@ function createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTi
* @param {string} oldMembership the member's previous membership. * @param {string} oldMembership the member's previous membership.
* @returns {RoomMembershipAction} an action of type `MatrixActions.RoomMember.membership`. * @returns {RoomMembershipAction} an action of type `MatrixActions.RoomMember.membership`.
*/ */
function createRoomMembershipAction(matrixClient, membershipEvent, member, oldMembership) { function createSelfRoomMembershipAction(matrixClient, membershipEvent, member, oldMembership) {
return { action: 'MatrixActions.RoomMember.membership', member }; if (member.userId === matrixClient.getUserId()) {
return { action: 'MatrixActions.Room.selfMembership', member };
}
return null;
} }
/** /**
@ -202,7 +205,7 @@ export default {
this._addMatrixClientListener(matrixClient, 'Room', createRoomAction); this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);
this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction); this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);
this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction); this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);
this._addMatrixClientListener(matrixClient, 'RoomMember.membership', createRoomMembershipAction); this._addMatrixClientListener(matrixClient, 'RoomMember.membership', createSelfRoomMembershipAction);
this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction); this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction);
}, },
@ -217,7 +220,10 @@ export default {
*/ */
_addMatrixClientListener(matrixClient, eventName, actionCreator) { _addMatrixClientListener(matrixClient, eventName, actionCreator) {
const listener = (...args) => { const listener = (...args) => {
dis.dispatch(actionCreator(matrixClient, ...args), true); const payload = actionCreator(matrixClient, ...args);
if (payload) {
dis.dispatch(payload, true);
}
}; };
matrixClient.on(eventName, listener); matrixClient.on(eventName, listener);
this._matrixClientListenersStop.push(() => { this._matrixClientListenersStop.push(() => {

View file

@ -120,8 +120,7 @@ class RoomListStore extends Store {
this._generateRoomLists(); this._generateRoomLists();
} }
break; break;
case 'MatrixActions.RoomMember.membership': { case 'MatrixActions.Room.selfMembership': {
if (!this._matrixClient || payload.member.userId !== this._matrixClient.credentials.userId) break;
this._generateRoomLists(); this._generateRoomLists();
} }
break; break;