summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
Diffstat (limited to 'synapse')
-rw-r--r--synapse/storage/__init__.py2
-rw-r--r--synapse/storage/roommember.py36
2 files changed, 10 insertions, 28 deletions
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index 629c110bed..0dbae504b2 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -154,7 +154,7 @@ class DataStore(RoomMemberStore, RoomStore,
     @log_function
     def _persist_event_txn(self, txn, event, backfilled, stream_ordering=None):
         if event.type == RoomMemberEvent.TYPE:
-            self._store_room_member_from_event_txn(txn, event)
+            self._store_room_member_txn(txn, event)
         elif event.type == FeedbackEvent.TYPE:
             self._store_feedback_txn(txn, event)
         elif event.type == RoomNameEvent.TYPE:
diff --git a/synapse/storage/roommember.py b/synapse/storage/roommember.py
index 8cbc15356d..9a393e2568 100644
--- a/synapse/storage/roommember.py
+++ b/synapse/storage/roommember.py
@@ -26,55 +26,37 @@ logger = logging.getLogger(__name__)
 
 class RoomMemberStore(SQLBaseStore):
 
-    def _store_room_member_from_event_txn(self, txn, event):
-        self._store_room_member_txn(txn,
-            target_user_id=event.state_key,
-            sender_user_id=event.user_id,
-            room_id=event.room_id,
-            event_id=event.event_id,
-            membership=event.membership,
-        )
-
-    def _store_room_member_txn(self, txn, target_user_id, sender_user_id,
-            room_id, event_id, membership):
+    def _store_room_member_txn(self, txn, event):
         """Store a room member in the database.
         """
+        target_user_id = event.state_key
         domain = self.hs.parse_userid(target_user_id).domain
 
         self._simple_insert_txn(
             txn,
             "room_memberships",
             {
-                "event_id": event_id,
+                "event_id": event.event_id,
                 "user_id": target_user_id,
-                "sender": sender_user_id,
-                "room_id": room_id,
-                "membership": membership,
+                "sender": event.user_id,
+                "room_id": event.room_id,
+                "membership": event.membership,
             }
         )
 
         # Update room hosts table
-        # TODO(paul): This code is massively broken currently as it doesn't
-        #   count users per room - meaning it'll delete on the FIRST user to
-        #   have a membership other than JOIN - say, LEAVE, or even INVITE.
-        # FIXME
-        if membership == Membership.JOIN:
+        if event.membership == Membership.JOIN:
             sql = (
                 "INSERT OR IGNORE INTO room_hosts (room_id, host) "
                 "VALUES (?, ?)"
             )
-            txn.execute(sql, (room_id, domain))
+            txn.execute(sql, (event.room_id, domain))
         else:
             sql = (
                 "DELETE FROM room_hosts WHERE room_id = ? AND host = ?"
             )
 
-            txn.execute(sql, (room_id, domain))
-
-    def store_room_member(self, user_id, room_id, event_id, membership):
-        return self.runInteraction(self._store_room_member_txn,
-            user_id, user_id, room_id, event_id, membership
-        )
+            txn.execute(sql, (event.room_id, domain))
 
     @defer.inlineCallbacks
     def get_room_member(self, user_id, room_id):