13
13
# limitations under the License.
14
14
15
15
import logging
16
- from typing import TYPE_CHECKING , List , Optional , Tuple
17
-
18
- from twisted .internet import defer
16
+ from typing import TYPE_CHECKING , List , Optional , Tuple , cast
19
17
20
18
from synapse .api .constants import EduTypes , EventTypes , Membership
21
19
from synapse .api .errors import SynapseError
20
+ from synapse .events import EventBase
22
21
from synapse .events .validator import EventValidator
23
22
from synapse .handlers .presence import format_user_presence_state
24
23
from synapse .handlers .receipts import ReceiptEventSource
25
24
from synapse .logging .context import make_deferred_yieldable , run_in_background
26
25
from synapse .storage .roommember import RoomsForUser
27
26
from synapse .streams .config import PaginationConfig
28
- from synapse .types import JsonDict , Requester , RoomStreamToken , StreamToken , UserID
27
+ from synapse .types import (
28
+ JsonDict ,
29
+ Requester ,
30
+ RoomStreamToken ,
31
+ StateMap ,
32
+ StreamToken ,
33
+ UserID ,
34
+ )
29
35
from synapse .util import unwrapFirstError
30
- from synapse .util .async_helpers import concurrently_execute
36
+ from synapse .util .async_helpers import concurrently_execute , gather_results
31
37
from synapse .util .caches .response_cache import ResponseCache
32
38
from synapse .visibility import filter_events_for_client
33
39
@@ -190,22 +196,21 @@ async def handle_room(event: RoomsForUser) -> None:
190
196
)
191
197
deferred_room_state = run_in_background (
192
198
self .state_store .get_state_for_events , [event .event_id ]
193
- )
194
- deferred_room_state .addCallback (
195
- lambda states : states [event .event_id ]
199
+ ).addCallback (
200
+ lambda states : cast (StateMap [EventBase ], states [event .event_id ])
196
201
)
197
202
198
203
(messages , token ), current_state = await make_deferred_yieldable (
199
- defer . gatherResults (
200
- [
204
+ gather_results (
205
+ (
201
206
run_in_background (
202
207
self .store .get_recent_events_for_room ,
203
208
event .room_id ,
204
209
limit = limit ,
205
210
end_token = room_end_token ,
206
211
),
207
212
deferred_room_state ,
208
- ]
213
+ )
209
214
)
210
215
).addErrback (unwrapFirstError )
211
216
@@ -454,8 +459,8 @@ async def get_receipts() -> List[JsonDict]:
454
459
return receipts
455
460
456
461
presence , receipts , (messages , token ) = await make_deferred_yieldable (
457
- defer . gatherResults (
458
- [
462
+ gather_results (
463
+ (
459
464
run_in_background (get_presence ),
460
465
run_in_background (get_receipts ),
461
466
run_in_background (
@@ -464,7 +469,7 @@ async def get_receipts() -> List[JsonDict]:
464
469
limit = limit ,
465
470
end_token = now_token .room_key ,
466
471
),
467
- ] ,
472
+ ) ,
468
473
consumeErrors = True ,
469
474
).addErrback (unwrapFirstError )
470
475
)
0 commit comments