From 25afbd77832944f0c2163c0cd2587dab3a977269 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Mon, 22 Sep 2025 09:18:03 +0200 Subject: [PATCH] Calculate chat log direction directly from ChatMessage rather than out= kwarg. --- ircplom/client_tui.py | 33 +++++++++++++++++---------------- test.txt | 6 +++++- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/ircplom/client_tui.py b/ircplom/client_tui.py index 1561620..412aacf 100644 --- a/ircplom/client_tui.py +++ b/ircplom/client_tui.py @@ -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.' diff --git a/test.txt b/test.txt index 352fac7..46cced7 100644 --- a/test.txt +++ b/test.txt @@ -275,7 +275,9 @@ 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! @@ -284,7 +286,9 @@ # 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 @@ -450,7 +454,7 @@ repeat 63:65 3,4,5,6,7,8 $ CONNECTED repeat 66:166 -repeat 177:383 +repeat 177:387 > /quit 0 < -- 2.30.2