From ffaff083055ced61e141bfc7352036a2fcbee9d7 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Fri, 30 May 2025 16:24:24 +0200 Subject: [PATCH] Move quitting into new dedicated command prompt handling. --- ircplom.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/ircplom.py b/ircplom.py index 881a51c..227a814 100755 --- a/ircplom.py +++ b/ircplom.py @@ -364,7 +364,7 @@ class TuiLoop(Loop): self._log_buffer += [f'---> {event.payload}'] self._draw_log() elif event.type_ == 'INPUT_PROMPT': - if event.payload[0] == 'ENTER': + if event.payload[0] == 'ENTER' and self._prompt: self.broadcast('PROMPT_COMMAND', self._prompt) self._prompt = '' elif event.payload[0] == 'BACKSPACE': @@ -425,10 +425,8 @@ class KeyboardLoop(Loop): self.broadcast('INPUT_PROMPT', ('BACKSPACE',)) elif len(yielded) == 1: self.broadcast('INPUT_PROMPT', ('CHARACTER', yielded)) - elif yielded == '[81]': - self.broadcast('QUIT') else: - self.broadcast('ALERT', f'unknown combo: {yielded}') + self.broadcast('ALERT', f'unknown keyboard input: {yielded}') def run() -> None: @@ -454,12 +452,18 @@ def run() -> None: q_to_main.eput('SEND', IrcMessage('PONG', [msg.parameters[0]])) elif event.type_ == 'PROMPT_COMMAND': - toks = event.payload.split(maxsplit=1) - if toks and toks[0] in {'QUIT'}: - q_to_main.eput('SEND', IrcMessage(toks[0], toks[1:])) - else: - q_to_main.eput('ALERT', - f'invalid message: {event.payload}') + if event.payload[0] == '/': + toks_init = event.payload[1:].split(maxsplit=1) + command = toks_init[0] + if command == 'disconnect': + q_to_main.eput('SEND', + IrcMessage('QUIT', toks_init[1:])) + continue + if command == 'quit' and len(toks_init) == 1: + q_to_main.eput('QUIT') + continue + q_to_main.eput('ALERT', + f'invalid prompt command: {event.payload}') if __name__ == '__main__': -- 2.30.2