From 7eb8d5497a4f42b890c62110df3a06225edbb659 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 20 Jan 2025 17:52:05 +0100 Subject: [PATCH] send MUC PM reactions to full jid --- .../generator/MessageGenerator.java | 5 ++--- .../services/XmppConnectionService.java | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/generator/MessageGenerator.java b/src/main/java/eu/siacs/conversations/generator/MessageGenerator.java index 42975cb8f87d393cafe795141432162fedad90a9..6ff2337cc2bc3175877ee032f0e3b0e55f138b18 100644 --- a/src/main/java/eu/siacs/conversations/generator/MessageGenerator.java +++ b/src/main/java/eu/siacs/conversations/generator/MessageGenerator.java @@ -192,11 +192,10 @@ public class MessageGenerator extends AbstractGenerator { } public im.conversations.android.xmpp.model.stanza.Message reaction( - final Conversational conversation, + final Jid to, + final boolean groupChat, final String reactingTo, final Collection ourReactions) { - final boolean groupChat = conversation.getMode() == Conversational.MODE_MULTI; - final Jid to = conversation.getJid().asBareJid(); final im.conversations.android.xmpp.model.stanza.Message packet = new im.conversations.android.xmpp.model.stanza.Message(); packet.setType( diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 33701215f1d9b42fe34691ec8a13c19d189941b3..c9c116c3aaa08c492212d2f0237fd3cb096f2bee 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -5710,9 +5710,12 @@ public class XmppConnectionService extends Service { public boolean sendReactions(final Message message, final Collection reactions) { if (message.getConversation() instanceof Conversation conversation) { + final var isPrivateMessage = message.isPrivateMessage(); + final Jid reactTo; + final boolean typeGroupChat; final String reactToId; final Collection combinedReactions; - if (conversation.getMode() == Conversational.MODE_MULTI) { + if (conversation.getMode() == Conversational.MODE_MULTI && !isPrivateMessage) { final var mucOptions = conversation.getMucOptions(); if (!mucOptions.participating()) { Log.d(Config.LOGTAG, "not participating in MUC"); @@ -5735,6 +5738,8 @@ public class XmppConnectionService extends Service { Log.d(Config.LOGTAG, "modified reactions to existing variants"); } reactToId = message.getServerMsgId(); + reactTo = conversation.getJid().asBareJid(); + typeGroupChat = true; combinedReactions = Reaction.withOccupantId( message.getReactions(), @@ -5749,6 +5754,12 @@ public class XmppConnectionService extends Service { } else { reactToId = message.getUuid(); } + typeGroupChat = false; + if (isPrivateMessage) { + reactTo = message.getCounterpart(); + } else { + reactTo = conversation.getJid().asBareJid(); + } combinedReactions = Reaction.withFrom( message.getReactions(), @@ -5756,11 +5767,11 @@ public class XmppConnectionService extends Service { false, conversation.getAccount().getJid()); } - if (Strings.isNullOrEmpty(reactToId)) { + if (reactTo == null || Strings.isNullOrEmpty(reactToId)) { return false; } final var reactionMessage = - mMessageGenerator.reaction(conversation, reactToId, reactions); + mMessageGenerator.reaction(reactTo, typeGroupChat, reactToId, reactions); sendMessagePacket(conversation.getAccount(), reactionMessage); message.setReactions(combinedReactions); updateMessage(message, false);