From 67e94bc856111a6dd5ee9e185c7938d74ae4d5e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=A4ufele?= Date: Tue, 7 Jan 2020 00:43:24 +0100 Subject: [PATCH] Prevent blocked messages from being printed --- .../org/asamk/signal/manager/Manager.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/asamk/signal/manager/Manager.java b/src/main/java/org/asamk/signal/manager/Manager.java index f649a145..d40b91c5 100644 --- a/src/main/java/org/asamk/signal/manager/Manager.java +++ b/src/main/java/org/asamk/signal/manager/Manager.java @@ -1182,7 +1182,9 @@ public class Manager implements Signal { handleMessage(envelope, content, ignoreAttachments); } account.save(); - handler.handleMessage(envelope, content, exception); + if (!isMessageBlocked(envelope, content)) { + handler.handleMessage(envelope, content, exception); + } if (!(exception instanceof ProtocolUntrustedIdentityException)) { File cacheFile = null; try { @@ -1203,6 +1205,26 @@ public class Manager implements Signal { } } + private boolean isMessageBlocked(SignalServiceEnvelope envelope, SignalServiceContent content) { + SignalServiceAddress source = envelope.getSourceAddress(); + ContactInfo sourceContact = getContact(source.getNumber().get()); + if (sourceContact != null && sourceContact.blocked) { + return true; + } + + if (content != null && content.getDataMessage().isPresent()) { + SignalServiceDataMessage message = content.getDataMessage().get(); + if (message.getGroupInfo().isPresent()) { + SignalServiceGroup groupInfo = message.getGroupInfo().get(); + GroupInfo group = getGroup(groupInfo.getGroupId()); + if (groupInfo.getType() == SignalServiceGroup.Type.DELIVER && group != null && group.blocked) { + return true; + } + } + } + return false; + } + private void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, boolean ignoreAttachments) { if (content != null) { SignalServiceAddress sender;