From: Christian Heller Date: Mon, 25 Aug 2025 17:35:10 +0000 (+0200) Subject: Simplify MOTD processing. X-Git-Url: https://plomlompom.com/repos/test?a=commitdiff_plain;h=1ad7d6f454899962790f58df5e54394ff825722e;p=ircplom Simplify MOTD processing. --- diff --git a/ircplom/client.py b/ircplom/client.py index 8b02880..4784507 100644 --- a/ircplom/client.py +++ b/ircplom/client.py @@ -620,39 +620,6 @@ class _Db(Db): if key[0] != '_': self._on_update(key) - def __getattribute__(self, key: str): - if key[0] != '_': - compl_key = self._completable_key(key) - if hasattr(self, compl_key): - return getattr(self, compl_key).visible - return super().__getattribute__(key) - - @staticmethod - def _completable_key(key): - return f'_completable_{key}' - - def _on_completable(self, method: str, key: str, value: str, stay_complete - ) -> None: - completable = getattr(self, self._completable_key(key)) - getattr(completable, method)(value, stay_complete) - if stay_complete: - self._on_update(key) - - def append_completable(self, key: str, value: str, stay_complete=False - ) -> None: - 'To completable list of key append value.' - self._on_completable('append', key, value, stay_complete) - - def remove_completable(self, key: str, value: str, stay_complete=False - ) -> None: - 'From completable list of key remove value.' - self._on_completable('remove', key, value, stay_complete) - - def declare_complete(self, key: str) -> None: - 'Declare completable at key complete.' - getattr(self, self._completable_key(key)).is_complete = True - self._on_update(key) - class SharedChannelDbFields: 'API for fields shared directly in name and type with TUI.' @@ -685,6 +652,7 @@ class _ChannelDb(_Db, SharedChannelDbFields): class SharedClientDbFields(IrcConnSetup, Generic[_ChannelDbFields]): 'API for fields shared directly in name and type with TUI.' connection_state: str + motd: tuple[str, ...] sasl_account: str sasl_auth_state: str user_modes: str @@ -738,9 +706,22 @@ class _ClientDb(_Db, SharedClientDbFields): caps: _UpdatingDict isupports: _UpdatingDict users: _UpdatingDict - _completable_motd: _CompletableStringsList + _completable_motd: list[str] _channels: dict[str, _ChannelDb] + def _get_completable(self, key) -> list[str]: + return getattr(self, f'_completable_{key}') + + def append_completable(self, key: str, value: str) -> None: + 'To completable list of key append value.' + self._get_completable(key).append(value) + + def declare_complete(self, key: str) -> None: + 'Declare completable at key complete.' + completable = self._get_completable(key) + setattr(self, key, tuple(completable)) + completable.clear() + def user_id(self, query: str | _NickUserHost) -> str: 'Return user_id for nickname of entire NickUserHost, create if none.' nick = query if isinstance(query, str) else query.nick diff --git a/ircplom/client_tui.py b/ircplom/client_tui.py index 7528cb2..fae8c6a 100644 --- a/ircplom/client_tui.py +++ b/ircplom/client_tui.py @@ -178,7 +178,6 @@ class _ChannelDb(_Db, SharedChannelDbFields): class _TuiClientDb(_Db, SharedClientDbFields): caps: dict[str, str] isupports: dict[str, str] - motd: tuple[str] users: dict[str, NickUserHost] _channels: dict[str, _ChannelDb]