Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Apply & bundle edits for non-message events. (#14034)
Browse files Browse the repository at this point in the history
Fixes two related bugs:

* No edit information was bundled for events which aren't `m.room.message`.
* `m.new_content` was not applied for those events.
  • Loading branch information
clokep authored Oct 7, 2022
1 parent 8074430 commit ab8047b
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 7 deletions.
1 change: 1 addition & 0 deletions changelog.d/14034.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix a long-standing bug where edits of non-`m.room.message` events would not be correctly bundled or have their new content applied.
11 changes: 4 additions & 7 deletions synapse/storage/databases/main/relations.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,12 +384,11 @@ async def get_applicable_edits(
the event will map to None.
"""

# We only allow edits for `m.room.message` events that have the same sender
# and event type. We can't assert these things during regular event auth so
# we have to do the checks post hoc.
# We only allow edits for events that have the same sender and event type.
# We can't assert these things during regular event auth so we have to do
# the checks post hoc.

# Fetches latest edit that has the same type and sender as the
# original, and is an `m.room.message`.
# Fetches latest edit that has the same type and sender as the original.
if isinstance(self.database_engine, PostgresEngine):
# The `DISTINCT ON` clause will pick the *first* row it encounters,
# so ordering by origin server ts + event ID desc will ensure we get
Expand All @@ -405,7 +404,6 @@ async def get_applicable_edits(
WHERE
%s
AND relation_type = ?
AND edit.type = 'm.room.message'
ORDER by original.event_id DESC, edit.origin_server_ts DESC, edit.event_id DESC
"""
else:
Expand All @@ -424,7 +422,6 @@ async def get_applicable_edits(
WHERE
%s
AND relation_type = ?
AND edit.type = 'm.room.message'
ORDER by edit.origin_server_ts, edit.event_id
"""

Expand Down

0 comments on commit ab8047b

Please sign in to comment.