]> jfr.im git - irc/rizon/acid.git/commitdiff
gutted the old TMode implementation that was doing redundant lookups already handled...
authorchristinaa <redacted>
Tue, 29 Aug 2017 18:14:09 +0000 (12:14 -0600)
committerchristinaa <redacted>
Tue, 29 Aug 2017 18:14:09 +0000 (12:14 -0600)
acid/src/main/java/net/rizon/acid/messages/TMode.java

index 25dc5bebbb81abe198652d22e6a836aa7af945c1..5694efae798577fdc32960a660fbaeb5fcc884f7 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * Copyright (C) 2017 Kristina Brooks. All rights reserved.
+ *
+ * Support for TS6 TMODE.
+ * Format is :<SID|UID> TMODE <TS> <CHANNAME> <MODESTRING>
+ */
+
 package net.rizon.acid.messages;
 
 import net.rizon.acid.core.Acidictive;
@@ -17,45 +24,37 @@ public class TMode extends Message
                super("TMODE");
        }
 
-       // :4SSAAAAWB TMODE 1233718499 #a -sOb blah!*@*
-
-       @Override
-       public void on(String source, String[] params)
-       {
-               String setter = Server.toName(source);
-               if (setter == source)
-                       setter = User.toName(source);
-               if (setter == source)
-               {
-                       log.warn("TMODE from nonexistent source " + source);
-                       return;
-               }
-
+       /* common handler */
+       private void handleTsModeChange(String setBy, String[] params) {
                Channel chan = Channel.findChannel(params[1]);
-               if (chan == null)
-                       return;
-
-               int ts;
-               try
-               {
-                       ts = Integer.parseInt(params[0]);
-               }
-               catch (NumberFormatException ex)
-               {
-                       ex.printStackTrace();
-                       return;
-               }
-
-               if (ts > chan.getTS())
+               if (chan == null || shouldDropTsMessage(chan.getTS(), params[0]))
                        return;
 
                String modes = params[2];
                for (int i = 3; i < params.length; i++)
                        modes += " " + params[i];
 
-               Acidictive.onChanMode(setter, chan, modes);
+               Acidictive.onChanMode(setBy, chan, modes);
 
                if (chan.size() == 0 && !chan.hasMode('z'))
                        chan.destroy();
        }
+
+       /*
+        * old implementation handled these in ::on which is redundant since
+        * AcidCore::processMessage already does these lookups, no need to
+        * do them again.
+        */
+
+       @Override
+       public void onUser(User user, String[] params)
+       {
+               handleTsModeChange(user.getNick(), params);
+       }
+
+       @Override
+       public void onServer(Server server, String[] params)
+       {
+               handleTsModeChange(server.getName(), params);
+       }
 }
\ No newline at end of file