Include room states on invite events sent to ASes (#6455)

pull/7824/head
Sorunome 2020-07-10 19:44:56 +02:00 committed by GitHub
parent 6cef918a4b
commit 1bca21e1da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 4 deletions

1
changelog.d/6455.feature Normal file
View File

@ -0,0 +1 @@
Include room states on invite events that are sent to application services. Contributed by @Sorunome.

View File

@ -19,7 +19,7 @@ from prometheus_client import Counter
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
@ -207,7 +207,7 @@ class ApplicationServiceApi(SimpleHttpClient):
if service.url is None:
return True
events = self._serialize(events)
events = self._serialize(service, events)
if txn_id is None:
logger.warning(
@ -233,6 +233,18 @@ class ApplicationServiceApi(SimpleHttpClient):
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
]