+/*
+ * 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;
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