banktags: filter out <,>, and / from tag input

This commit is contained in:
Ron Young
2019-10-05 20:36:50 -05:00
committed by Tomas Slusny
parent 021bb109d6
commit 9d898d95c5
2 changed files with 26 additions and 2 deletions

View File

@@ -71,6 +71,7 @@ import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.banktags.tabs.BankSearch; import net.runelite.client.plugins.banktags.tabs.BankSearch;
import net.runelite.client.plugins.banktags.tabs.TabInterface; import net.runelite.client.plugins.banktags.tabs.TabInterface;
import static net.runelite.client.plugins.banktags.tabs.TabInterface.FILTERED_CHARS;
import net.runelite.client.plugins.banktags.tabs.TabSprites; import net.runelite.client.plugins.banktags.tabs.TabSprites;
import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin; import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -278,6 +279,7 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis
String initialValue = Text.toCSV(tags); String initialValue = Text.toCSV(tags);
chatboxPanelManager.openTextInput(name + " tags:<br>(append " + VAR_TAG_SUFFIX + " for variation tag)") chatboxPanelManager.openTextInput(name + " tags:<br>(append " + VAR_TAG_SUFFIX + " for variation tag)")
.addCharValidator(FILTERED_CHARS)
.value(initialValue) .value(initialValue)
.onDone((newValue) -> .onDone((newValue) ->
clientThread.invoke(() -> clientThread.invoke(() ->

View File

@@ -45,6 +45,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.Objects; import java.util.Objects;
import java.util.function.IntPredicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -94,6 +95,8 @@ import net.runelite.client.util.Text;
@Singleton @Singleton
public class TabInterface public class TabInterface
{ {
public static final IntPredicate FILTERED_CHARS = c -> "</>".indexOf(c) == -1;
private static final Color HILIGHT_COLOR = JagexColors.MENU_TARGET; private static final Color HILIGHT_COLOR = JagexColors.MENU_TARGET;
private static final String SCROLL_UP = "Scroll up"; private static final String SCROLL_UP = "Scroll up";
private static final String SCROLL_DOWN = "Scroll down"; private static final String SCROLL_DOWN = "Scroll down";
@@ -252,6 +255,7 @@ public class TabInterface
} }
chatboxPanelManager.openTextInput((inventory ? "Inventory " : "Equipment ") + " tags:") chatboxPanelManager.openTextInput((inventory ? "Inventory " : "Equipment ") + " tags:")
.addCharValidator(FILTERED_CHARS)
.onDone((newTags) -> .onDone((newTags) ->
clientThread.invoke(() -> clientThread.invoke(() ->
{ {
@@ -273,6 +277,7 @@ public class TabInterface
{ {
case NewTab.NEW_TAB: case NewTab.NEW_TAB:
chatboxPanelManager.openTextInput("Tag name") chatboxPanelManager.openTextInput("Tag name")
.addCharValidator(FILTERED_CHARS)
.onDone((tagName) -> clientThread.invoke(() -> .onDone((tagName) -> clientThread.invoke(() ->
{ {
if (!Strings.isNullOrEmpty(tagName)) if (!Strings.isNullOrEmpty(tagName))
@@ -285,7 +290,6 @@ public class TabInterface
.build(); .build();
break; break;
case NewTab.IMPORT_TAB: case NewTab.IMPORT_TAB:
try try
{ {
final String dataString = Toolkit final String dataString = Toolkit
@@ -296,7 +300,24 @@ public class TabInterface
.trim(); .trim();
final Iterator<String> dataIter = Text.fromCSV(dataString).iterator(); final Iterator<String> dataIter = Text.fromCSV(dataString).iterator();
final String name = dataIter.next(); String name = dataIter.next();
StringBuffer sb = new StringBuffer();
for (char c : name.toCharArray())
{
if (FILTERED_CHARS.test(c))
{
sb.append(c);
}
}
if (sb.length() == 0)
{
notifier.notify("Failed to import tag tab from clipboard, invalid format.");
return;
}
name = sb.toString();
final String icon = dataIter.next(); final String icon = dataIter.next();
tabManager.setIcon(name, icon); tabManager.setIcon(name, icon);
@@ -764,6 +785,7 @@ public class TabInterface
private void renameTab(String oldTag) private void renameTab(String oldTag)
{ {
chatboxPanelManager.openTextInput("Enter new tag name for tag \"" + oldTag + "\":") chatboxPanelManager.openTextInput("Enter new tag name for tag \"" + oldTag + "\":")
.addCharValidator(FILTERED_CHARS)
.onDone((newTag) -> clientThread.invoke(() -> .onDone((newTag) -> clientThread.invoke(() ->
{ {
if (!Strings.isNullOrEmpty(newTag) && !newTag.equalsIgnoreCase(oldTag)) if (!Strings.isNullOrEmpty(newTag) && !newTag.equalsIgnoreCase(oldTag))