From 2f2e9aab6194037259625200091949d8648e3409 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Tue, 24 Sep 2019 11:54:21 +0300 Subject: Use single event model for all application events --- src/main/java/com/juick/server/XMPPManager.java | 39 +++++++++++-------------- 1 file changed, 17 insertions(+), 22 deletions(-) (limited to 'src/main/java/com/juick/server/XMPPManager.java') diff --git a/src/main/java/com/juick/server/XMPPManager.java b/src/main/java/com/juick/server/XMPPManager.java index a41e6053..a0390507 100644 --- a/src/main/java/com/juick/server/XMPPManager.java +++ b/src/main/java/com/juick/server/XMPPManager.java @@ -20,6 +20,7 @@ package com.juick.server; import com.juick.User; import com.juick.formatters.PlainTextFormatter; import com.juick.model.CommandResult; +import com.juick.server.api.SystemActivity; import com.juick.server.www.WebApp; import com.juick.server.xmpp.iq.MessageQuery; import com.juick.service.MessagesService; @@ -337,9 +338,20 @@ public class XMPPManager implements NotificationListener { } @Override - public void processMessageEvent(MessageEvent event) { - com.juick.Message msg = event.getMessage(); - List subscribers = event.getUsers(); + public void processSystemEvent(SystemEvent systemEvent) { + var activity = systemEvent.getActivity(); + var type = activity.getType(); + if (type.equals(SystemActivity.ActivityType.message)) { + processMessage(activity.getMessage(), activity.getTo()); + } else if (type.equals(SystemActivity.ActivityType.like)) { + if (systemEvent.getActivity().getFrom().equals(serviceUser)) { + processTop(systemEvent.getActivity().getMessage()); + } else { + processLike(activity.getFrom(), activity.getMessage(), activity.getTo()); + } + } + } + private void processMessage(com.juick.Message msg, List subscribers) { if (msg.isService()) { return; } @@ -376,17 +388,7 @@ public class XMPPManager implements NotificationListener { return ClientMessage.from(reply); } - @Override - public void processSubscribeEvent(SubscribeEvent subscribeEvent) { - - } - - @Override - public void processLikeEvent(LikeEvent likeEvent) { - List users = likeEvent.getSubscribers(); - com.juick.Message jmsg = likeEvent.getMessage(); - User liker = likeEvent.getUser(); - + public void processLike(User liker, com.juick.Message jmsg, List users) { if (!userService.isInBLAny(jmsg.getUser().getUid(), liker.getUid())) { userService.getJIDsbyUID(jmsg.getUser().getUid()).forEach(authorJid -> { Message xmppMessage = new Message(); @@ -454,14 +456,7 @@ public class XMPPManager implements NotificationListener { }); } - @Override - public void processMessageReadEvent(MessageReadEvent messageReadEvent) { - - } - - @Override - public void processTopEvent(TopEvent topEvent) { - com.juick.Message message = topEvent.getMessage(); + public void processTop(com.juick.Message message) { try { commandsManager.processCommand(serviceUser, String.format("! #%d", message.getMid()), URI.create(StringUtils.EMPTY)); } catch (Exception e) { -- cgit v1.2.3