From 3624952372bbe4609c8b336ff88706bf2a29b558 Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Fri, 14 Jul 2017 11:02:47 +0100 Subject: [PATCH] Fixed membership removal --- .../clientapi/auth/storage/accounts/storage.go | 13 ++++++++++--- .../dendrite/clientapi/consumers/roomserver.go | 4 ++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/storage.go b/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/storage.go index a8631b201..4137f3596 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/storage.go +++ b/src/github.com/matrix-org/dendrite/clientapi/auth/storage/accounts/storage.go @@ -122,10 +122,17 @@ func (d *Database) SaveMembership(localpart string, roomID string, eventID strin return d.memberships.insertMembership(localpart, roomID, eventID) } -// RemoveMembership removes the membership of which the `join` membership event -// ID matches with the given event ID. +// RemoveMembership removes the membership linking the user matching a given +// localpart and the room matching a given room ID. // If the removal fails, or if there is no membership to remove, returns an error -func (d *Database) RemoveMembership(eventID string) error { +func (d *Database) RemoveMembership(localpart string, roomID string) error { + return d.memberships.deleteMembership(localpart, roomID) +} + +// RemoveMembershipByEventID removes the membership of which the `join` membership +// event ID matches a given event ID +// If the removal fails, or if there is no membership to remove, returns an error +func (d *Database) RemoveMembershipByEventID(eventID string) error { return d.memberships.deleteMembershipByEventID(eventID) } 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 9490ec1b4..ea6ddf555 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go +++ b/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go @@ -101,7 +101,7 @@ func (s *OutputRoomEvent) onMessage(msg *sarama.ConsumerMessage) error { } for _, id := range output.NewRoomEvent.RemovesStateEventIDs { - if err := s.db.RemoveMembership(id); err != nil { + if err := s.db.RemoveMembershipByEventID(id); err != nil { return err } } @@ -183,7 +183,7 @@ func (s *OutputRoomEvent) updateMembership(ev gomatrixserverlib.Event) error { } case "leave": case "ban": - if err := s.db.RemoveMembership(eventID); err != nil { + if err := s.db.RemoveMembership(localpart, roomID); err != nil { return err } }