package mage.client.util; import com.google.common.collect.ImmutableSet; import mage.client.MageFrame; import mage.client.preference.MagePreferences; import mage.view.ChatMessage; import java.util.Arrays; import java.util.Set; public final class IgnoreList { private static final String USAGE = "<br/><font color=yellow>\\ignore - shows current ignore list on this server." + "<br/>\\ignore [username] - add a username to your ignore list on this server." + "<br/>\\unignore [username] - remove a username from your ignore list on this server.</font>"; public static final int MAX_IGNORE_LIST_SIZE = 50; public static Set<ChatMessage.MessageType> IGNORED_MESSAGE_TYPES = ImmutableSet.of(ChatMessage.MessageType.TALK, ChatMessage.MessageType.WHISPER_FROM); public static String usage() { return USAGE; } public static Set<String> ignoreList(String serverAddress) { return MagePreferences.ignoreList(serverAddress); } public static String ignoreListString(String serverAddress) { final String[] list = MagePreferences.ignoreList(serverAddress).toArray(new String[0]); Arrays.sort(list); return "<font color=yellow>Current ignore list on " + serverAddress + ": " + Arrays.toString(list) + "</font>"; } public static String ignore(String serverAddress, String user) { if (user == null || user.isEmpty()) { return ignoreListString(serverAddress); } if (MagePreferences.ignoreList(serverAddress).size() >= MAX_IGNORE_LIST_SIZE) { return "Your ignore list is too big, remove a user to be able to add a new one."; } if (userIsIgnored(serverAddress, user)) { return new StringBuilder() .append(user) .append(" is already on your ignore list on ") .append(serverAddress) .toString(); } MagePreferences.addIgnoredUser(serverAddress, user); updateTablesTable(); return new StringBuilder() .append("Added ") .append(user) .append(" to your ignore list on ") .append(serverAddress) .toString(); } private static void updateTablesTable() { MageFrame mageFrame = MageFrame.getInstance(); if (mageFrame != null) { mageFrame.setTableFilter(); } } public static String unignore(String serverAddress, String user) { if (user == null || user.isEmpty()) { return usage(); } if (MagePreferences.removeIgnoredUser(serverAddress, user)) { updateTablesTable(); return new StringBuilder() .append("Removed ") .append(user) .append(" from your ignore list on ") .append(serverAddress) .toString(); } else { return new StringBuilder() .append("No such user \"") .append(user) .append("\" on your ignore list on ") .append(serverAddress) .toString(); } } public static boolean userIsIgnored(String serverAddress, String username) { return MagePreferences.ignoreList(serverAddress).contains(username); } }