|
@@ -38,6 +38,7 @@ from synapse.types import (
|
|
|
JsonDict,
|
|
|
RoomAlias,
|
|
|
RoomStreamToken,
|
|
|
+ StreamKeyType,
|
|
|
UserID,
|
|
|
)
|
|
|
from synapse.util.async_helpers import Linearizer
|
|
@@ -213,8 +214,8 @@ class ApplicationServicesHandler:
|
|
|
Args:
|
|
|
stream_key: The stream the event came from.
|
|
|
|
|
|
- `stream_key` can be "typing_key", "receipt_key", "presence_key",
|
|
|
- "to_device_key" or "device_list_key". Any other value for `stream_key`
|
|
|
+ `stream_key` can be StreamKeyType.TYPING, StreamKeyType.RECEIPT, StreamKeyType.PRESENCE,
|
|
|
+ StreamKeyType.TO_DEVICE or StreamKeyType.DEVICE_LIST. Any other value for `stream_key`
|
|
|
will cause this function to return early.
|
|
|
|
|
|
Ephemeral events will only be pushed to appservices that have opted into
|
|
@@ -235,11 +236,11 @@ class ApplicationServicesHandler:
|
|
|
# Only the following streams are currently supported.
|
|
|
# FIXME: We should use constants for these values.
|
|
|
if stream_key not in (
|
|
|
- "typing_key",
|
|
|
- "receipt_key",
|
|
|
- "presence_key",
|
|
|
- "to_device_key",
|
|
|
- "device_list_key",
|
|
|
+ StreamKeyType.TYPING,
|
|
|
+ StreamKeyType.RECEIPT,
|
|
|
+ StreamKeyType.PRESENCE,
|
|
|
+ StreamKeyType.TO_DEVICE,
|
|
|
+ StreamKeyType.DEVICE_LIST,
|
|
|
):
|
|
|
return
|
|
|
|
|
@@ -258,14 +259,14 @@ class ApplicationServicesHandler:
|
|
|
|
|
|
# Ignore to-device messages if the feature flag is not enabled
|
|
|
if (
|
|
|
- stream_key == "to_device_key"
|
|
|
+ stream_key == StreamKeyType.TO_DEVICE
|
|
|
and not self._msc2409_to_device_messages_enabled
|
|
|
):
|
|
|
return
|
|
|
|
|
|
# Ignore device lists if the feature flag is not enabled
|
|
|
if (
|
|
|
- stream_key == "device_list_key"
|
|
|
+ stream_key == StreamKeyType.DEVICE_LIST
|
|
|
and not self._msc3202_transaction_extensions_enabled
|
|
|
):
|
|
|
return
|
|
@@ -283,15 +284,15 @@ class ApplicationServicesHandler:
|
|
|
if (
|
|
|
stream_key
|
|
|
in (
|
|
|
- "typing_key",
|
|
|
- "receipt_key",
|
|
|
- "presence_key",
|
|
|
- "to_device_key",
|
|
|
+ StreamKeyType.TYPING,
|
|
|
+ StreamKeyType.RECEIPT,
|
|
|
+ StreamKeyType.PRESENCE,
|
|
|
+ StreamKeyType.TO_DEVICE,
|
|
|
)
|
|
|
and service.supports_ephemeral
|
|
|
)
|
|
|
or (
|
|
|
- stream_key == "device_list_key"
|
|
|
+ stream_key == StreamKeyType.DEVICE_LIST
|
|
|
and service.msc3202_transaction_extensions
|
|
|
)
|
|
|
]
|
|
@@ -317,7 +318,7 @@ class ApplicationServicesHandler:
|
|
|
logger.debug("Checking interested services for %s", stream_key)
|
|
|
with Measure(self.clock, "notify_interested_services_ephemeral"):
|
|
|
for service in services:
|
|
|
- if stream_key == "typing_key":
|
|
|
+ if stream_key == StreamKeyType.TYPING:
|
|
|
# Note that we don't persist the token (via set_appservice_stream_type_pos)
|
|
|
# for typing_key due to performance reasons and due to their highly
|
|
|
# ephemeral nature.
|
|
@@ -333,7 +334,7 @@ class ApplicationServicesHandler:
|
|
|
async with self._ephemeral_events_linearizer.queue(
|
|
|
(service.id, stream_key)
|
|
|
):
|
|
|
- if stream_key == "receipt_key":
|
|
|
+ if stream_key == StreamKeyType.RECEIPT:
|
|
|
events = await self._handle_receipts(service, new_token)
|
|
|
self.scheduler.enqueue_for_appservice(service, ephemeral=events)
|
|
|
|
|
@@ -342,7 +343,7 @@ class ApplicationServicesHandler:
|
|
|
service, "read_receipt", new_token
|
|
|
)
|
|
|
|
|
|
- elif stream_key == "presence_key":
|
|
|
+ elif stream_key == StreamKeyType.PRESENCE:
|
|
|
events = await self._handle_presence(service, users, new_token)
|
|
|
self.scheduler.enqueue_for_appservice(service, ephemeral=events)
|
|
|
|
|
@@ -351,7 +352,7 @@ class ApplicationServicesHandler:
|
|
|
service, "presence", new_token
|
|
|
)
|
|
|
|
|
|
- elif stream_key == "to_device_key":
|
|
|
+ elif stream_key == StreamKeyType.TO_DEVICE:
|
|
|
# Retrieve a list of to-device message events, as well as the
|
|
|
# maximum stream token of the messages we were able to retrieve.
|
|
|
to_device_messages = await self._get_to_device_messages(
|
|
@@ -366,7 +367,7 @@ class ApplicationServicesHandler:
|
|
|
service, "to_device", new_token
|
|
|
)
|
|
|
|
|
|
- elif stream_key == "device_list_key":
|
|
|
+ elif stream_key == StreamKeyType.DEVICE_LIST:
|
|
|
device_list_summary = await self._get_device_list_summary(
|
|
|
service, new_token
|
|
|
)
|