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

This commit is contained in:
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 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.api.errors import CodeMessageException
from synapse.events.utils import serialize_event from synapse.events.utils import serialize_event
from synapse.http.client import SimpleHttpClient from synapse.http.client import SimpleHttpClient
@ -207,7 +207,7 @@ class ApplicationServiceApi(SimpleHttpClient):
if service.url is None: if service.url is None:
return True return True
events = self._serialize(events) events = self._serialize(service, events)
if txn_id is None: if txn_id is None:
logger.warning( logger.warning(
@ -233,6 +233,18 @@ class ApplicationServiceApi(SimpleHttpClient):
failed_transactions_counter.labels(service.id).inc() failed_transactions_counter.labels(service.id).inc()
return False return False
def _serialize(self, events): def _serialize(self, service, events):
time_now = self.clock.time_msec() 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
]