Prevent blocked messages from being printed

This commit is contained in:
Daniel Schäufele 2020-01-07 00:43:24 +01:00
parent ff478a5b0a
commit 67e94bc856

View file

@ -1182,7 +1182,9 @@ public class Manager implements Signal {
handleMessage(envelope, content, ignoreAttachments); handleMessage(envelope, content, ignoreAttachments);
} }
account.save(); account.save();
if (!isMessageBlocked(envelope, content)) {
handler.handleMessage(envelope, content, exception); handler.handleMessage(envelope, content, exception);
}
if (!(exception instanceof ProtocolUntrustedIdentityException)) { if (!(exception instanceof ProtocolUntrustedIdentityException)) {
File cacheFile = null; File cacheFile = null;
try { 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) { private void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, boolean ignoreAttachments) {
if (content != null) { if (content != null) {
SignalServiceAddress sender; SignalServiceAddress sender;