home · contact · privacy
Refactor around PRIVMSG/NOTICE to reduce LogScope references in client.py.
authorChristian Heller <c.heller@plomlompom.de>
Sun, 7 Sep 2025 14:45:19 +0000 (16:45 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 7 Sep 2025 14:45:19 +0000 (16:45 +0200)
ircplom/client.py
ircplom/client_tui.py

index 17645ce007c94084092a8e974c2a4e57b3dca11a..3bbe5d79079b7aa994c0741cb67d8fc561266801 100644 (file)
@@ -707,7 +707,8 @@ class Client(ABC, ClientQueueMixin):
         pass
 
     @abstractmethod
-    def _log(self, msg: str, scope=LogScope.SERVER, **kwargs) -> None:
+    def _log(self, msg: str, scope: Optional[LogScope] = None, **kwargs
+             ) -> None:
         pass
 
     def send(self, verb: str, *args) -> None:
@@ -804,13 +805,11 @@ class Client(ABC, ClientQueueMixin):
             if user_id == 'me':
                 self.db.nick_wanted = ret['nick']
         elif ret['_verb'] in {'NOTICE', 'PRIVMSG'}:
-            kw: dict[str, bool | str | LogScope] = {
-                    'as_notice': msg.verb == 'NOTICE'}
-            if 'sender' in ret:  # not just server message
-                kw |= {'sender': ret['sender'].nick, 'scope': LogScope.CHAT,
-                       'target': (ret['sender'].nick if 'nick' in ret
-                                  else ret['channel'])}
-            self._log(ret['message'], out=False, **kw)
+            kw: dict[str, str | bool] = {'as_notice': ret['_verb'] == 'NOTICE'}
+            if (scope := LogScope.CHAT if 'sender' in ret else None):
+                kw['them'] = ret['sender'].nick
+                kw['target'] = kw['them'] if 'nick' in ret else ret['channel']
+            self._log(ret['message'], out=False, scope=scope, **kw)
         elif ret['_verb'] == 'PART':
             ret['parter'].part(ret['channel'], ret.get('message', ''))
             if ret['parter'] is self.db.users['me']:
index f9e0138a67d02282317d0d0ee254d49ffd400aed..8fea54b384a7eca75320c9c8803d3ae70607cf18 100644 (file)
@@ -326,7 +326,7 @@ class _ClientWindowsManager:
             if scope == LogScope.CHAT:
                 sender_label = (
                         ' [' + (self.db.users['me'].nick if kwargs['out']
-                                else kwargs['sender'])
+                                else kwargs['them'])
                         + ']')
         if kwargs.get('as_notice', False):
             first_char *= 3
@@ -393,7 +393,7 @@ class ClientTui(BaseTui):
             if scope == LogScope.CHAT:
                 chatname = (kwargs['target']
                             if kwargs['target'] != m.db.users['me'].nick
-                            else kwargs['sender'])
+                            else kwargs['them'])
                 return [m.window(LogScope.CHAT, chatname=chatname)]
             if scope == LogScope.USER:
                 return m.windows_for_userid(kwargs['target'])
@@ -469,10 +469,13 @@ class _ClientKnowingTui(Client):
             return
         self._start_connecting()
 
-    def _log(self, msg: str, scope=LogScope.SERVER, **kwargs) -> None:
+    def _log(self, msg: str, scope: Optional[LogScope] = None, **kwargs
+             ) -> None:
         to_log = []
         if msg:
             to_log += [msg]
+        if not scope:
+            scope = LogScope.SERVER
         for item in to_log:
             self._client_tui_trigger('log', scope=scope, msg=item, **kwargs)
             if scope == LogScope.RAW: