package mage.client.chat; import mage.client.MageFrame; import mage.client.SessionHandler; import mage.client.util.IgnoreList; import mage.interfaces.callback.ClientCallback; import mage.interfaces.callback.ClientCallbackMethod; import mage.view.ChatMessage; import java.text.DateFormat; import java.util.Date; import java.util.Optional; import java.util.StringTokenizer; import java.util.UUID; public final class LocalCommands { private static final DateFormat timeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT); /** * Handler for commands that do not require server interaction, i.e settings etc * @param chatId * @param text * @return true if the command was handled locally, else false */ public static boolean handleLocalCommands(UUID chatId, String text) { final StringTokenizer st = new StringTokenizer(text.trim()); final int tokens = st.countTokens(); if (tokens == 0) { return false; } final String serverAddress = SessionHandler.getSession().getServerHostname().orElseGet(() -> ""); Optional<String> response = Optional.empty(); switch (st.nextToken()) { case "/ignore": case "\\ignore": final String ignoreTarget = tokens > 1 ? st.nextToken() : ""; response = Optional.of(IgnoreList.ignore(serverAddress, ignoreTarget)); break; case "/unignore": case "\\unignore": final String unignoreTarget = tokens > 1 ? st.nextToken() : ""; response = Optional.of(IgnoreList.unignore(serverAddress, unignoreTarget)); break; // TODO: move profanity settings to here default: break; } if (response.isPresent()) { displayLocalCommandResponse(chatId, response.get()); return true; } return false; } private static void displayLocalCommandResponse(UUID chatId, String response) { final String text = new StringBuilder().append("<font color=yellow>").append(response).append("</font>").toString(); ClientCallback chatMessage = new ClientCallback(ClientCallbackMethod.CHATMESSAGE, chatId, new ChatMessage("", text, timeFormatter.format(new Date()), ChatMessage.MessageColor.BLUE)); MageFrame.getInstance().processCallback(chatMessage); } }