]> nmode's Git Repositories - signal-cli/commitdiff
Improve handling of group join messages
authorAsamK <asamk@gmx.de>
Fri, 7 Oct 2022 18:47:40 +0000 (20:47 +0200)
committerAsamK <asamk@gmx.de>
Fri, 7 Oct 2022 19:17:45 +0000 (21:17 +0200)
lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java

index 4f696c92e8e045dbfb78d4443e4c6b760790c901..9a4a0af0750d218cb11d80370e3fd1fcd1204384 100644 (file)
@@ -185,10 +185,18 @@ public final class IncomingMessageHandler {
             account.getMessageSendLogStore().deleteEntryForRecipient(envelope.getTimestamp(), sender, senderDeviceId);
         }
 
+        var notAllowedToSendToGroup = isNotAllowedToSendToGroup(envelope, content);
+        final var groupContext = getGroupContext(content);
+        if (groupContext != null && groupContext.getGroupV2().isPresent()) {
+            handleGroupV2Context(groupContext.getGroupV2().get());
+        }
+        // Check again in case the user just joined the group
+        notAllowedToSendToGroup = notAllowedToSendToGroup && isNotAllowedToSendToGroup(envelope, content);
+
         if (isMessageBlocked(envelope, content)) {
             logger.info("Ignoring a message from blocked user/group: {}", envelope.getTimestamp());
             return List.of();
-        } else if (isNotAllowedToSendToGroup(envelope, content)) {
+        } else if (notAllowedToSendToGroup) {
             logger.info("Ignoring a group message from an unauthorized sender (no member or admin): {} {}",
                     (envelope.hasSourceUuid() ? envelope.getSourceAddress() : content.getSender()).getIdentifier(),
                     envelope.getTimestamp());