Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit cb8bea3

Browse files
committed
Add PublicRoomsFilterFields
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
1 parent 085caba commit cb8bea3

File tree

4 files changed

+20
-13
lines changed

4 files changed

+20
-13
lines changed

synapse/api/constants.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,3 +259,8 @@ class ReceiptTypes:
259259
READ: Final = "m.read"
260260
READ_PRIVATE: Final = "org.matrix.msc2285.read.private"
261261
FULLY_READ: Final = "m.fully_read"
262+
263+
264+
class PublicRoomsFilterFields:
265+
GENERIC_SEARCH_TERM: Final = "generic_search_term"
266+
ROOM_TYPES: Final = "org.matrix.msc3827.room_types"

synapse/handlers/room_list.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
GuestAccess,
2626
HistoryVisibility,
2727
JoinRules,
28+
PublicRoomsFilterFields,
2829
)
2930
from synapse.api.errors import (
3031
Codes,
@@ -511,8 +512,8 @@ def copy_and_replace(self, **kwds: Any) -> "RoomListNextBatch":
511512

512513

513514
def _matches_room_entry(room_entry: JsonDict, search_filter: dict) -> bool:
514-
if search_filter and search_filter.get("generic_search_term", None):
515-
generic_search_term = search_filter["generic_search_term"].upper()
515+
if search_filter and search_filter.get(PublicRoomsFilterFields.GENERIC_SEARCH_TERM, None):
516+
generic_search_term = search_filter[PublicRoomsFilterFields.GENERIC_SEARCH_TERM].upper()
516517
if generic_search_term in room_entry.get("name", "").upper():
517518
return True
518519
elif generic_search_term in room_entry.get("topic", "").upper():

synapse/storage/databases/main/room.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
import attr
3434

35-
from synapse.api.constants import EventContentFields, EventTypes, JoinRules
35+
from synapse.api.constants import EventContentFields, EventTypes, JoinRules, PublicRoomsFilterFields
3636
from synapse.api.errors import StoreError
3737
from synapse.api.room_versions import RoomVersion, RoomVersions
3838
from synapse.config.homeserver import HomeServerConfig
@@ -238,16 +238,16 @@ def _count_public_rooms_txn(txn: LoggingTransaction) -> int:
238238
if (
239239
not self.config.experimental.msc3827_enabled
240240
or not search_filter
241-
or search_filter.get("room_types", None) is None
241+
or search_filter.get(PublicRoomsFilterFields.ROOM_TYPES, None) is None
242242
):
243243
where_clause = "AND room_type IS NULL"
244244
elif (
245245
self.config.experimental.msc3827_enabled
246246
and search_filter
247-
and search_filter.get("room_types", None)
247+
and search_filter.get(PublicRoomsFilterFields.ROOM_TYPES, None)
248248
):
249249
clause, args = self._construct_room_type_where_clause(
250-
search_filter["room_types"]
250+
search_filter[PublicRoomsFilterFields.ROOM_TYPES]
251251
)
252252
where_clause = f" AND {clause}"
253253
query_args += args
@@ -385,8 +385,8 @@ async def get_largest_public_rooms(
385385
if ignore_non_federatable:
386386
where_clauses.append("is_federatable")
387387

388-
if search_filter and search_filter.get("generic_search_term", None):
389-
search_term = "%" + search_filter["generic_search_term"] + "%"
388+
if search_filter and search_filter.get(PublicRoomsFilterFields.GENERIC_SEARCH_TERM, None):
389+
search_term = "%" + search_filter[PublicRoomsFilterFields.GENERIC_SEARCH_TERM] + "%"
390390

391391
where_clauses.append(
392392
"""
@@ -406,16 +406,16 @@ async def get_largest_public_rooms(
406406
if (
407407
not self.config.experimental.msc3827_enabled
408408
or not search_filter
409-
or search_filter.get("room_types", None) is None
409+
or search_filter.get(PublicRoomsFilterFields.ROOM_TYPES, None) is None
410410
):
411411
where_clauses.append("room_type IS NULL")
412412
elif (
413413
self.config.experimental.msc3827_enabled
414414
and search_filter
415-
and search_filter.get("room_types", None)
415+
and search_filter.get(PublicRoomsFilterFields.ROOM_TYPES, None)
416416
):
417417
clause, args = self._construct_room_type_where_clause(
418-
search_filter["room_types"]
418+
search_filter[PublicRoomsFilterFields.ROOM_TYPES]
419419
)
420420
where_clauses.append(clause)
421421
query_args += args

tests/rest/client/test_rooms.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
EventTypes,
3535
Membership,
3636
RelationTypes,
37+
PublicRoomsFilterFields
3738
)
3839
from synapse.api.errors import Codes, HttpResponseException
3940
from synapse.handlers.pagination import PurgeStatus
@@ -1882,7 +1883,7 @@ def test_simple(self) -> None:
18821883
"Simple test for searching rooms over federation"
18831884
self.federation_client.get_public_rooms.return_value = make_awaitable({}) # type: ignore[attr-defined]
18841885

1885-
search_filter = {"generic_search_term": "foobar"}
1886+
search_filter = {PublicRoomsFilterFields.GENERIC_SEARCH_TERM: "foobar"}
18861887

18871888
channel = self.make_request(
18881889
"POST",
@@ -1911,7 +1912,7 @@ def test_fallback(self) -> None:
19111912
make_awaitable({}),
19121913
)
19131914

1914-
search_filter = {"generic_search_term": "foobar"}
1915+
search_filter = {PublicRoomsFilterFields.GENERIC_SEARCH_TERM: "foobar"}
19151916

19161917
channel = self.make_request(
19171918
"POST",

0 commit comments

Comments
 (0)