mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2024-09-09 15:22:11 +00:00
Split out sending the room alias events from creating the alias so that we can do them in the right point when creating a room
This commit is contained in:
parent
c571dd4f0e
commit
a5b88c489e
@ -56,17 +56,11 @@ class DirectoryHandler(BaseHandler):
|
|||||||
if not servers:
|
if not servers:
|
||||||
raise SynapseError(400, "Failed to get server list")
|
raise SynapseError(400, "Failed to get server list")
|
||||||
|
|
||||||
try:
|
yield self.store.create_room_alias_association(
|
||||||
yield self.store.create_room_alias_association(
|
room_alias,
|
||||||
room_alias,
|
room_id,
|
||||||
room_id,
|
servers
|
||||||
servers
|
)
|
||||||
)
|
|
||||||
except sqlite3.IntegrityError:
|
|
||||||
defer.returnValue("Already exists")
|
|
||||||
|
|
||||||
# TODO: Send the room event.
|
|
||||||
yield self._update_room_alias_events(user_id, room_id)
|
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def delete_association(self, user_id, room_alias):
|
def delete_association(self, user_id, room_alias):
|
||||||
@ -136,7 +130,7 @@ class DirectoryHandler(BaseHandler):
|
|||||||
})
|
})
|
||||||
|
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def _update_room_alias_events(self, user_id, room_id):
|
def send_room_alias_update_event(self, user_id, room_id):
|
||||||
aliases = yield self.store.get_aliases_for_room(room_id)
|
aliases = yield self.store.get_aliases_for_room(room_id)
|
||||||
|
|
||||||
event = self.event_factory.create_event(
|
event = self.event_factory.create_event(
|
||||||
|
@ -106,6 +106,15 @@ class RoomCreationHandler(BaseHandler):
|
|||||||
if not room_id:
|
if not room_id:
|
||||||
raise StoreError(500, "Couldn't generate a room ID.")
|
raise StoreError(500, "Couldn't generate a room ID.")
|
||||||
|
|
||||||
|
if room_alias:
|
||||||
|
directory_handler = self.hs.get_handlers().directory_handler
|
||||||
|
yield directory_handler.create_association(
|
||||||
|
user_id=user_id,
|
||||||
|
room_id=room_id,
|
||||||
|
room_alias=room_alias,
|
||||||
|
servers=[self.hs.hostname],
|
||||||
|
)
|
||||||
|
|
||||||
user = self.hs.parse_userid(user_id)
|
user = self.hs.parse_userid(user_id)
|
||||||
creation_events = self._create_events_for_new_room(
|
creation_events = self._create_events_for_new_room(
|
||||||
user, room_id, is_public=is_public
|
user, room_id, is_public=is_public
|
||||||
@ -180,13 +189,7 @@ class RoomCreationHandler(BaseHandler):
|
|||||||
|
|
||||||
if room_alias:
|
if room_alias:
|
||||||
result["room_alias"] = room_alias.to_string()
|
result["room_alias"] = room_alias.to_string()
|
||||||
directory_handler = self.hs.get_handlers().directory_handler
|
directory_handler.send_room_alias_update_event(user_id, room_id)
|
||||||
yield directory_handler.create_association(
|
|
||||||
user_id=user_id,
|
|
||||||
room_id=room_id,
|
|
||||||
room_alias=room_alias,
|
|
||||||
servers=[self.hs.hostname],
|
|
||||||
)
|
|
||||||
|
|
||||||
defer.returnValue(result)
|
defer.returnValue(result)
|
||||||
|
|
||||||
|
@ -70,9 +70,11 @@ class ClientDirectoryServer(RestServlet):
|
|||||||
dir_handler = self.handlers.directory_handler
|
dir_handler = self.handlers.directory_handler
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
user_id = user.to_string()
|
||||||
yield dir_handler.create_association(
|
yield dir_handler.create_association(
|
||||||
user.to_string(), room_alias, room_id, servers
|
user_id, room_alias, room_id, servers
|
||||||
)
|
)
|
||||||
|
yield dir_handler.send_room_alias_update_event(user_id, room_id)
|
||||||
except SynapseError as e:
|
except SynapseError as e:
|
||||||
raise e
|
raise e
|
||||||
except:
|
except:
|
||||||
|
@ -75,13 +75,18 @@ class DirectoryStore(SQLBaseStore):
|
|||||||
Returns:
|
Returns:
|
||||||
Deferred
|
Deferred
|
||||||
"""
|
"""
|
||||||
yield self._simple_insert(
|
try:
|
||||||
"room_aliases",
|
yield self._simple_insert(
|
||||||
{
|
"room_aliases",
|
||||||
"room_alias": room_alias.to_string(),
|
{
|
||||||
"room_id": room_id,
|
"room_alias": room_alias.to_string(),
|
||||||
},
|
"room_id": room_id,
|
||||||
)
|
},
|
||||||
|
)
|
||||||
|
except sqlite3.IntegrityError:
|
||||||
|
raise SynapseError(
|
||||||
|
409, "Room alias %s already exists" % room_alias.to_string()
|
||||||
|
)
|
||||||
|
|
||||||
for server in servers:
|
for server in servers:
|
||||||
# TODO(erikj): Fix this to bulk insert
|
# TODO(erikj): Fix this to bulk insert
|
||||||
|
Loading…
Reference in New Issue
Block a user