From f2ff2187d90ccb5484e0723aae326ce4dac0835e Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sat, 13 Nov 2021 13:37:16 +0000 Subject: [PATCH] Case sensitivity preference can now be specified when checking if an item is in a list. All registered name checks are now case insensitive, since the names themselves are case insensitive. --- .../controller/arbitrary/ArbitraryDataStorageManager.java | 4 ++-- src/main/java/org/qortal/list/ResourceList.java | 7 +++++++ src/main/java/org/qortal/list/ResourceListManager.java | 8 ++++++-- src/main/java/org/qortal/transaction/ChatTransaction.java | 4 ++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataStorageManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataStorageManager.java index fa7f59b5..4a3f6721 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataStorageManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataStorageManager.java @@ -46,7 +46,7 @@ public class ArbitraryDataStorageManager { } public boolean isNameInBlacklist(String name) { - return ResourceListManager.getInstance().listContains("blacklist", "names", name); + return ResourceListManager.getInstance().listContains("blacklist", "names", name, false); } public boolean shouldPreFetchDataForName(String name) { @@ -88,6 +88,6 @@ public class ArbitraryDataStorageManager { } private boolean isFollowingName(String name) { - return ResourceListManager.getInstance().listContains("followed", "names", name); + return ResourceListManager.getInstance().listContains("followed", "names", name, false); } } diff --git a/src/main/java/org/qortal/list/ResourceList.java b/src/main/java/org/qortal/list/ResourceList.java index db9da84d..65375481 100644 --- a/src/main/java/org/qortal/list/ResourceList.java +++ b/src/main/java/org/qortal/list/ResourceList.java @@ -122,6 +122,13 @@ public class ResourceList { return this.list.contains(resource); } + public boolean containsCaseInsensitive(String resource) { + if (resource == null || this.list == null) { + return false; + } + return this.list.stream().anyMatch(resource::equalsIgnoreCase); + } + /* Utils */ diff --git a/src/main/java/org/qortal/list/ResourceListManager.java b/src/main/java/org/qortal/list/ResourceListManager.java index 17bcd3ec..5ab342fd 100644 --- a/src/main/java/org/qortal/list/ResourceListManager.java +++ b/src/main/java/org/qortal/list/ResourceListManager.java @@ -87,12 +87,16 @@ public class ResourceListManager { } } - public boolean listContains(String category, String resourceName, String address) { + public boolean listContains(String category, String resourceName, String item, boolean caseSensitive) { ResourceList list = this.getList(category, resourceName); if (list == null) { return false; } - return list.contains(address); + + if (caseSensitive) { + return list.contains(item); + } + return list.containsCaseInsensitive(item); } public void saveList(String category, String resourceName) { diff --git a/src/main/java/org/qortal/transaction/ChatTransaction.java b/src/main/java/org/qortal/transaction/ChatTransaction.java index a959b1d5..f96e3ca2 100644 --- a/src/main/java/org/qortal/transaction/ChatTransaction.java +++ b/src/main/java/org/qortal/transaction/ChatTransaction.java @@ -147,7 +147,7 @@ public class ChatTransaction extends Transaction { // Check for blacklisted author by address ResourceListManager listManager = ResourceListManager.getInstance(); - if (listManager.listContains("blacklist", "addresses", this.chatTransactionData.getSender())) { + if (listManager.listContains("blacklist", "addresses", this.chatTransactionData.getSender(), true)) { return ValidationResult.ADDRESS_IN_BLACKLIST; } @@ -156,7 +156,7 @@ public class ChatTransaction extends Transaction { if (names != null && names.size() > 0) { for (NameData nameData : names) { if (nameData != null && nameData.getName() != null) { - if (listManager.listContains("blacklist", "names", nameData.getName())) { + if (listManager.listContains("blacklist", "names", nameData.getName(), false)) { return ValidationResult.NAME_IN_BLACKLIST; } }