From 9e5a6b3f2f6907f18f22718bcb6f0ac7f79c95cd Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 12 Apr 2018 14:17:46 +0300 Subject: server: MessageEvent now have list of subscribers --- .../src/main/java/com/juick/server/CommandsManager.java | 11 +++++++---- .../src/main/java/com/juick/server/component/LikeEvent.java | 10 +++++++++- .../main/java/com/juick/server/component/MessageEvent.java | 11 ++++++++++- 3 files changed, 26 insertions(+), 6 deletions(-) (limited to 'juick-common') diff --git a/juick-common/src/main/java/com/juick/server/CommandsManager.java b/juick-common/src/main/java/com/juick/server/CommandsManager.java index cde6a4bf..9b7cda32 100644 --- a/juick-common/src/main/java/com/juick/server/CommandsManager.java +++ b/juick-common/src/main/java/com/juick/server/CommandsManager.java @@ -110,7 +110,7 @@ public class CommandsManager { imagesService.saveImageWithPreviews(attachmentFName, fname); } com.juick.Message msg = messagesService.getMessage(mid); - applicationEventPublisher.publishEvent(new MessageEvent(this, msg)); + applicationEventPublisher.publishEvent(new MessageEvent(this, msg, subscriptionService.getSubscribedUsers(msg.getUser().getUid(), msg.getMid()))); return CommandResult.build(msg, "New message posted.\n#" + msg.getMid() + " https://juick.com/" + msg.getMid(), String.format("[New message](%s) posted", PlainTextFormatter.formatUrl(msg))); } @@ -148,7 +148,7 @@ public class CommandsManager { jmsg.setUser(user_from); jmsg.setTo(user_to); jmsg.setText(body); - applicationEventPublisher.publishEvent(new MessageEvent(this, jmsg)); + applicationEventPublisher.publishEvent(new MessageEvent(this, jmsg, Collections.singletonList(user_to))); return CommandResult.fromString("Private message sent"); } } @@ -283,7 +283,9 @@ public class CommandsManager { MessagesService.RecommendStatus status = messagesService.recommendMessage(mid, user.getUid()); switch (status) { case Added: - applicationEventPublisher.publishEvent(new LikeEvent(this, user, msg)); + applicationEventPublisher.publishEvent(new LikeEvent(this, user, msg, + subscriptionService.getUsersSubscribedToUserRecommendations( + user.getUid(), msg.getMid(), msg.getUser().getUid()))); return CommandResult.fromString("Message is added to your recommendations"); case Deleted: return CommandResult.fromString("Message deleted from your recommendations."); @@ -485,8 +487,9 @@ public class CommandsManager { String fname = String.format("%d-%d.%s", mid, newrid, attachmentType); imagesService.saveImageWithPreviews(attachmentFName, fname); } + Message original = messagesService.getMessage(mid); Message reply = messagesService.getReply(mid, newrid); - applicationEventPublisher.publishEvent(new MessageEvent(this, reply)); + applicationEventPublisher.publishEvent(new MessageEvent(this, reply, subscriptionService.getUsersSubscribedToComments(original, reply))); return CommandResult.build(reply,"Reply posted.\n#" + mid + "/" + newrid + " " + "https://juick.com/" + mid + "#" + newrid, String.format("[Reply](%s) posted", PlainTextFormatter.formatUrl(reply))); diff --git a/juick-common/src/main/java/com/juick/server/component/LikeEvent.java b/juick-common/src/main/java/com/juick/server/component/LikeEvent.java index 8ff0a184..678a84a9 100644 --- a/juick-common/src/main/java/com/juick/server/component/LikeEvent.java +++ b/juick-common/src/main/java/com/juick/server/component/LikeEvent.java @@ -4,18 +4,22 @@ import com.juick.Message; import com.juick.User; import org.springframework.context.ApplicationEvent; +import java.util.List; + public class LikeEvent extends ApplicationEvent { private User user; private Message message; + private List subscribers; /** * Create a new ApplicationEvent. * * @param source the object on which the event initially occurred (never {@code null}) */ - public LikeEvent(Object source, User user, Message message) { + public LikeEvent(Object source, User user, Message message, List subscribers) { super(source); this.message = message; this.user = user; + this.subscribers = subscribers; } public User getUser() { @@ -25,4 +29,8 @@ public class LikeEvent extends ApplicationEvent { public Message getMessage() { return message; } + + public List getSubscribers() { + return subscribers; + } } diff --git a/juick-common/src/main/java/com/juick/server/component/MessageEvent.java b/juick-common/src/main/java/com/juick/server/component/MessageEvent.java index 048de6a6..c0c60228 100644 --- a/juick-common/src/main/java/com/juick/server/component/MessageEvent.java +++ b/juick-common/src/main/java/com/juick/server/component/MessageEvent.java @@ -1,22 +1,31 @@ package com.juick.server.component; import com.juick.Message; +import com.juick.User; import org.springframework.context.ApplicationEvent; +import java.util.List; + public class MessageEvent extends ApplicationEvent { private Message message; + private List users; /** * Create a new ApplicationEvent. * * @param source the object on which the event initially occurred (never {@code null}) * @param message app message + * @param interestedUsers users interested in notification */ - public MessageEvent(Object source, Message message) { + public MessageEvent(Object source, Message message, List interestedUsers) { super(source); this.message = message; + this.users = interestedUsers; } public Message getMessage() { return message; } + public List getUsers() { + return users; + } } -- cgit v1.2.3