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

Commit ec975f1

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

File tree

4 files changed

+33
-13
lines changed

4 files changed

+33
-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: 7 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,12 @@ 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(
516+
PublicRoomsFilterFields.GENERIC_SEARCH_TERM, None
517+
):
518+
generic_search_term = search_filter[
519+
PublicRoomsFilterFields.GENERIC_SEARCH_TERM
520+
].upper()
516521
if generic_search_term in room_entry.get("name", "").upper():
517522
return True
518523
elif generic_search_term in room_entry.get("topic", "").upper():

synapse/storage/databases/main/room.py

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

3333
import attr
3434

35-
from synapse.api.constants import EventContentFields, EventTypes, JoinRules
35+
from synapse.api.constants import (
36+
EventContentFields,
37+
EventTypes,
38+
JoinRules,
39+
PublicRoomsFilterFields,
40+
)
3641
from synapse.api.errors import StoreError
3742
from synapse.api.room_versions import RoomVersion, RoomVersions
3843
from synapse.config.homeserver import HomeServerConfig
@@ -238,16 +243,16 @@ def _count_public_rooms_txn(txn: LoggingTransaction) -> int:
238243
if (
239244
not self.config.experimental.msc3827_enabled
240245
or not search_filter
241-
or search_filter.get("room_types", None) is None
246+
or search_filter.get(PublicRoomsFilterFields.ROOM_TYPES, None) is None
242247
):
243248
where_clause = "AND room_type IS NULL"
244249
elif (
245250
self.config.experimental.msc3827_enabled
246251
and search_filter
247-
and search_filter.get("room_types", None)
252+
and search_filter.get(PublicRoomsFilterFields.ROOM_TYPES, None)
248253
):
249254
clause, args = self._construct_room_type_where_clause(
250-
search_filter["room_types"]
255+
search_filter[PublicRoomsFilterFields.ROOM_TYPES]
251256
)
252257
where_clause = f" AND {clause}"
253258
query_args += args
@@ -385,8 +390,12 @@ async def get_largest_public_rooms(
385390
if ignore_non_federatable:
386391
where_clauses.append("is_federatable")
387392

388-
if search_filter and search_filter.get("generic_search_term", None):
389-
search_term = "%" + search_filter["generic_search_term"] + "%"
393+
if search_filter and search_filter.get(
394+
PublicRoomsFilterFields.GENERIC_SEARCH_TERM, None
395+
):
396+
search_term = (
397+
"%" + search_filter[PublicRoomsFilterFields.GENERIC_SEARCH_TERM] + "%"
398+
)
390399

391400
where_clauses.append(
392401
"""
@@ -406,16 +415,16 @@ async def get_largest_public_rooms(
406415
if (
407416
not self.config.experimental.msc3827_enabled
408417
or not search_filter
409-
or search_filter.get("room_types", None) is None
418+
or search_filter.get(PublicRoomsFilterFields.ROOM_TYPES, None) is None
410419
):
411420
where_clauses.append("room_type IS NULL")
412421
elif (
413422
self.config.experimental.msc3827_enabled
414423
and search_filter
415-
and search_filter.get("room_types", None)
424+
and search_filter.get(PublicRoomsFilterFields.ROOM_TYPES, None)
416425
):
417426
clause, args = self._construct_room_type_where_clause(
418-
search_filter["room_types"]
427+
search_filter[PublicRoomsFilterFields.ROOM_TYPES]
419428
)
420429
where_clauses.append(clause)
421430
query_args += args

tests/rest/client/test_rooms.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
EventContentFields,
3434
EventTypes,
3535
Membership,
36+
PublicRoomsFilterFields,
3637
RelationTypes,
3738
)
3839
from synapse.api.errors import Codes, HttpResponseException
@@ -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)