From 6be0b2da77785482656fe5531ee09b838e9a5c0b Mon Sep 17 00:00:00 2001 From: AsamK Date: Mon, 21 Dec 2020 15:24:52 +0100 Subject: [PATCH] Implement blocking for v2 groups --- .../org/asamk/signal/manager/Manager.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/asamk/signal/manager/Manager.java b/src/main/java/org/asamk/signal/manager/Manager.java index 24bc0ebd..6db40566 100644 --- a/src/main/java/org/asamk/signal/manager/Manager.java +++ b/src/main/java/org/asamk/signal/manager/Manager.java @@ -1928,10 +1928,23 @@ public class Manager implements Closeable { if (content != null && content.getDataMessage().isPresent()) { SignalServiceDataMessage message = content.getDataMessage().get(); - if (message.getGroupContext().isPresent() && message.getGroupContext().get().getGroupV1().isPresent()) { - SignalServiceGroup groupInfo = message.getGroupContext().get().getGroupV1().get(); - GroupInfo group = getGroup(groupInfo.getGroupId()); - return groupInfo.getType() == SignalServiceGroup.Type.DELIVER && group != null && group.isBlocked(); + if (message.getGroupContext().isPresent()) { + GroupInfo group = null; + if (message.getGroupContext().get().getGroupV1().isPresent()) { + SignalServiceGroup groupInfo = message.getGroupContext().get().getGroupV1().get(); + if (groupInfo.getType() == SignalServiceGroup.Type.DELIVER) { + group = getGroup(groupInfo.getGroupId()); + } + } + if (message.getGroupContext().get().getGroupV2().isPresent()) { + SignalServiceGroupV2 groupContext = message.getGroupContext().get().getGroupV2().get(); + final GroupMasterKey groupMasterKey = groupContext.getMasterKey(); + byte[] groupId = GroupUtils.getGroupId(groupMasterKey); + group = account.getGroupStore().getGroupByV2Id(groupId); + } + if (group != null && group.isBlocked()) { + return true; + } } } return false; -- 2.50.1