From bc03a692264de9e6b06539a8abf17b69cc65a2ff Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Thu, 13 Apr 2017 21:44:50 +0200 Subject: be more careful with corner cases when mentioning multiple people --- .../messenger/utils/NickValidityChecker.java | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/main/java/de/pixart/messenger/utils/NickValidityChecker.java (limited to 'src/main/java/de/pixart/messenger/utils') diff --git a/src/main/java/de/pixart/messenger/utils/NickValidityChecker.java b/src/main/java/de/pixart/messenger/utils/NickValidityChecker.java new file mode 100644 index 000000000..0b4df771f --- /dev/null +++ b/src/main/java/de/pixart/messenger/utils/NickValidityChecker.java @@ -0,0 +1,33 @@ +package de.pixart.messenger.utils; + +import java.util.HashSet; +import java.util.Set; +import java.util.List; + +import de.pixart.messenger.entities.Conversation; +import de.pixart.messenger.xmpp.jid.InvalidJidException; +import de.pixart.messenger.xmpp.jid.Jid; + +public class NickValidityChecker { + + private static boolean check(final Conversation conversation, final String nick) { + Jid room = conversation.getJid(); + try { + Jid full = Jid.fromParts(room.getLocalpart(), room.getDomainpart(), nick); + return conversation.hasMessageWithCounterpart(full) + || conversation.getMucOptions().findUserByFullJid(full) != null; + } catch (InvalidJidException e) { + return false; + } + } + + public static boolean check(final Conversation conversation, final List nicks) { + Set previousNicks = new HashSet<>(nicks); + for(String previousNick : previousNicks) { + if (!NickValidityChecker.check(conversation,previousNick)) { + return false; + } + } + return true; + } +} \ No newline at end of file -- cgit v1.2.3