home · contact · privacy
Use NamedTuple for login names collection.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 11 Jun 2025 12:17:37 +0000 (14:17 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 11 Jun 2025 12:17:37 +0000 (14:17 +0200)
ircplom.py

index 930b8874f7f1852f57f1dc10be6f1e7b466d9b1e..0c9bac25628e03acd3926913ca3805ebaf6797bf 100755 (executable)
@@ -213,6 +213,13 @@ class Terminal:
                 yield str(blessed_key)
 
 
+class LoginNames(NamedTuple):
+    'Collects the names needed on server connect for USER, NICK commands.'
+    user: str
+    nick: str
+    real: str
+
+
 class IrcConnection:
     'Abstracts socket connection, loop over it, and handling messages from it.'
 
@@ -220,7 +227,7 @@ class IrcConnection:
                  q_to_main: EventQueue,
                  idx: int,
                  hostname: str,
-                 login: tuple[str, str, str]
+                 login: LoginNames,
                  ) -> None:
         self._idx = idx
         self._q_to_main = q_to_main
@@ -830,8 +837,8 @@ class TuiLoop(Loop):
                      realname: str
                      ) -> None:
         'Send INIT_CONNECT command to main loop.'
-        self.broadcast(EventType.INIT_CONNECT,
-                       (hostname, (username, nickname, realname)))
+        login = LoginNames(user=username, nick=nickname, real=realname)
+        self.broadcast(EventType.INIT_CONNECT, (hostname, login))
 
     def cmd__prompt_enter(self) -> None:
         'Get prompt content from .window.prompt.enter, parse to & run command.'
@@ -905,8 +912,8 @@ class ConnectionLoop(Loop):
             return False
         if event.type_ == EventType.CONNECTED:
             login = event.payload[1]
-            self._send('USER', (login[0], '0', '*', login[2]))
-            self._send('NICK', (login[1],))
+            self._send('USER', (login.user, '0', '*', login.real))
+            self._send('NICK', (login.nick,))
         return True
 
     def process_bonus(self, yielded: str) -> None: