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

Include room states on invite events sent to ASes #6455

Merged
merged 7 commits into from
Jul 10, 2020
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/6455.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Send invite states to Appservices.
richvdh marked this conversation as resolved.
Show resolved Hide resolved
20 changes: 16 additions & 4 deletions synapse/appservice/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

from twisted.internet import defer

from synapse.api.constants import ThirdPartyEntityKind
from synapse.api.constants import EventTypes, ThirdPartyEntityKind
from synapse.api.errors import CodeMessageException
from synapse.events.utils import serialize_event
from synapse.http.client import SimpleHttpClient
Expand Down Expand Up @@ -209,7 +209,7 @@ def push_bulk(self, service, events, txn_id=None):
if service.url is None:
return True

events = self._serialize(events)
events = self._serialize(service, events)

if txn_id is None:
logger.warning(
Expand All @@ -235,6 +235,18 @@ def push_bulk(self, service, events, txn_id=None):
failed_transactions_counter.labels(service.id).inc()
return False

def _serialize(self, events):
def _serialize(self, service, events):
time_now = self.clock.time_msec()
return [serialize_event(e, time_now, as_client_event=True) for e in events]
return [
serialize_event(
e,
time_now,
as_client_event=True,
is_invite=(
e.type == EventTypes.Member
and e.membership == "invite"
and service.is_interested_in_user(e.state_key)
),
)
for e in events
]