home · contact · privacy
Move quitting into new dedicated command prompt handling.
authorChristian Heller <c.heller@plomlompom.de>
Fri, 30 May 2025 14:24:24 +0000 (16:24 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Fri, 30 May 2025 14:24:24 +0000 (16:24 +0200)
ircplom.py

index 881a51c3e4a26d2ac410e81c45e633b1b0453430..227a814d458dd619b736d452eb0847f8a08f4110 100755 (executable)
@@ -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__':