mirror of
https://github.com/element-hq/synapse.git
synced 2026-05-25 20:44:11 +00:00
Rename
This commit is contained in:
@@ -34,7 +34,7 @@ from synapse.config._base import ConfigError
|
||||
from synapse.config.homeserver import HomeServerConfig
|
||||
from synapse.config.logger import setup_logging
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.utils import ClientEvent
|
||||
from synapse.events.utils import FilteredEvent
|
||||
from synapse.handlers.admin import ExfiltrationWriter
|
||||
from synapse.server import HomeServer
|
||||
from synapse.storage.database import DatabasePool, LoggingDatabaseConnection
|
||||
@@ -151,7 +151,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
|
||||
if list(os.listdir(self.base_directory)):
|
||||
raise Exception("Directory must be empty")
|
||||
|
||||
def write_events(self, room_id: str, events: list[ClientEvent]) -> None:
|
||||
def write_events(self, room_id: str, events: list[FilteredEvent]) -> None:
|
||||
room_directory = os.path.join(self.base_directory, "rooms", room_id)
|
||||
os.makedirs(room_directory, exist_ok=True)
|
||||
events_file = os.path.join(room_directory, "events")
|
||||
@@ -176,7 +176,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
|
||||
def write_invite(
|
||||
self, room_id: str, event: EventBase, state: StateMap[EventBase]
|
||||
) -> None:
|
||||
self.write_events(room_id, [ClientEvent(event=event, membership=None)])
|
||||
self.write_events(room_id, [FilteredEvent(event=event, membership=None)])
|
||||
|
||||
# We write the invite state somewhere else as they aren't full events
|
||||
# and are only a subset of the state at the event.
|
||||
@@ -192,7 +192,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
|
||||
def write_knock(
|
||||
self, room_id: str, event: EventBase, state: StateMap[EventBase]
|
||||
) -> None:
|
||||
self.write_events(room_id, [ClientEvent(event=event, membership=None)])
|
||||
self.write_events(room_id, [FilteredEvent(event=event, membership=None)])
|
||||
|
||||
# We write the knock state somewhere else as they aren't full events
|
||||
# and are only a subset of the state at the event.
|
||||
|
||||
@@ -40,7 +40,7 @@ from synapse.appservice import (
|
||||
TransactionUnusedFallbackKeys,
|
||||
)
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.utils import ClientEvent, SerializeEventConfig
|
||||
from synapse.events.utils import FilteredEvent, SerializeEventConfig
|
||||
from synapse.http.client import SimpleHttpClient, is_unknown_endpoint
|
||||
from synapse.logging import opentracing
|
||||
from synapse.metrics import SERVER_NAME_LABEL
|
||||
@@ -545,7 +545,7 @@ class ApplicationServiceApi(SimpleHttpClient):
|
||||
) -> list[JsonDict]:
|
||||
time_now = self.clock.time_msec()
|
||||
return await self._event_serializer.serialize_events(
|
||||
[ClientEvent(event=e, membership=None) for e in events],
|
||||
[FilteredEvent(event=e, membership=None) for e in events],
|
||||
time_now,
|
||||
config=SerializeEventConfig(
|
||||
as_client_event=True,
|
||||
|
||||
@@ -418,7 +418,7 @@ def format_event_for_client_v2_without_room_id(d: JsonDict) -> JsonDict:
|
||||
|
||||
|
||||
@attr.s(slots=True, frozen=True, auto_attribs=True)
|
||||
class ClientEvent:
|
||||
class FilteredEvent:
|
||||
"""An event annotated with per-user data for client serialization.
|
||||
|
||||
Produced by filter_and_transform_events_for_client. Carries the user's
|
||||
@@ -430,13 +430,13 @@ class ClientEvent:
|
||||
membership: str | None
|
||||
|
||||
@classmethod
|
||||
def state(cls, event: "EventBase") -> "ClientEvent":
|
||||
def state(cls, event: "EventBase") -> "FilteredEvent":
|
||||
"""Wrap a state event with no per-user membership annotation.
|
||||
|
||||
The event must be a state event (i.e. have a state_key).
|
||||
"""
|
||||
assert event.is_state(), (
|
||||
f"ClientEvent.state() called with non-state event {event.event_id}"
|
||||
f"FilteredEvent.state() called with non-state event {event.event_id}"
|
||||
)
|
||||
return cls(event=event, membership=None)
|
||||
|
||||
@@ -631,7 +631,7 @@ class EventClientSerializer:
|
||||
|
||||
async def serialize_event(
|
||||
self,
|
||||
event: JsonDict | ClientEvent,
|
||||
event: JsonDict | FilteredEvent,
|
||||
time_now: int,
|
||||
*,
|
||||
config: SerializeEventConfig = _DEFAULT_SERIALIZE_EVENT_CONFIG,
|
||||
@@ -653,7 +653,7 @@ class EventClientSerializer:
|
||||
The serialized event
|
||||
"""
|
||||
# To handle the case of presence events and the like
|
||||
if not isinstance(event, ClientEvent):
|
||||
if not isinstance(event, FilteredEvent):
|
||||
return event
|
||||
|
||||
base_event = event.event
|
||||
@@ -769,7 +769,7 @@ class EventClientSerializer:
|
||||
# `sender` of the edit; however MSC3925 proposes extending it to the whole
|
||||
# of the edit, which is what we do here.
|
||||
serialized_aggregations[RelationTypes.REPLACE] = await self.serialize_event(
|
||||
ClientEvent(event=event_aggregations.replace, membership=None),
|
||||
FilteredEvent(event=event_aggregations.replace, membership=None),
|
||||
time_now,
|
||||
config=config,
|
||||
)
|
||||
@@ -779,7 +779,7 @@ class EventClientSerializer:
|
||||
thread = event_aggregations.thread
|
||||
|
||||
serialized_latest_event = await self.serialize_event(
|
||||
ClientEvent(event=thread.latest_event, membership=None),
|
||||
FilteredEvent(event=thread.latest_event, membership=None),
|
||||
time_now,
|
||||
config=config,
|
||||
bundle_aggregations=bundled_aggregations,
|
||||
@@ -804,7 +804,7 @@ class EventClientSerializer:
|
||||
@trace
|
||||
async def serialize_events(
|
||||
self,
|
||||
events: Collection[JsonDict | ClientEvent],
|
||||
events: Collection[JsonDict | FilteredEvent],
|
||||
time_now: int,
|
||||
*,
|
||||
config: SerializeEventConfig = _DEFAULT_SERIALIZE_EVENT_CONFIG,
|
||||
@@ -831,7 +831,7 @@ class EventClientSerializer:
|
||||
# Batch-fetch all redaction events in one go rather than one per event.
|
||||
redaction_ids: set[str] = set()
|
||||
for e in events:
|
||||
base = e.event if isinstance(e, ClientEvent) else e
|
||||
base = e.event if isinstance(e, FilteredEvent) else e
|
||||
if isinstance(base, EventBase):
|
||||
redacted_by = base.internal_metadata.redacted_by
|
||||
if redacted_by is not None:
|
||||
|
||||
@@ -33,7 +33,7 @@ import attr
|
||||
from synapse.api.constants import Direction, EventTypes, Membership
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.utils import ClientEvent
|
||||
from synapse.events.utils import FilteredEvent
|
||||
from synapse.types import (
|
||||
JsonMapping,
|
||||
Requester,
|
||||
@@ -520,7 +520,7 @@ class ExfiltrationWriter(metaclass=abc.ABCMeta):
|
||||
"""Interface used to specify how to write exported data."""
|
||||
|
||||
@abc.abstractmethod
|
||||
def write_events(self, room_id: str, events: list[ClientEvent]) -> None:
|
||||
def write_events(self, room_id: str, events: list[FilteredEvent]) -> None:
|
||||
"""Write a batch of events for a room."""
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ from typing import TYPE_CHECKING, Iterable
|
||||
|
||||
from synapse.api.constants import EduTypes, EventTypes, Membership, PresenceState
|
||||
from synapse.api.errors import AuthError, SynapseError
|
||||
from synapse.events.utils import ClientEvent, SerializeEventConfig
|
||||
from synapse.events.utils import FilteredEvent, SerializeEventConfig
|
||||
from synapse.handlers.presence import format_user_presence_state
|
||||
from synapse.storage.databases.main.events_worker import EventRedactBehaviour
|
||||
from synapse.streams.config import PaginationConfig
|
||||
@@ -101,7 +101,7 @@ class EventStreamHandler:
|
||||
# joined room, we need to send down presence for those users.
|
||||
to_add: list[JsonDict] = []
|
||||
for event in events:
|
||||
if not isinstance(event, ClientEvent):
|
||||
if not isinstance(event, FilteredEvent):
|
||||
continue
|
||||
if event.event.type == EventTypes.Member:
|
||||
if event.event.membership != Membership.JOIN:
|
||||
@@ -154,7 +154,7 @@ class EventHandler:
|
||||
room_id: str | None,
|
||||
event_id: str,
|
||||
show_redacted: bool = False,
|
||||
) -> ClientEvent | None:
|
||||
) -> FilteredEvent | None:
|
||||
"""Retrieve a single specified event on behalf of a user.
|
||||
The event will be transformed in a user-specific and time-specific way,
|
||||
e.g. having unsigned metadata added or being erased depending on who is accessing.
|
||||
|
||||
@@ -30,7 +30,7 @@ from synapse.api.constants import (
|
||||
Membership,
|
||||
)
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.events.utils import ClientEvent, SerializeEventConfig
|
||||
from synapse.events.utils import FilteredEvent, SerializeEventConfig
|
||||
from synapse.events.validator import EventValidator
|
||||
from synapse.handlers.presence import format_user_presence_state
|
||||
from synapse.handlers.receipts import ReceiptEventSource
|
||||
@@ -186,7 +186,7 @@ class InitialSyncHandler:
|
||||
|
||||
invite_event = await self.store.get_event(event.event_id)
|
||||
d["invite"] = await self._event_serializer.serialize_event(
|
||||
ClientEvent(event=invite_event, membership=None),
|
||||
FilteredEvent(event=invite_event, membership=None),
|
||||
time_now,
|
||||
config=serializer_options,
|
||||
)
|
||||
@@ -226,7 +226,7 @@ class InitialSyncHandler:
|
||||
).addErrback(unwrapFirstError)
|
||||
|
||||
client_messages: list[
|
||||
ClientEvent
|
||||
FilteredEvent
|
||||
] = await filter_and_transform_events_for_client(
|
||||
self._storage_controllers,
|
||||
user_id,
|
||||
@@ -252,7 +252,7 @@ class InitialSyncHandler:
|
||||
}
|
||||
|
||||
d["state"] = await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in current_state.values()],
|
||||
[FilteredEvent.state(e) for e in current_state.values()],
|
||||
time_now=time_now,
|
||||
config=serializer_options,
|
||||
)
|
||||
@@ -385,7 +385,7 @@ class InitialSyncHandler:
|
||||
)
|
||||
|
||||
client_messages: list[
|
||||
ClientEvent
|
||||
FilteredEvent
|
||||
] = await filter_and_transform_events_for_client(
|
||||
self._storage_controllers,
|
||||
requester.user.to_string(),
|
||||
@@ -415,7 +415,7 @@ class InitialSyncHandler:
|
||||
"state": (
|
||||
# Don't bundle aggregations as this is a deprecated API.
|
||||
await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in room_state.values()],
|
||||
[FilteredEvent.state(e) for e in room_state.values()],
|
||||
time_now,
|
||||
config=serialize_options,
|
||||
)
|
||||
@@ -441,7 +441,7 @@ class InitialSyncHandler:
|
||||
serialize_options = SerializeEventConfig(requester=requester)
|
||||
# Don't bundle aggregations as this is a deprecated API.
|
||||
state = await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in current_state.values()],
|
||||
[FilteredEvent.state(e) for e in current_state.values()],
|
||||
time_now,
|
||||
config=serialize_options,
|
||||
)
|
||||
@@ -503,7 +503,7 @@ class InitialSyncHandler:
|
||||
)
|
||||
|
||||
client_messages: list[
|
||||
ClientEvent
|
||||
FilteredEvent
|
||||
] = await filter_and_transform_events_for_client(
|
||||
self._storage_controllers,
|
||||
requester.user.to_string(),
|
||||
|
||||
@@ -62,7 +62,7 @@ from synapse.events.snapshot import (
|
||||
UnpersistedEventContextBase,
|
||||
)
|
||||
from synapse.events.utils import (
|
||||
ClientEvent,
|
||||
FilteredEvent,
|
||||
SerializeEventConfig,
|
||||
maybe_upsert_event_field,
|
||||
)
|
||||
@@ -265,7 +265,7 @@ class MessageHandler:
|
||||
room_state = room_state_events[membership_event_id]
|
||||
|
||||
events = await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in room_state.values()],
|
||||
[FilteredEvent.state(e) for e in room_state.values()],
|
||||
self.clock.time_msec(),
|
||||
config=SerializeEventConfig(requester=requester),
|
||||
)
|
||||
|
||||
@@ -29,7 +29,7 @@ from synapse.api.constants import Direction, EventTypes, Membership
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.api.filtering import Filter
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.utils import ClientEvent
|
||||
from synapse.events.utils import FilteredEvent
|
||||
from synapse.handlers.relations import BundledAggregations
|
||||
from synapse.handlers.worker_lock import NEW_EVENT_DURING_PURGE_LOCK_NAME
|
||||
from synapse.logging.opentracing import trace
|
||||
@@ -80,7 +80,7 @@ class GetMessagesResult:
|
||||
Everything needed to serialize a `/messages` response.
|
||||
"""
|
||||
|
||||
messages_chunk: list[ClientEvent]
|
||||
messages_chunk: list[FilteredEvent]
|
||||
"""
|
||||
A list of room events.
|
||||
|
||||
@@ -692,9 +692,9 @@ class PaginationHandler:
|
||||
is_peeking=(member_event_id is None),
|
||||
)
|
||||
else:
|
||||
client_events = [ClientEvent(event=e, membership=None) for e in events]
|
||||
client_events = [FilteredEvent(event=e, membership=None) for e in events]
|
||||
|
||||
client_events_result: list[ClientEvent] = client_events
|
||||
client_events_result: list[FilteredEvent] = client_events
|
||||
|
||||
# if after the filter applied there are no more events
|
||||
# return immediately - but there might be more in next_token batch
|
||||
|
||||
@@ -33,7 +33,7 @@ import attr
|
||||
from synapse.api.constants import Direction, EventTypes, RelationTypes
|
||||
from synapse.api.errors import SynapseError
|
||||
from synapse.events import EventBase, relation_from_event
|
||||
from synapse.events.utils import ClientEvent, SerializeEventConfig
|
||||
from synapse.events.utils import FilteredEvent, SerializeEventConfig
|
||||
from synapse.logging.context import make_deferred_yieldable, run_in_background
|
||||
from synapse.logging.opentracing import trace
|
||||
from synapse.storage.databases.main.relations import ThreadsNextBatch, _RelatedEvent
|
||||
@@ -154,7 +154,7 @@ class RelationsHandler:
|
||||
[e.event_id for e in related_events]
|
||||
)
|
||||
|
||||
client_events: list[ClientEvent] = await filter_and_transform_events_for_client(
|
||||
client_events: list[FilteredEvent] = await filter_and_transform_events_for_client(
|
||||
self._storage_controllers,
|
||||
user_id,
|
||||
events,
|
||||
@@ -432,7 +432,7 @@ class RelationsHandler:
|
||||
|
||||
@trace
|
||||
async def get_bundled_aggregations(
|
||||
self, events: Iterable[EventBase | ClientEvent], user_id: str
|
||||
self, events: Iterable[EventBase | FilteredEvent], user_id: str
|
||||
) -> dict[str, BundledAggregations]:
|
||||
"""Generate bundled aggregations for events.
|
||||
|
||||
@@ -449,8 +449,8 @@ class RelationsHandler:
|
||||
The results may include additional events which are related to the
|
||||
requested events.
|
||||
"""
|
||||
# Unwrap ClientEvent wrappers to get bare EventBase objects.
|
||||
base_events = [e.event if isinstance(e, ClientEvent) else e for e in events]
|
||||
# Unwrap FilteredEvent wrappers to get bare EventBase objects.
|
||||
base_events = [e.event if isinstance(e, FilteredEvent) else e for e in events]
|
||||
|
||||
# De-duplicated events by ID to handle the same event requested multiple times.
|
||||
events_by_id = {}
|
||||
@@ -602,7 +602,7 @@ class RelationsHandler:
|
||||
# Limit the returned threads to those the user has participated in.
|
||||
events = [event for event in events if participated[event.event_id]]
|
||||
|
||||
client_events: list[ClientEvent] = await filter_and_transform_events_for_client(
|
||||
client_events: list[FilteredEvent] = await filter_and_transform_events_for_client(
|
||||
self._storage_controllers,
|
||||
user_id,
|
||||
events,
|
||||
|
||||
@@ -67,7 +67,7 @@ from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion
|
||||
from synapse.event_auth import validate_event_for_room_version
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.snapshot import UnpersistedEventContext
|
||||
from synapse.events.utils import ClientEvent, copy_and_fixup_power_levels_contents
|
||||
from synapse.events.utils import FilteredEvent, copy_and_fixup_power_levels_contents
|
||||
from synapse.handlers.relations import BundledAggregations
|
||||
from synapse.rest.admin._base import assert_user_is_admin
|
||||
from synapse.streams import EventSource
|
||||
@@ -109,9 +109,9 @@ FIVE_MINUTES_IN_MS = 5 * 60 * 1000
|
||||
|
||||
@attr.s(slots=True, frozen=True, auto_attribs=True)
|
||||
class EventContext:
|
||||
events_before: list[ClientEvent]
|
||||
event: ClientEvent
|
||||
events_after: list[ClientEvent]
|
||||
events_before: list[FilteredEvent]
|
||||
event: FilteredEvent
|
||||
events_after: list[FilteredEvent]
|
||||
state: list[EventBase]
|
||||
aggregations: dict[str, BundledAggregations]
|
||||
start: str
|
||||
@@ -1916,9 +1916,9 @@ class RoomContextHandler:
|
||||
# The user is peeking if they aren't in the room already
|
||||
is_peeking = not is_user_in_room
|
||||
|
||||
async def filter_evts(events: list[EventBase]) -> list[ClientEvent]:
|
||||
async def filter_evts(events: list[EventBase]) -> list[FilteredEvent]:
|
||||
if use_admin_priviledge:
|
||||
return [ClientEvent(event=e, membership=None) for e in events]
|
||||
return [FilteredEvent(event=e, membership=None) for e in events]
|
||||
return await filter_and_transform_events_for_client(
|
||||
self._storage_controllers,
|
||||
user.to_string(),
|
||||
|
||||
@@ -29,7 +29,7 @@ from unpaddedbase64 import decode_base64, encode_base64
|
||||
from synapse.api.constants import EventTypes, Membership
|
||||
from synapse.api.errors import NotFoundError, SynapseError
|
||||
from synapse.api.filtering import Filter
|
||||
from synapse.events.utils import ClientEvent, SerializeEventConfig
|
||||
from synapse.events.utils import FilteredEvent, SerializeEventConfig
|
||||
from synapse.types import JsonDict, Requester, StrCollection, StreamKeyType, UserID
|
||||
from synapse.types.state import StateFilter
|
||||
from synapse.visibility import filter_and_transform_events_for_client
|
||||
@@ -47,7 +47,7 @@ class _SearchResult:
|
||||
# A mapping of event ID to the rank of that event.
|
||||
rank_map: dict[str, int]
|
||||
# A list of the resulting events.
|
||||
allowed_events: list[ClientEvent]
|
||||
allowed_events: list[FilteredEvent]
|
||||
# A map of room ID to results.
|
||||
room_groups: dict[str, JsonDict]
|
||||
# A set of event IDs to highlight.
|
||||
@@ -359,7 +359,7 @@ class SearchHandler:
|
||||
state_results[room_id] = list(state.values())
|
||||
|
||||
aggregations = await self._relations_handler.get_bundled_aggregations(
|
||||
# Generate an iterable of ClientEvent for all the events that will be
|
||||
# Generate an iterable of FilteredEvent for all the events that will be
|
||||
# returned, including contextual events.
|
||||
itertools.chain(
|
||||
# The events_before and events_after for each context.
|
||||
@@ -416,7 +416,7 @@ class SearchHandler:
|
||||
if state_results:
|
||||
rooms_cat_res["state"] = {
|
||||
room_id: await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in state_events],
|
||||
[FilteredEvent.state(e) for e in state_events],
|
||||
time_now,
|
||||
config=serialize_options,
|
||||
)
|
||||
@@ -550,7 +550,7 @@ class SearchHandler:
|
||||
|
||||
highlights = set()
|
||||
|
||||
room_events: list[ClientEvent] = []
|
||||
room_events: list[FilteredEvent] = []
|
||||
i = 0
|
||||
|
||||
pagination_token = batch_token
|
||||
@@ -633,7 +633,7 @@ class SearchHandler:
|
||||
async def _calculate_event_contexts(
|
||||
self,
|
||||
user: UserID,
|
||||
allowed_events: list[ClientEvent],
|
||||
allowed_events: list[FilteredEvent],
|
||||
before_limit: int,
|
||||
after_limit: int,
|
||||
include_profile: bool,
|
||||
|
||||
@@ -23,7 +23,7 @@ from typing_extensions import assert_never
|
||||
|
||||
from synapse.api.constants import Direction, EventTypes, Membership
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.utils import ClientEvent, strip_event
|
||||
from synapse.events.utils import FilteredEvent, strip_event
|
||||
from synapse.handlers.relations import BundledAggregations
|
||||
from synapse.handlers.sliding_sync.extensions import SlidingSyncExtensionHandler
|
||||
from synapse.handlers.sliding_sync.room_lists import (
|
||||
@@ -679,7 +679,7 @@ class SlidingSyncHandler:
|
||||
# membership. Currently, we have to make all of these optional because
|
||||
# `invite`/`knock` rooms only have `stripped_state`. See
|
||||
# https://github.com/matrix-org/matrix-spec-proposals/pull/3575#discussion_r1653045932
|
||||
timeline_events: list[ClientEvent] = []
|
||||
timeline_events: list[FilteredEvent] = []
|
||||
bundled_aggregations: dict[str, BundledAggregations] | None = None
|
||||
limited: bool | None = None
|
||||
prev_batch_token: StreamToken | None = None
|
||||
@@ -1485,7 +1485,7 @@ class SlidingSyncHandler:
|
||||
self,
|
||||
room_id: str,
|
||||
to_token: StreamToken,
|
||||
timeline: list[ClientEvent],
|
||||
timeline: list[FilteredEvent],
|
||||
check_outside_timeline: bool,
|
||||
) -> int | None:
|
||||
"""Get a bump stamp for the room, if we have a bump event and it has
|
||||
|
||||
@@ -43,7 +43,7 @@ from synapse.api.filtering import FilterCollection
|
||||
from synapse.api.presence import UserPresenceState
|
||||
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.utils import ClientEvent
|
||||
from synapse.events.utils import FilteredEvent
|
||||
from synapse.handlers.relations import BundledAggregations
|
||||
from synapse.logging import issue9533_logger
|
||||
from synapse.logging.context import current_context
|
||||
@@ -124,7 +124,7 @@ class SyncConfig:
|
||||
@attr.s(slots=True, frozen=True, auto_attribs=True)
|
||||
class TimelineBatch:
|
||||
prev_batch: StreamToken
|
||||
events: Sequence[ClientEvent]
|
||||
events: Sequence[FilteredEvent]
|
||||
limited: bool
|
||||
# A mapping of event ID to the bundled aggregations for the above events.
|
||||
# This is only calculated if limited is true.
|
||||
@@ -149,7 +149,7 @@ class JoinedSyncResult:
|
||||
state: StateMap[EventBase]
|
||||
ephemeral: list[JsonDict]
|
||||
account_data: list[JsonDict]
|
||||
sticky: list[ClientEvent]
|
||||
sticky: list[FilteredEvent]
|
||||
unread_notifications: JsonDict
|
||||
unread_thread_notifications: JsonDict
|
||||
summary: JsonDict | None
|
||||
@@ -700,7 +700,7 @@ class SyncHandler:
|
||||
|
||||
log_kv({"limited": limited})
|
||||
|
||||
client_recents: list[ClientEvent]
|
||||
client_recents: list[FilteredEvent]
|
||||
if potential_recents:
|
||||
recents = await sync_config.filter_collection.filter_room_timeline(
|
||||
potential_recents
|
||||
@@ -839,7 +839,7 @@ class SyncHandler:
|
||||
)
|
||||
|
||||
loaded_recents_client: list[
|
||||
ClientEvent
|
||||
FilteredEvent
|
||||
] = await filter_and_transform_events_for_client(
|
||||
self._storage_controllers,
|
||||
sync_config.user.to_string(),
|
||||
@@ -2883,7 +2883,7 @@ class SyncHandler:
|
||||
|
||||
if room_builder.rtype == "joined":
|
||||
unread_notifications: dict[str, int] = {}
|
||||
sticky_events: list[ClientEvent] = []
|
||||
sticky_events: list[FilteredEvent] = []
|
||||
if sticky_event_ids:
|
||||
# As per MSC4354:
|
||||
# Remove sticky events that are already in the timeline, else we will needlessly duplicate
|
||||
|
||||
+3
-3
@@ -41,7 +41,7 @@ from twisted.internet.defer import Deferred
|
||||
from synapse.api.constants import EduTypes, EventTypes, HistoryVisibility, Membership
|
||||
from synapse.api.errors import AuthError
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.utils import ClientEvent
|
||||
from synapse.events.utils import FilteredEvent
|
||||
from synapse.handlers.presence import format_user_presence_state
|
||||
from synapse.logging import issue9533_logger
|
||||
from synapse.logging.context import PreserveLoggingContext
|
||||
@@ -211,7 +211,7 @@ class _NotifierUserStream:
|
||||
|
||||
@attr.s(slots=True, frozen=True, auto_attribs=True)
|
||||
class EventStreamResult:
|
||||
events: list[JsonDict | ClientEvent]
|
||||
events: list[JsonDict | FilteredEvent]
|
||||
start_token: StreamToken
|
||||
end_token: StreamToken
|
||||
|
||||
@@ -766,7 +766,7 @@ class Notifier:
|
||||
# The events fetched from each source are a JsonDict, EventBase, or
|
||||
# UserPresenceState, but see below for UserPresenceState being
|
||||
# converted to JsonDict.
|
||||
events: list[JsonDict | ClientEvent] = []
|
||||
events: list[JsonDict | FilteredEvent] = []
|
||||
end_token = from_token
|
||||
|
||||
for keyname, source in self.event_sources.sources.get_sources():
|
||||
|
||||
@@ -3,7 +3,7 @@ from typing import TYPE_CHECKING
|
||||
|
||||
from synapse.api.errors import NotFoundError
|
||||
from synapse.events.utils import (
|
||||
ClientEvent,
|
||||
FilteredEvent,
|
||||
SerializeEventConfig,
|
||||
format_event_raw,
|
||||
)
|
||||
@@ -67,7 +67,7 @@ class EventRestServlet(RestServlet):
|
||||
)
|
||||
res = {
|
||||
"event": await self._event_serializer.serialize_event(
|
||||
ClientEvent(event=event, membership=None),
|
||||
FilteredEvent(event=event, membership=None),
|
||||
self._clock.time_msec(),
|
||||
config=config,
|
||||
)
|
||||
|
||||
@@ -29,7 +29,7 @@ from synapse.api.constants import Direction, EventTypes, JoinRules, Membership
|
||||
from synapse.api.errors import AuthError, Codes, NotFoundError, SynapseError
|
||||
from synapse.api.filtering import Filter
|
||||
from synapse.events.utils import (
|
||||
ClientEvent,
|
||||
FilteredEvent,
|
||||
SerializeEventConfig,
|
||||
)
|
||||
from synapse.handlers.pagination import (
|
||||
@@ -531,7 +531,7 @@ class RoomStateRestServlet(RestServlet):
|
||||
events = await self.store.get_events(event_ids.values())
|
||||
now = self.clock.time_msec()
|
||||
room_state = await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in events.values()], now
|
||||
[FilteredEvent.state(e) for e in events.values()], now
|
||||
)
|
||||
ret = {"state": room_state}
|
||||
|
||||
@@ -900,7 +900,7 @@ class RoomEventContextServlet(RestServlet):
|
||||
bundle_aggregations=event_context.aggregations,
|
||||
),
|
||||
"state": await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in event_context.state],
|
||||
[FilteredEvent.state(e) for e in event_context.state],
|
||||
time_now,
|
||||
),
|
||||
"start": event_context.start,
|
||||
|
||||
@@ -24,7 +24,7 @@ from typing import TYPE_CHECKING
|
||||
|
||||
from synapse.api.constants import ReceiptTypes
|
||||
from synapse.events.utils import (
|
||||
ClientEvent,
|
||||
FilteredEvent,
|
||||
SerializeEventConfig,
|
||||
format_event_for_client_v2_without_room_id,
|
||||
)
|
||||
@@ -112,7 +112,7 @@ class NotificationsServlet(RestServlet):
|
||||
"ts": pa.received_ts,
|
||||
"event": (
|
||||
await self._event_serializer.serialize_event(
|
||||
ClientEvent(event=notif_events[pa.event_id], membership=None),
|
||||
FilteredEvent(event=notif_events[pa.event_id], membership=None),
|
||||
now,
|
||||
config=serialize_options,
|
||||
)
|
||||
|
||||
@@ -52,7 +52,7 @@ from synapse.api.errors import (
|
||||
)
|
||||
from synapse.api.filtering import Filter
|
||||
from synapse.events.utils import (
|
||||
ClientEvent,
|
||||
FilteredEvent,
|
||||
EventClientSerializer,
|
||||
SerializeEventConfig,
|
||||
format_event_for_client_v2,
|
||||
@@ -287,7 +287,7 @@ class RoomStateEventRestServlet(RestServlet):
|
||||
|
||||
if format == "event":
|
||||
event = await self._event_serializer.serialize_event(
|
||||
ClientEvent.state(data),
|
||||
FilteredEvent.state(data),
|
||||
self.clock.time_msec(),
|
||||
config=SerializeEventConfig(
|
||||
event_format=format_event_for_client_v2,
|
||||
@@ -867,7 +867,7 @@ async def encode_messages_response(
|
||||
serialized_result[
|
||||
"state"
|
||||
] = await serialize_deps.event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in get_messages_result.state],
|
||||
[FilteredEvent.state(e) for e in get_messages_result.state],
|
||||
time_now,
|
||||
config=serialize_options,
|
||||
)
|
||||
@@ -1175,7 +1175,7 @@ class RoomEventContextServlet(RestServlet):
|
||||
config=serializer_options,
|
||||
),
|
||||
"state": await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in event_context.state],
|
||||
[FilteredEvent.state(e) for e in event_context.state],
|
||||
time_now,
|
||||
config=serializer_options,
|
||||
),
|
||||
|
||||
@@ -30,7 +30,7 @@ from synapse.api.filtering import FilterCollection
|
||||
from synapse.api.presence import UserPresenceState
|
||||
from synapse.api.ratelimiting import Ratelimiter
|
||||
from synapse.events.utils import (
|
||||
ClientEvent,
|
||||
FilteredEvent,
|
||||
SerializeEventConfig,
|
||||
format_event_for_client_v2_without_room_id,
|
||||
format_event_raw,
|
||||
@@ -448,7 +448,7 @@ class SyncRestServlet(RestServlet):
|
||||
invited = {}
|
||||
for room in rooms:
|
||||
invite = await self._event_serializer.serialize_event(
|
||||
ClientEvent(event=room.invite, membership=None),
|
||||
FilteredEvent(event=room.invite, membership=None),
|
||||
time_now,
|
||||
config=serialize_options,
|
||||
)
|
||||
@@ -486,7 +486,7 @@ class SyncRestServlet(RestServlet):
|
||||
knocked = {}
|
||||
for room in rooms:
|
||||
knock = await self._event_serializer.serialize_event(
|
||||
ClientEvent(event=room.knock, membership=None),
|
||||
FilteredEvent(event=room.knock, membership=None),
|
||||
time_now,
|
||||
config=serialize_options,
|
||||
)
|
||||
@@ -600,7 +600,7 @@ class SyncRestServlet(RestServlet):
|
||||
)
|
||||
|
||||
serialized_state = await self._event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in state_events],
|
||||
[FilteredEvent.state(e) for e in state_events],
|
||||
time_now,
|
||||
config=serialize_options,
|
||||
)
|
||||
@@ -990,7 +990,7 @@ class SlidingSyncRestServlet(RestServlet):
|
||||
):
|
||||
serialized_required_state = (
|
||||
await self.event_serializer.serialize_events(
|
||||
[ClientEvent.state(e) for e in room_result.required_state],
|
||||
[FilteredEvent.state(e) for e in room_result.required_state],
|
||||
time_now,
|
||||
config=serialize_options,
|
||||
)
|
||||
|
||||
@@ -34,7 +34,7 @@ from pydantic import ConfigDict
|
||||
|
||||
from synapse.api.constants import EventTypes
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.utils import ClientEvent
|
||||
from synapse.events.utils import FilteredEvent
|
||||
from synapse.types import (
|
||||
DeviceListUpdates,
|
||||
JsonDict,
|
||||
@@ -186,7 +186,7 @@ class SlidingSyncResult:
|
||||
# Should be empty for invite/knock rooms with `stripped_state`
|
||||
required_state: list[EventBase]
|
||||
# Should be empty for invite/knock rooms with `stripped_state`
|
||||
timeline_events: list[ClientEvent]
|
||||
timeline_events: list[FilteredEvent]
|
||||
bundled_aggregations: dict[str, "BundledAggregations"] | None
|
||||
# Optional because it's only relevant to invite/knock rooms
|
||||
stripped_state: list[JsonDict]
|
||||
|
||||
@@ -37,7 +37,7 @@ from synapse.api.constants import (
|
||||
)
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.snapshot import EventContext
|
||||
from synapse.events.utils import ClientEvent, prune_event
|
||||
from synapse.events.utils import FilteredEvent, prune_event
|
||||
from synapse.logging.opentracing import trace
|
||||
from synapse.storage.controllers import StorageControllers
|
||||
from synapse.storage.databases.main import DataStore
|
||||
@@ -81,7 +81,7 @@ async def filter_and_transform_events_for_client(
|
||||
is_peeking: bool = False,
|
||||
always_include_ids: frozenset[str] = frozenset(),
|
||||
filter_send_to_client: bool = True,
|
||||
) -> list[ClientEvent]:
|
||||
) -> list[FilteredEvent]:
|
||||
"""
|
||||
Check which events a user is allowed to see. If the user can see the event but its
|
||||
sender asked for their data to be erased, prune the content of the event.
|
||||
@@ -101,7 +101,7 @@ async def filter_and_transform_events_for_client(
|
||||
also be called to check whether a user can see the state at a given point.
|
||||
|
||||
Returns:
|
||||
The filtered events, wrapped in ClientEvent with the requesting user's
|
||||
The filtered events, wrapped in FilteredEvent with the requesting user's
|
||||
membership at each event annotated for use during serialization (MSC4115).
|
||||
"""
|
||||
# Filter out events that have been soft failed so that we don't relay them
|
||||
@@ -175,7 +175,7 @@ async def filter_and_transform_events_for_client(
|
||||
room_id
|
||||
] = await storage.main.get_retention_policy_for_room(room_id)
|
||||
|
||||
def allowed(event: EventBase) -> ClientEvent | None:
|
||||
def allowed(event: EventBase) -> FilteredEvent | None:
|
||||
state_after_event = event_id_to_state.get(event.event_id)
|
||||
filtered = _check_client_allowed_to_see_event(
|
||||
user_id=user_id,
|
||||
@@ -232,9 +232,9 @@ async def filter_and_transform_events_for_client(
|
||||
else Membership.LEAVE
|
||||
)
|
||||
|
||||
return ClientEvent(event=filtered, membership=user_membership)
|
||||
return FilteredEvent(event=filtered, membership=user_membership)
|
||||
|
||||
# Check each event: gives an iterable of None or a ClientEvent.
|
||||
# Check each event: gives an iterable of None or a FilteredEvent.
|
||||
filtered_events = map(allowed, events)
|
||||
|
||||
# Turn it into a list and remove None entries before returning.
|
||||
|
||||
@@ -29,7 +29,7 @@ from synapse.api.constants import EventContentFields
|
||||
from synapse.api.room_versions import RoomVersions
|
||||
from synapse.events import EventBase, make_event_from_dict
|
||||
from synapse.events.utils import (
|
||||
ClientEvent,
|
||||
FilteredEvent,
|
||||
PowerLevelsContent,
|
||||
SerializeEventConfig,
|
||||
_split_field,
|
||||
@@ -661,7 +661,7 @@ class SerializeEventTestCase(HomeserverTestCase):
|
||||
) -> JsonDict:
|
||||
return self.get_success(
|
||||
self._event_serializer.serialize_event(
|
||||
ClientEvent(event=ev, membership=None),
|
||||
FilteredEvent(event=ev, membership=None),
|
||||
1479807801915,
|
||||
config=SerializeEventConfig(
|
||||
only_event_fields=fields,
|
||||
@@ -782,7 +782,7 @@ class SerializeEventTestCase(HomeserverTestCase):
|
||||
def test_event_fields_fail_if_fields_not_str(self) -> None:
|
||||
self.get_failure(
|
||||
self._event_serializer.serialize_event(
|
||||
ClientEvent(
|
||||
FilteredEvent(
|
||||
event=MockEvent(room_id="!foo:bar", content={"foo": "bar"}),
|
||||
membership=None,
|
||||
),
|
||||
|
||||
@@ -23,7 +23,7 @@ from unittest.mock import Mock
|
||||
from twisted.internet.testing import MemoryReactor
|
||||
|
||||
from synapse.api.constants import EventTypes
|
||||
from synapse.events.utils import ClientEvent
|
||||
from synapse.events.utils import FilteredEvent
|
||||
from synapse.rest import admin
|
||||
from synapse.rest.client import login, room
|
||||
from synapse.server import HomeServer
|
||||
@@ -258,7 +258,7 @@ class RetentionTestCase(unittest.HomeserverTestCase):
|
||||
time_now = self.clock.time_msec()
|
||||
serialized = self.get_success(
|
||||
self.serializer.serialize_event(
|
||||
ClientEvent(event=event, membership=None), time_now
|
||||
FilteredEvent(event=event, membership=None), time_now
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user