@@ -385,7 +385,7 @@ async def get_invited_rooms_for_local_user(
385385 """
386386
387387 return await self .get_rooms_for_local_user_where_membership_is (
388- user_id , [ Membership .INVITE ]
388+ user_id , ( Membership .INVITE ,)
389389 )
390390
391391 async def get_knocked_at_rooms_for_local_user (
@@ -401,7 +401,7 @@ async def get_knocked_at_rooms_for_local_user(
401401 """
402402
403403 return await self .get_rooms_for_local_user_where_membership_is (
404- user_id , [ Membership .KNOCK ]
404+ user_id , ( Membership .KNOCK ,)
405405 )
406406
407407 async def get_invite_for_local_user_in_room (
@@ -422,12 +422,13 @@ async def get_invite_for_local_user_in_room(
422422 return invite
423423 return None
424424
425+ @cached (max_entries = 1000 , uncached_args = ["excluded_rooms" ], tree = True )
425426 async def get_rooms_for_local_user_where_membership_is (
426427 self ,
427428 user_id : str ,
428429 membership_list : Collection [str ],
429430 excluded_rooms : StrCollection = (),
430- ) -> List [RoomsForUser ]:
431+ ) -> Sequence [RoomsForUser ]:
431432 """Get all the rooms for this *local* user where the membership for this user
432433 matches one in the membership list.
433434
@@ -1320,6 +1321,9 @@ def f(txn: LoggingTransaction) -> None:
13201321 self ._invalidate_cache_and_stream (
13211322 txn , self .get_forgotten_rooms_for_user , (user_id ,)
13221323 )
1324+ self ._invalidate_cache_and_stream (
1325+ txn , self .get_rooms_for_local_user_where_membership_is , (user_id ,)
1326+ )
13231327
13241328 await self .db_pool .runInteraction ("forget_membership" , f )
13251329
0 commit comments