diff --git a/synapse/visibility.py b/synapse/visibility.py
index bab41182b9..e3da7744d2 100644
--- a/synapse/visibility.py
+++ b/synapse/visibility.py
@@ -16,11 +16,6 @@
import logging
import operator
-from six import iteritems, itervalues
-from six.moves import map
-
-from twisted.internet import defer
-
from synapse.api.constants import EventTypes, Membership
from synapse.events.utils import prune_event
from synapse.storage import Storage
@@ -42,8 +37,7 @@ MEMBERSHIP_PRIORITY = (
)
-@defer.inlineCallbacks
-def filter_events_for_client(
+async def filter_events_for_client(
storage: Storage,
user_id,
events,
@@ -70,19 +64,19 @@ def filter_events_for_client(
also be called to check whether a user can see the state at a given point.
Returns:
- Deferred[list[synapse.events.EventBase]]
+ list[synapse.events.EventBase]
"""
# Filter out events that have been soft failed so that we don't relay them
# to clients.
events = [e for e in events if not e.internal_metadata.is_soft_failed()]
types = ((EventTypes.RoomHistoryVisibility, ""), (EventTypes.Member, user_id))
- event_id_to_state = yield storage.state.get_state_for_events(
+ event_id_to_state = await storage.state.get_state_for_events(
frozenset(e.event_id for e in events),
state_filter=StateFilter.from_types(types),
)
- ignore_dict_content = yield storage.main.get_global_account_data_by_type_for_user(
+ ignore_dict_content = await storage.main.get_global_account_data_by_type_for_user(
"m.ignored_user_list", user_id
)
@@ -93,7 +87,7 @@ def filter_events_for_client(
else []
)
- erased_senders = yield storage.main.are_users_erased((e.sender for e in events))
+ erased_senders = await storage.main.are_users_erased((e.sender for e in events))
if filter_send_to_client:
room_ids = {e.room_id for e in events}
@@ -102,7 +96,7 @@ def filter_events_for_client(
for room_id in room_ids:
retention_policies[
room_id
- ] = yield storage.main.get_retention_policy_for_room(room_id)
+ ] = await storage.main.get_retention_policy_for_room(room_id)
def allowed(event):
"""
@@ -257,8 +251,7 @@ def filter_events_for_client(
return list(filtered_events)
-@defer.inlineCallbacks
-def filter_events_for_server(
+async def filter_events_for_server(
storage: Storage,
server_name,
events,
@@ -280,7 +273,7 @@ def filter_events_for_server(
backfill or not.
Returns
- Deferred[list[FrozenEvent]]
+ list[FrozenEvent]
"""
def is_sender_erased(event, erased_senders):
@@ -298,7 +291,7 @@ def filter_events_for_server(
# membership states for the requesting server to determine
# if the server is either in the room or has been invited
# into the room.
- for ev in itervalues(state):
+ for ev in state.values():
if ev.type != EventTypes.Member:
continue
try:
@@ -322,9 +315,9 @@ def filter_events_for_server(
return True
# Lets check to see if all the events have a history visibility
- # of "shared" or "world_readable". If thats the case then we don't
+ # of "shared" or "world_readable". If that's the case then we don't
# need to check membership (as we know the server is in the room).
- event_to_state_ids = yield storage.state.get_state_ids_for_events(
+ event_to_state_ids = await storage.state.get_state_ids_for_events(
frozenset(e.event_id for e in events),
state_filter=StateFilter.from_types(
types=((EventTypes.RoomHistoryVisibility, ""),)
@@ -332,24 +325,24 @@ def filter_events_for_server(
)
visibility_ids = set()
- for sids in itervalues(event_to_state_ids):
+ for sids in event_to_state_ids.values():
hist = sids.get((EventTypes.RoomHistoryVisibility, ""))
if hist:
visibility_ids.add(hist)
# If we failed to find any history visibility events then the default
- # is "shared" visiblity.
+ # is "shared" visibility.
if not visibility_ids:
all_open = True
else:
- event_map = yield storage.main.get_events(visibility_ids)
+ event_map = await storage.main.get_events(visibility_ids)
all_open = all(
e.content.get("history_visibility") in (None, "shared", "world_readable")
- for e in itervalues(event_map)
+ for e in event_map.values()
)
if not check_history_visibility_only:
- erased_senders = yield storage.main.are_users_erased((e.sender for e in events))
+ erased_senders = await storage.main.are_users_erased((e.sender for e in events))
else:
# We don't want to check whether users are erased, which is equivalent
# to no users having been erased.
@@ -378,7 +371,7 @@ def filter_events_for_server(
# first, for each event we're wanting to return, get the event_ids
# of the history vis and membership state at those events.
- event_to_state_ids = yield storage.state.get_state_ids_for_events(
+ event_to_state_ids = await storage.state.get_state_ids_for_events(
frozenset(e.event_id for e in events),
state_filter=StateFilter.from_types(
types=((EventTypes.RoomHistoryVisibility, ""), (EventTypes.Member, None))
@@ -394,8 +387,8 @@ def filter_events_for_server(
#
event_id_to_state_key = {
event_id: key
- for key_to_eid in itervalues(event_to_state_ids)
- for key, event_id in iteritems(key_to_eid)
+ for key_to_eid in event_to_state_ids.values()
+ for key, event_id in key_to_eid.items()
}
def include(typ, state_key):
@@ -408,21 +401,17 @@ def filter_events_for_server(
return False
return state_key[idx + 1 :] == server_name
- event_map = yield storage.main.get_events(
- [
- e_id
- for e_id, key in iteritems(event_id_to_state_key)
- if include(key[0], key[1])
- ]
+ event_map = await storage.main.get_events(
+ [e_id for e_id, key in event_id_to_state_key.items() if include(key[0], key[1])]
)
event_to_state = {
e_id: {
key: event_map[inner_e_id]
- for key, inner_e_id in iteritems(key_to_eid)
+ for key, inner_e_id in key_to_eid.items()
if inner_e_id in event_map
}
- for e_id, key_to_eid in iteritems(event_to_state_ids)
+ for e_id, key_to_eid in event_to_state_ids.items()
}
to_return = []
|