No need for special model attributes in Backend
This commit is contained in:
parent
f4dca1c2c9
commit
97fdc214dd
|
@ -20,7 +20,6 @@ from .models.filters import FieldSubstringFilter
|
||||||
from .models.items import Account
|
from .models.items import Account
|
||||||
from .models.model import Model
|
from .models.model import Model
|
||||||
from .models.model_store import ModelStore
|
from .models.model_store import ModelStore
|
||||||
from .models.special_models import AllRooms, MatchingAccounts
|
|
||||||
from .user_files import Accounts, History, Theme, UISettings, UIState
|
from .user_files import Accounts, History, Theme, UISettings, UIState
|
||||||
|
|
||||||
# Logging configuration
|
# Logging configuration
|
||||||
|
@ -76,13 +75,11 @@ class Backend:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.appdirs = AppDirs(appname=__app_name__, roaming=True)
|
self.appdirs = AppDirs(appname=__app_name__, roaming=True)
|
||||||
|
|
||||||
self.saved_accounts: Accounts = Accounts(self)
|
self.saved_accounts = Accounts(self)
|
||||||
self.ui_settings: UISettings = UISettings(self)
|
self.ui_settings = UISettings(self)
|
||||||
self.ui_state: UIState = UIState(self)
|
self.ui_state = UIState(self)
|
||||||
self.history: History = History(self)
|
self.history = History(self)
|
||||||
|
|
||||||
self.all_rooms = AllRooms()
|
|
||||||
self.matching_accounts = MatchingAccounts(self.all_rooms)
|
|
||||||
self.models = ModelStore()
|
self.models = ModelStore()
|
||||||
|
|
||||||
self.clients: Dict[str, MatrixClient] = {}
|
self.clients: Dict[str, MatrixClient] = {}
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
from collections import UserDict
|
from collections import UserDict
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from typing import Dict, Type
|
from typing import Dict
|
||||||
|
|
||||||
from . import SyncId
|
from . import SyncId
|
||||||
from .model import Model
|
from .model import Model
|
||||||
from .special_models import FilteredMembers
|
from .special_models import AllRooms, FilteredMembers, MatchingAccounts
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
|
@ -28,7 +28,11 @@ class ModelStore(UserDict):
|
||||||
|
|
||||||
model: Model
|
model: Model
|
||||||
|
|
||||||
if is_tuple and len(key) == 3 and key[2] == "filtered_members":
|
if key == "all_rooms":
|
||||||
|
model = AllRooms()
|
||||||
|
elif key == "matching_accounts":
|
||||||
|
model = MatchingAccounts(self["all_rooms"])
|
||||||
|
elif is_tuple and len(key) == 3 and key[2] == "filtered_members":
|
||||||
model = FilteredMembers(user_id=key[0], room_id=key[1])
|
model = FilteredMembers(user_id=key[0], room_id=key[1])
|
||||||
else:
|
else:
|
||||||
model = Model(sync_id=key) # type: ignore
|
model = Model(sync_id=key) # type: ignore
|
||||||
|
|
|
@ -20,10 +20,11 @@ class AllRooms(FieldSubstringFilter):
|
||||||
|
|
||||||
class MatchingAccounts(ModelFilter):
|
class MatchingAccounts(ModelFilter):
|
||||||
def __init__(self, all_rooms: AllRooms) -> None:
|
def __init__(self, all_rooms: AllRooms) -> None:
|
||||||
super().__init__(sync_id="matching_accounts")
|
|
||||||
self.all_rooms = all_rooms
|
self.all_rooms = all_rooms
|
||||||
self.all_rooms.items_changed_callbacks.append(self.refilter)
|
self.all_rooms.items_changed_callbacks.append(self.refilter)
|
||||||
|
|
||||||
|
super().__init__(sync_id="matching_accounts")
|
||||||
|
|
||||||
|
|
||||||
def accept_source(self, source: Model) -> bool:
|
def accept_source(self, source: Model) -> bool:
|
||||||
return source.sync_id == "accounts"
|
return source.sync_id == "accounts"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user