Loosen requirement to have occupant id to send reaction

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/entities/Reaction.java              | 16 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java |  6 
2 files changed, 17 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Reaction.java 🔗

@@ -94,6 +94,22 @@ public class Reaction {
         }
     }
 
+    public static Collection<Reaction> withMine(
+            final Collection<Reaction> existing,
+            final Collection<String> reactions,
+            final boolean received,
+            final Jid from,
+            final Jid trueJid,
+            final String occupantId,
+            final String envelopeId) {
+         final ImmutableSet.Builder<Reaction> 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<Reaction> withOccupantId(
             final Collection<Reaction> existing,
             final Collection<String> reactions,

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,