home · contact · privacy
Calculate chat log direction directly from ChatMessage rather than out= kwarg.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 22 Sep 2025 07:18:03 +0000 (09:18 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 22 Sep 2025 07:18:03 +0000 (09:18 +0200)
ircplom/client_tui.py
test.txt

index 15616205a013e2b7a593d38a4369f64604183968..412aacf05412af240d0820557c9040064eebeac5 100644 (file)
@@ -342,15 +342,18 @@ class _ClientWindowsManager:
         'From parsing scope, kwargs, build prefix before sending to logger.'
         first_char = '$'
         sender_label = ''
-        if 'out' in kwargs and scope != LogScope.DEBUG:
-            first_char = _LOG_PREFIX_OUT if kwargs['out'] else _LOG_PREFIX_IN
+        receiving: Optional[bool] = None
+        if scope == LogScope.RAW:
+            receiving = not kwargs.get('out', False)
+        if scope == LogScope.CHAT and 'sender' in kwargs:
+            receiving = bool(kwargs['sender'])
             if scope == LogScope.CHAT:
-                sender_label = (
-                        ' [' + (self.db.users['me'].nick if kwargs['out']
-                                else kwargs['them'])
-                        + ']')
-        if kwargs.get('as_notice', False):
-            first_char *= 3
+                sender_label = ' [' + (kwargs['sender'] if receiving
+                                       else self.db.users['me'].nick) + ']'
+        if receiving is not None:
+            first_char = _LOG_PREFIX_IN if receiving else _LOG_PREFIX_OUT
+            if kwargs.get('is_notice', False):
+                first_char *= 3
         prefix = f'{first_char}{sender_label}'
         self._tui_log(msg, scope=scope, prefix=prefix, **kwargs)
 
@@ -366,9 +369,8 @@ class _ClientWindowsManager:
                 if update.full_path == ('message',):
                     log_kwargs['log_target'] = (update.value.target
                                                 or update.value.sender)
-                    log_kwargs['them'] = update.value.sender
-                    log_kwargs['as_notice'] = update.value.is_notice
-                    log_kwargs['out'] = False
+                    log_kwargs['sender'] = update.value.sender
+                    log_kwargs['is_notice'] = update.value.is_notice
                 else:
                     log_kwargs['log_target'] = update.full_path[1]
             if isinstance(result, list):
@@ -386,12 +388,12 @@ class _ClientWindowsManager:
                     self.log(f'{log_path} cleared', **log_kwargs)
                 else:
                     announcement = f'{log_path} set to:'
-                    if isinstance(result, ChatMessage) or not isinstance(result, tuple):
-                        self.log(f'{announcement} [{result}]', **log_kwargs)
-                    else:
+                    if isinstance(result, tuple):
                         self.log(announcement, **log_kwargs)
                         for item in result:
                             self.log(f'  {item}', **log_kwargs)
+                    else:
+                        self.log(f'{announcement} [{result}]', **log_kwargs)
         for win in [w for w in self.windows if isinstance(w, _ChatWindow)]:
             win.set_prompt_prefix()
         return bool([w for w in self.windows if w.tainted])
@@ -491,8 +493,7 @@ class ClientKnowingTui(Client):
         except SendFail as e:
             self._log(f'{e}', scope=LogScope.SAME, alert=True)
         else:
-            self._log(msg, scope=LogScope.CHAT, log_target=chat_target,
-                      out=True)
+            self.db.messaging('').to(chat_target).privmsg = msg  # type: ignore
 
     def reconnect(self) -> None:
         'Catch /reconnect, only initiate if not connected, else complain back.'
index 352fac78daf8ce8a0ab87afb54b2b3b53f0afdde..46cced7e2894116d6e42b9c1f8b7bf14fca2692f 100644 (file)
--- a/test.txt
+++ b/test.txt
 1,2 $ message set to: [P   :]
 > /privmsg baz hello, how is it going
 2 > PRIVMSG baz :hello, how is it going
+1,2 $ message set to: [P  baz :hello, how is it going]
 7 > [foo1] hello, how is it going
+1,2 $ message set to: [P   :]
 0:2 < :baz!~baz@baz.baz PRIVMSG foo1 :fine!
 1,2 $ message set to: [P baz  :fine!]
 7 < [baz] fine!
 # handle failure to query absent user
 > /privmsg barbar hello!
 2 > PRIVMSG barbar :hello!
+1,2 $ message set to: [P  barbar :hello!]
 8 > [foo1] hello!
+1,2 $ message set to: [P   :]
 0:2 < :*.?.net 401 foo1 barbar :No such nick/channel
 8 !$ barbar not online
 
 repeat 63:65
 3,4,5,6,7,8 $ CONNECTED
 repeat 66:166
-repeat 177:383
+repeat 177:387
 
 > /quit
 0 <