Skip to content

Commit

Permalink
Updated to v0.9.3b5.
Browse files Browse the repository at this point in the history
  • Loading branch information
23rd committed Dec 25, 2018
2 parents fbf2ab3 + aebbd8c commit 70cbff2
Show file tree
Hide file tree
Showing 63 changed files with 911 additions and 277 deletions.
2 changes: 1 addition & 1 deletion src/chatty/Chatty.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public class Chatty {
* by points. May contain a single "b" for beta versions, which are counted
* as older (so 0.8.7b4 is older than 0.8.7).
*/
public static final String VERSION = "0.9.3.136";
public static final String VERSION = "0.9.3.137";

/**
* Enable Version Checker (if you compile and distribute this yourself, you
Expand Down
31 changes: 30 additions & 1 deletion src/chatty/Helper.java
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ public static String makeBanInfo(long duration, String reason,
return banInfo;
}

public static String makeBanCommand(User user, long duration, String reason, String id) {
public static String makeBanCommand(User user, long duration, String id) {
if (duration > 0) {
return StringUtil.concats("timeout", user.getName(), duration).trim();
}
Expand Down Expand Up @@ -753,4 +753,33 @@ public static String encodeFilename2(String input) {
return input.replaceAll("[%\\.\"\\*/:<>\\?\\\\\\|\\+,\\.;=\\[\\]]", "_");
}

/**
* Returns commands split up by '|' and trimmed for leading and trailing
* whitespace. Only non-empty commands are included.
*
* Use '||' to use the '|' character literally.
*
* Example: '/chain /echo first | /echo second || third'
* Returns: '/echo first' and '/echo second | third'
*
* @param input
* @return
*/
public static List<String> getChainedCommands(String input) {
if (StringUtil.isNullOrEmpty(input)) {
return new ArrayList<>();
}
List<String> result = new ArrayList<>();
// A '|' not preceeded or followed by '|'
String[] split = input.split("(?<!\\|)\\|(?!\\|)");
for (String part : split) {
// Remove first '|' from two or more '|' in a row
part = part.trim().replaceAll("\\|(\\|+)", "$1");
if (!part.isEmpty()) {
result.add(part);
}
}
return result;
}

}
2 changes: 1 addition & 1 deletion src/chatty/Logging.java
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ static class TextFormatter extends Formatter {

@Override
public String format(LogRecord record) {
return String.format("[%1$tF %1$tT %5$s] %2$s [%3$s/%4$s]\n",
return String.format("[%1$tF %1$tT/%1$tL %5$s] %2$s [%3$s/%4$s]\n",
new Date(record.getMillis()),
record.getMessage(),
record.getSourceClassName(),
Expand Down
22 changes: 15 additions & 7 deletions src/chatty/SettingsManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
package chatty;

import chatty.gui.components.updating.Version;
import chatty.gui.HtmlColors;
import chatty.util.colors.HtmlColors;
import chatty.gui.WindowStateManager;
import chatty.gui.components.settings.NotificationSettings;
import chatty.gui.notifications.Notification;
import chatty.util.BackupManager;
import chatty.util.DateTime;
import chatty.util.StringUtil;
import chatty.util.colors.ColorCorrection;
import chatty.util.hotkeys.Hotkey;
import chatty.util.settings.Setting;
import chatty.util.settings.Settings;
Expand Down Expand Up @@ -64,7 +65,7 @@ public SettingsManager(Settings settings) {
/**
* Defines what settings there are and their default values.
*/
void defineSettings() {
public void defineSettings() {

// Additional files (in addition to the default file)
String loginFile = Chatty.getUserDataDirectory()+"login";
Expand Down Expand Up @@ -243,6 +244,7 @@ void defineSettings() {
settings.addString("searchResultColor", "LightYellow");
settings.addString("searchResultColor2", "#FFFF80");
settings.addBoolean("colorCorrection", true);
settings.addString("nickColorCorrection", "normal");
settings.addList("colorPresets", new ArrayList<>(), Setting.LIST);

// Message Colors
Expand Down Expand Up @@ -611,7 +613,7 @@ void defineSettings() {
/**
* Tries to load the settings from file.
*/
void loadSettingsFromFile() {
public void loadSettingsFromFile() {
settings.loadSettingsFromJson();
}

Expand All @@ -620,7 +622,7 @@ void loadSettingsFromFile() {
* performed in (seconds). The backup manager will decide whether to
* actually make a backup.
*/
void backupFiles() {
public void backupFiles() {
long backupDelay = DateTime.DAY * settings.getLong("backupDelay");
backup.performBackup((int)backupDelay, (int)settings.getLong("backupCount"));
}
Expand All @@ -633,7 +635,7 @@ void backupFiles() {
*
* @param args Map with commandline settings, key=value pairs
*/
void loadCommandLineSettings(Map<String, String> args) {
public void loadCommandLineSettings(Map<String, String> args) {
for (String key : args.keySet()) {
// Go through all commandline options
String value = args.get(key);
Expand Down Expand Up @@ -687,7 +689,7 @@ void loadCommandLineSettings(Map<String, String> args) {
/**
* Override some now unused settings or change settings on version change.
*/
void overrideSettings() {
public void overrideSettings() {
settings.setBoolean("ignoreJoinsParts", false);
if (switchedFromVersionBefore("0.7.2")) {
String value = settings.getString("timeoutButtons");
Expand Down Expand Up @@ -790,10 +792,16 @@ void overrideSettings() {
// Turn off Highlight Background if using dark background (if not loaded
// from the settings yet)
Color bgColor = HtmlColors.decode(settings.getString("backgroundColor"));
if (HtmlColors.getBrightness(bgColor) < 128 && !settings.isValueSet("highlightBackground")) {
if (ColorCorrection.isDarkColor(bgColor) && !settings.isValueSet("highlightBackground")) {
settings.setBoolean("highlightBackground", false);
}

if (switchedFromVersionBefore("0.9.3-b5")) {
if (!settings.getBoolean("colorCorrection")) {
settings.setString("nickColorCorrection", "off");
}
}

overrideHotkeySettings();
}

Expand Down
72 changes: 59 additions & 13 deletions src/chatty/TwitchClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import chatty.gui.GuiUtil;
import chatty.gui.LaF;
import chatty.gui.MainGui;
import chatty.gui.components.textpane.ModLogInfo;
import chatty.gui.components.updating.Stuff;
import chatty.splash.Splash;
import chatty.util.BTTVEmotes;
Expand Down Expand Up @@ -66,6 +67,7 @@
import chatty.util.settings.Settings;
import chatty.util.settings.SettingsListener;
import chatty.util.srl.SpeedrunsLive;
import java.awt.Color;
import java.awt.Point;
import java.awt.SplashScreen;
import java.io.File;
Expand Down Expand Up @@ -124,6 +126,7 @@ public class TwitchClient {
public final TwitchApi api;

public final chatty.util.api.pubsub.Manager pubsub;
private final PubSubResults pubsubListener = new PubSubResults();

public final TwitchEmotes twitchemotes;

Expand Down Expand Up @@ -229,7 +232,7 @@ public TwitchClient(Map<String, String> args) {
Language.setLanguage(settings.getString("language"));

pubsub = new chatty.util.api.pubsub.Manager(
settings.getString("pubsub"), new PubSubResults(), api);
settings.getString("pubsub"), pubsubListener, api);

frankerFaceZ = new FrankerFaceZ(new EmoticonsListener(), settings);

Expand All @@ -240,7 +243,7 @@ public TwitchClient(Map<String, String> args) {

usercolorManager = new UsercolorManager(settings);
usericonManager = new UsericonManager(settings);
customCommands = new CustomCommands(settings, api);
customCommands = new CustomCommands(settings, api, this);
customCommands.loadFromSettings();
botNameManager = new BotNameManager(settings);
settings.addSettingsListener(new SettingSaveListener());
Expand Down Expand Up @@ -457,7 +460,7 @@ private void checkNewVersion() {
*/
private void createTestUser(String name, String channel) {
testUser = new User(name, name, Room.createRegular(channel));
testUser.setColor("blue");
testUser.setColor(new Color(94, 0, 211));
testUser.setGlobalMod(true);
//testUser.setBot(true);
//testUser.setTurbo(true);
Expand Down Expand Up @@ -725,7 +728,10 @@ public void textInput(Room room, String text, Parameters commandParameters) {
return;
}
String channel = room.getChannel();
if (text.startsWith("/")) {
if (text.startsWith("//")) {
anonCustomCommand(room, text.substring(1), commandParameters);
}
else if (text.startsWith("/")) {
commandInput(room, text, commandParameters);
}
else {
Expand Down Expand Up @@ -1160,6 +1166,16 @@ else if (c.command(channel, command, parameter, null)) {
else if (g.commandGui(channel, command, parameter)) {
// Already done if true :P
}

else if (command.equals("chain")) {
List<String> commands = Helper.getChainedCommands(parameter);
if (commands.isEmpty()) {
g.printSystem("No valid commands");
}
for (String chainedCommand : commands) {
textInput(room, chainedCommand, parameters);
}
}

// Has to be tested last, so regular commands with the same name take
// precedence
Expand Down Expand Up @@ -1372,20 +1388,24 @@ else if (command.equals("bantest")) {
} else if (command.equals("psdisconnect")) {
pubsub.disconnect();
} else if (command.equals("modaction")) {
String by = "Blahfasel";
String action = "timeout";
List<String> args = new ArrayList<>();
if (parameter != null && !parameter.isEmpty()) {
String[] split = parameter.split(" ");
action = split[0];
for (int i=1;i<split.length;i++) {
by = split[0];
action = split[1];
for (int i=2;i<split.length;i++) {
args.add(split[i]);
}
} else {
args.add("tduvatest");
args.add("5");
}
ModeratorActionData data = new ModeratorActionData("", "", "", room.getStream(), action, args, by, "");
//args.add("still not using LiveSplit Autosplitter D:");
g.printModerationAction(new ModeratorActionData("", "", "", room.getStream(), action, args, "Blahfasel", ""), false);
//g.printModerationAction(new ModeratorActionData("", "", "", room.getStream(), action, args, "Blahfasel", ""), false);
pubsubListener.messageReceived(new Message(null, null, data, null));
} else if (command.equals("automod")) {
List<String> args = new ArrayList<>();
args.add("tduva");
Expand Down Expand Up @@ -1441,6 +1461,14 @@ public void run() {
}
}

private void anonCustomCommand(Room room, String text, Parameters parameters) {
CustomCommand command = CustomCommand.parse(text);
if (parameters == null) {
parameters = Parameters.create(null);
}
anonCustomCommand(room, command, parameters);
}

public void anonCustomCommand(Room room, CustomCommand command, Parameters parameters) {
if (command.hasError()) {
g.printLine("Custom command invalid: "+command.getError());
Expand Down Expand Up @@ -1573,12 +1601,17 @@ private void commandServer(String parameter) {
*
* @param channel
*/
public void commandJoinChannel(String channel) {
if (channel == null) {
public void commandJoinChannel(String channelString) {
if (channelString == null) {
g.printLine("A channel to join needs to be specified.");
} else {
channel = StringUtil.toLowerCase(channel.trim());
c.joinChannel(channel);
String[] channelList = channelString.split(" ");
for (String channel: channelList)
{
channel = StringUtil.toLowerCase(channel.trim());
c.joinChannel(channel);
}

}
}

Expand Down Expand Up @@ -1948,12 +1981,21 @@ public void messageReceived(Message message) {
if (message.data != null && message.data instanceof ModeratorActionData) {
ModeratorActionData data = (ModeratorActionData)message.data;
if (data.stream != null) {
String channel = Helper.toChannel(data.stream);
g.printModerationAction(data, data.created_by.equals(c.getUsername()));
chatLog.modAction(data);

User modUser = c.getUser(Helper.toChannel(data.stream), data.created_by);
modUser.addModAction(data.getCommandAndParameters());
User modUser = c.getUser(channel, data.created_by);
modUser.addModAction(data);
g.updateUserinfo(modUser);

String bannedUsername = ModLogInfo.getBannedUsername(data);
if (bannedUsername != null) {
// If this is actually a ban, add info to banned user
User bannedUser = c.getUser(channel, bannedUsername);
bannedUser.addBanInfo(data);
g.updateUserinfo(bannedUser);
}
}
}
}
Expand Down Expand Up @@ -2859,6 +2901,10 @@ public ChannelState getChannelState(String channel) {
return c.getChannelState(channel);
}

public Collection<String> getOpenChannels() {
return c.getOpenChannels();
}

private class ChannelStateUpdater implements ChannelStateListener {

@Override
Expand Down
4 changes: 4 additions & 0 deletions src/chatty/TwitchConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -1352,6 +1352,10 @@ public void onChannelCommand(MsgTags tags, String nick,
}
if (!tags.isEmpty("room-id")) {
listener.onRoomId(channel, tags.get("room-id"));
// Set id for room (this should not run too often to
// worry about object creation and stuff)
Room roomWithId = Room.createRegularWithId(channel, tags.get("room-id"));
rooms.addRoom(roomWithId);
}
}
} else if (command.equals("SERVERCHANGE")) {
Expand Down
Loading

0 comments on commit 70cbff2

Please sign in to comment.