home · contact · privacy
Fix broken DB clearing after disconnect.
authorChristian Heller <c.heller@plomlompom.de>
Sat, 6 Sep 2025 03:22:15 +0000 (05:22 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sat, 6 Sep 2025 03:22:15 +0000 (05:22 +0200)
ircplom/client.py
ircplom/client_tui.py

index a8a6d30a9df54fac3eb96fc579e21e16a625d5a8..c61ece46e5aebf19382294dc6decebc0191ec3a4 100644 (file)
@@ -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:
index dc7c0fa1ed978ef4d53a62904ef19e2e168270e7..dea90f53b3127b5f259a984d62e749ef4e0980bc 100644 (file)
@@ -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