home · contact · privacy
Move prompt command processing out of TuiLoop.
authorChristian Heller <c.heller@plomlompom.de>
Fri, 30 May 2025 13:30:11 +0000 (15:30 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Fri, 30 May 2025 13:30:11 +0000 (15:30 +0200)
ircplom.py

index ddea13e07cb1fb9d0f84499ff12bec8389ae8f1f..2e5defca5da609a22cd12c2b4534d97510aeb633 100755 (executable)
@@ -357,11 +357,7 @@ class TuiLoop(Loop):
             self._draw_log()
         elif event.type_ == 'INPUT_PROMPT':
             if event.payload[0] == 'ENTER':
-                toks = self._prompt.split(maxsplit=1)
-                if toks and toks[0] in {'QUIT'}:
-                    self.broadcast('SEND', IrcMessage(toks[0], toks[1:]))
-                else:
-                    self.broadcast('ALERT', f'invalid message: {self._prompt}')
+                self.broadcast('PROMPT_COMMAND', self._prompt)
                 self._prompt = ''
             elif event.payload[0] == 'BACKSPACE':
                 self._prompt = self._prompt[:-1]
@@ -450,6 +446,15 @@ def run() -> None:
                         q_to_main.put(
                                 Event('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.put(
+                                Event('SEND', IrcMessage(toks[0], toks[1:])))
+                    else:
+                        q_to_main.put(
+                            Event('ALERT',
+                                  f'invalid message: {event.payload}'))
 
 
 if __name__ == '__main__':