From 013a0a3732517030b4b1aa3fce09168806946d3e Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Wed, 12 Jul 2017 19:05:17 +0100 Subject: [PATCH] Fixed membership not being saved on the right conditions + added membership removal --- .../dendrite/clientapi/consumers/roomserver.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go b/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go index 4c01cc3a5..5f3c813ff 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go +++ b/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go @@ -89,9 +89,21 @@ func (s *OutputRoomEvent) onMessage(msg *sarama.ConsumerMessage) error { if ev.Type() == "m.room.member" && ev.StateKey() != nil { localpart := getLocalPart(*ev.StateKey()) roomID := ev.RoomID() - if err := s.db.SaveMembership(localpart, roomID); err != nil { + membership, err := ev.Membership() + if err != nil { return err } + switch membership { + case "join": + if err := s.db.SaveMembership(localpart, roomID); err != nil { + return err + } + case "leave": + case "ban": + if err := s.db.RemoveMembership(localpart, roomID); err != nil { + return err + } + } } return nil