SYN-149: Send join event immediately after the room create event

pull/19/head
Mark Haines 2014-11-18 15:29:48 +00:00
parent a5b88c489e
commit ae9c2ab165
3 changed files with 31 additions and 26 deletions

View File

@ -21,8 +21,6 @@ from synapse.api.errors import SynapseError
from synapse.api.events.room import RoomAliasesEvent
import logging
import sqlite3
logger = logging.getLogger(__name__)

View File

@ -120,12 +120,20 @@ class RoomCreationHandler(BaseHandler):
user, room_id, is_public=is_public
)
room_member_handler = self.hs.get_handlers().room_member_handler
@defer.inlineCallbacks
def handle_event(event):
snapshot = yield self.store.snapshot_room(event)
logger.debug("Event: %s", event)
if event.type == RoomMemberEvent.TYPE:
yield room_member_handler.change_membership(
event,
do_auth=False
)
else:
yield self._on_new_room_event(
event, snapshot, extra_users=[user], suppress_auth=True
)
@ -155,16 +163,6 @@ class RoomCreationHandler(BaseHandler):
yield handle_event(topic_event)
content = {"membership": Membership.JOIN}
join_event = self.event_factory.create_event(
etype=RoomMemberEvent.TYPE,
state_key=user_id,
room_id=room_id,
user_id=user_id,
membership=Membership.JOIN,
content=content
)
content = {"membership": Membership.INVITE}
for invitee in invite_list:
invite_event = self.event_factory.create_event(
@ -174,16 +172,7 @@ class RoomCreationHandler(BaseHandler):
user_id=user_id,
content=content
)
yield self.hs.get_handlers().room_member_handler.change_membership(
invite_event,
do_auth=False
)
yield self.hs.get_handlers().room_member_handler.change_membership(
join_event,
do_auth=False
)
yield handle_event(invite_event)
result = {"room_id": room_id}
@ -194,9 +183,11 @@ class RoomCreationHandler(BaseHandler):
defer.returnValue(result)
def _create_events_for_new_room(self, creator, room_id, is_public=False):
creator_id = creator.to_string()
event_keys = {
"room_id": room_id,
"user_id": creator.to_string(),
"user_id": creator_id,
}
def create(etype, **content):
@ -211,6 +202,16 @@ class RoomCreationHandler(BaseHandler):
creator=creator.to_string(),
)
join_event = self.event_factory.create_event(
etype=RoomMemberEvent.TYPE,
state_key=creator_id,
content={
"membership": Membership.JOIN,
},
**event_keys
)
power_levels_event = self.event_factory.create_event(
etype=RoomPowerLevelsEvent.TYPE,
content={
@ -239,6 +240,7 @@ class RoomCreationHandler(BaseHandler):
return [
creation_event,
join_event,
power_levels_event,
join_rules_event,
]

View File

@ -14,10 +14,15 @@
# limitations under the License.
from ._base import SQLBaseStore
from synapse.api.errors import SynapseError
from twisted.internet import defer
from collections import namedtuple
import sqlite3
RoomAliasMapping = namedtuple(
"RoomAliasMapping",