From 1621fb481fe91b084a48326419969f3a22ccbbe2 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sat, 29 Sep 2018 16:39:37 +0300 Subject: Mentions --- .../main/java/com/juick/service/SubscriptionService.java | 2 +- juick-common/src/main/java/com/juick/util/MessageUtils.java | 13 ++++++++++++- juick-common/src/test/java/com/juick/MessageTest.java | 10 ++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) (limited to 'juick-common') diff --git a/juick-common/src/main/java/com/juick/service/SubscriptionService.java b/juick-common/src/main/java/com/juick/service/SubscriptionService.java index 8132ec10..98ea59e0 100644 --- a/juick-common/src/main/java/com/juick/service/SubscriptionService.java +++ b/juick-common/src/main/java/com/juick/service/SubscriptionService.java @@ -30,7 +30,7 @@ import java.util.List; public interface SubscriptionService { List getJIDSubscribedToUser(int uid, boolean friendsonly); - List getSubscribedUsers(int uid, int mid); + List getSubscribedUsers(int uid, Message msg); List getUsersSubscribedToComments(Message msg, Message reply); diff --git a/juick-common/src/main/java/com/juick/util/MessageUtils.java b/juick-common/src/main/java/com/juick/util/MessageUtils.java index bac24507..4de68cb9 100644 --- a/juick-common/src/main/java/com/juick/util/MessageUtils.java +++ b/juick-common/src/main/java/com/juick/util/MessageUtils.java @@ -68,6 +68,9 @@ public class MessageUtils { private final static String replyNumberRegex = "((?<=\\s)|(?<=\\A))\\/(\\d+)((?=\\s)|(?=\\Z)|(?=\\p{Punct}))"; + private final static String usernameRegex = "((?<=\\s)|(?<=\\A))@([\\w\\-]{2,16})((?=\\s)|(?=\\Z)|(?=\\p{Punct}))"; + private final static Pattern usernamePattern = Pattern.compile(usernameRegex); + public static String formatMessageCode(String msg) { msg = msg.replaceAll("&", "&"); msg = msg.replaceAll("<", "<"); @@ -139,7 +142,7 @@ public class MessageUtils { // @username // @username - msg = msg.replaceAll("((?<=\\s)|(?<=\\A))@([\\w\\-]{2,16})((?=\\s)|(?=\\Z)|(?=\\p{Punct}))", "$1@$2$3"); + msg = msg.replaceAll(usernameRegex, "$1@$2$3"); // (http://juick.com/last?page=2) // (juick.com) @@ -301,4 +304,12 @@ public class MessageUtils { } return input; } + public static List getMentions(Message msg) { + Matcher usernameMatcher = usernamePattern.matcher(msg.getText()); + List result = new ArrayList<>(); + while (usernameMatcher.find()) { + result.add(usernameMatcher.group()); + } + return result; + } } diff --git a/juick-common/src/test/java/com/juick/MessageTest.java b/juick-common/src/test/java/com/juick/MessageTest.java index aaa66af2..d9c83b84 100644 --- a/juick-common/src/test/java/com/juick/MessageTest.java +++ b/juick-common/src/test/java/com/juick/MessageTest.java @@ -22,6 +22,8 @@ import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; import org.junit.Test; +import java.util.List; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; @@ -168,4 +170,12 @@ public class MessageTest { String msg = "[te](http://juick.com/)[st](http://juick.com/)"; assertThat(MessageUtils.stripNonSafeUrls(msg), is(msg)); } + @Test + public void mentionsCount() { + Message msg = new Message(); + msg.setText("@ugnich go home"); + List mentions = MessageUtils.getMentions(msg); + assertThat(mentions.size(), is(1)); + assertThat(mentions.get(0), is("@ugnich")); + } } -- cgit v1.2.3