summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2020-08-03 17:29:28 -0700
committerAndrew Morgan <andrew@amorgan.xyz>2020-08-03 17:29:28 -0700
commitcf30af504d2e654ca1d658304f05f0442addba06 (patch)
treecfb08df2a82b52aa312cc37d701a181359d5a51a
parentMerge commit '6cef918a4' into anoa/dinsic_release_1_18_x (diff)
parentInclude room states on invite events sent to ASes (#6455) (diff)
downloadsynapse-cf30af504d2e654ca1d658304f05f0442addba06.tar.xz
Merge commit '1bca21e1d' into anoa/dinsic_release_1_18_x
* commit '1bca21e1d':
  Include room states on invite events sent to ASes (#6455)
-rw-r--r--changelog.d/6455.feature1
-rw-r--r--synapse/appservice/api.py20
2 files changed, 17 insertions, 4 deletions
diff --git a/changelog.d/6455.feature b/changelog.d/6455.feature
new file mode 100644

index 0000000000..eb286cb70f --- /dev/null +++ b/changelog.d/6455.feature
@@ -0,0 +1 @@ +Include room states on invite events that are sent to application services. Contributed by @Sorunome. diff --git a/synapse/appservice/api.py b/synapse/appservice/api.py
index f92bfb420b..1e0e4d497d 100644 --- a/synapse/appservice/api.py +++ b/synapse/appservice/api.py
@@ -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 + ]