Use homeserver URL field also as a filter field

This commit is contained in:
miruka
2020-08-19 04:38:29 -04:00
parent 16970d5e56
commit ab390704eb
5 changed files with 50 additions and 14 deletions

View File

@@ -84,6 +84,8 @@ class Backend:
- `("<user_id>", "<room_id>", "filtered_members")`:
See `models.special_models.FilteredMembers` docstring
- `("filtered_homeservers")`:
See `models.special_models.FilteredHomeservers` docstring
clients: A `{user_id: MatrixClient}` dict for the logged-in clients
we managed. Every client is logged to one matrix account.

View File

@@ -6,7 +6,9 @@ from typing import Dict
from . import SyncId
from .model import Model
from .special_models import AllRooms, FilteredMembers, MatchingAccounts
from .special_models import (
AllRooms, FilteredMembers, FilteredHomeservers, MatchingAccounts,
)
@dataclass(frozen=True)
@@ -36,6 +38,8 @@ class ModelStore(UserDict):
model = AllRooms(self["accounts"])
elif key == "matching_accounts":
model = MatchingAccounts(self["all_rooms"])
elif key == "filtered_homeservers":
model = FilteredHomeservers()
elif is_tuple and len(key) == 3 and key[2] == "filtered_members":
model = FilteredMembers(user_id=key[0], room_id=key[1])
else:

View File

@@ -115,3 +115,14 @@ class FilteredMembers(FieldSubstringFilter):
def accept_source(self, source: Model) -> bool:
return source.sync_id == (self.user_id, self.room_id, "members")
class FilteredHomeservers(FieldSubstringFilter):
"""Filtered list of public Matrix homeservers."""
def __init__(self) -> None:
super().__init__(sync_id="filtered_homeservers", fields=("id",))
def accept_source(self, source: Model) -> bool:
return source.sync_id == "homeservers"