From: Christian Heller Date: Sat, 6 Sep 2025 03:22:15 +0000 (+0200) Subject: Fix broken DB clearing after disconnect. X-Git-Url: https://plomlompom.com/repos/?a=commitdiff_plain;h=0c1edf417a937d77159d7b5c49d6ca7bdb109fa3;p=ircplom Fix broken DB clearing after disconnect. --- diff --git a/ircplom/client.py b/ircplom/client.py index a8a6d30..c61ece4 100644 --- a/ircplom/client.py +++ b/ircplom/client.py @@ -50,6 +50,10 @@ class Dict(Generic[DictItem]): self._dict: dict[str, DictItem] = {} super().__init__(**kwargs) + def keys(self) -> tuple[str, ...]: + 'Keys of item registrations.' + return tuple(self._dict.keys()) + def __getitem__(self, key: str) -> DictItem: return self._dict[key] @@ -83,10 +87,6 @@ class _Dict(Dict[DictItem]): def __delitem__(self, key: str) -> None: del self._dict[key] - def keys(self) -> tuple[str, ...]: - 'Keys of item registrations.' - return tuple(self._dict.keys()) - def values(self) -> tuple[DictItem, ...]: 'Items registered.' return tuple(self._dict.values()) @@ -509,9 +509,9 @@ class _ClientDb(_UpdatingMixin, SharedClientDbFields): 'Wipe updating attributes.' for key, value in [(k, v) for k, v in self._deep_annotations().items() if k not in self._keep_on_clear]: - if isinstance(value, (_Dict, _CompletableStringsList)): - value.clear() - elif isinstance(value, str): + if hasattr(value, 'clear'): + getattr(self, key).clear() + elif issubclass(value, str): setattr(self, key, '') def purge_users(self) -> None: diff --git a/ircplom/client_tui.py b/ircplom/client_tui.py index dc7c0fa..dea90f5 100644 --- a/ircplom/client_tui.py +++ b/ircplom/client_tui.py @@ -271,7 +271,9 @@ class _ClientWindowsManager: _ChannelWindow if self.db.is_chan_name(chatname) else _QueryWindow) kwargs['chatname'] = chatname - kwargs['get_nick_data'] = lambda: self.db.users['me'].nick + kwargs['get_nick_data'] = lambda: (self.db.users['me'].nick + if 'me' in self.db.users.keys() + else '?') win = self._tui_new_window(**kwargs) self.windows += [win] return win