diff --git a/src/main/java/eu/siacs/conversations/entities/Reaction.java b/src/main/java/eu/siacs/conversations/entities/Reaction.java index 0f654a1285772bec5621ea4fb43bd38f041d9028..734fe46803ed7b16317fab19a5135a22295f4f82 100644 --- a/src/main/java/eu/siacs/conversations/entities/Reaction.java +++ b/src/main/java/eu/siacs/conversations/entities/Reaction.java @@ -94,6 +94,22 @@ public class Reaction { } } + public static Collection withMine( + final Collection existing, + final Collection reactions, + final boolean received, + final Jid from, + final Jid trueJid, + final String occupantId, + final String envelopeId) { + final ImmutableSet.Builder builder = new ImmutableSet.Builder<>(); + builder.addAll(Collections2.filter(existing, e -> e.received)); + builder.addAll( + Collections2.transform( + reactions, r -> new Reaction(r, null, received, from, trueJid, occupantId, envelopeId))); + return builder.build(); + } + public static Collection withOccupantId( final Collection existing, final Collection reactions, diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 7ba667b10c9cc67583b708dc93dbe7c9a22f8b0c..cf148afaccc7ebb9c0b194a2305e0b89de5c3a57 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -5276,13 +5276,9 @@ public class XmppConnectionService extends Service { if (conversation.getMode() == Conversational.MODE_MULTI) { final var self = conversation.getMucOptions().getSelf(); final String occupantId = self.getOccupantId(); - if (Strings.isNullOrEmpty(occupantId)) { - Log.d(Config.LOGTAG, "occupant id not found for reaction in MUC"); - return false; - } reactToId = message.getServerMsgId(); combinedReactions = - Reaction.withOccupantId( + Reaction.withMine( message.getReactions(), reactions, false,