mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 08:56:04 -04:00
Show all joinable rooms in the spaces summary. (#10298)
Previously only world-readable rooms were shown. This means that rooms which are public, knockable, or invite-only with a pending invitation, are included in a space summary. It also applies the same logic to the experimental room version from MSC3083 -- if a user has access to the proper allowed rooms then it is shown in the spaces summary. This change is made per MSC3173 allowing stripped state of a room to be shown to any potential room joiner.
This commit is contained in:
parent
475fcb0f20
commit
2d16e69b4b
6 changed files with 244 additions and 45 deletions
|
@ -703,13 +703,22 @@ class RoomMemberWorkerStore(EventsWorkerStore):
|
|||
|
||||
@cached(max_entries=10000)
|
||||
async def is_host_joined(self, room_id: str, host: str) -> bool:
|
||||
return await self._check_host_room_membership(room_id, host, Membership.JOIN)
|
||||
|
||||
@cached(max_entries=10000)
|
||||
async def is_host_invited(self, room_id: str, host: str) -> bool:
|
||||
return await self._check_host_room_membership(room_id, host, Membership.INVITE)
|
||||
|
||||
async def _check_host_room_membership(
|
||||
self, room_id: str, host: str, membership: str
|
||||
) -> bool:
|
||||
if "%" in host or "_" in host:
|
||||
raise Exception("Invalid host name")
|
||||
|
||||
sql = """
|
||||
SELECT state_key FROM current_state_events AS c
|
||||
INNER JOIN room_memberships AS m USING (event_id)
|
||||
WHERE m.membership = 'join'
|
||||
WHERE m.membership = ?
|
||||
AND type = 'm.room.member'
|
||||
AND c.room_id = ?
|
||||
AND state_key LIKE ?
|
||||
|
@ -722,7 +731,7 @@ class RoomMemberWorkerStore(EventsWorkerStore):
|
|||
like_clause = "%:" + host
|
||||
|
||||
rows = await self.db_pool.execute(
|
||||
"is_host_joined", None, sql, room_id, like_clause
|
||||
"is_host_joined", None, sql, membership, room_id, like_clause
|
||||
)
|
||||
|
||||
if not rows:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue