From a0593f40317c49f93f0c3de4d1baa87e6f8fbf4d Mon Sep 17 00:00:00 2001 From: AsamK Date: Sat, 25 Dec 2021 16:19:21 +0100 Subject: [PATCH] Disable unidentified access for recipient if it fails once --- .../signal/manager/helper/SendHelper.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java index 7ed5a561..c2f41e2d 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java @@ -526,6 +526,34 @@ public class SendHelper { } private void handleSendMessageResult(final SendMessageResult r) { + if (r.isSuccess() && !r.getSuccess().isUnidentified()) { + final var recipientId = recipientResolver.resolveRecipient(r.getAddress()); + final var profile = account.getRecipientStore().getProfile(recipientId); + if (profile != null && ( + profile.getUnidentifiedAccessMode() == Profile.UnidentifiedAccessMode.ENABLED + || profile.getUnidentifiedAccessMode() == Profile.UnidentifiedAccessMode.UNRESTRICTED + )) { + account.getRecipientStore() + .storeProfile(recipientId, + Profile.newBuilder(profile) + .withUnidentifiedAccessMode(Profile.UnidentifiedAccessMode.UNKNOWN) + .build()); + } + } + if (r.isUnregisteredFailure()) { + final var recipientId = recipientResolver.resolveRecipient(r.getAddress()); + final var profile = account.getRecipientStore().getProfile(recipientId); + if (profile != null && ( + profile.getUnidentifiedAccessMode() == Profile.UnidentifiedAccessMode.ENABLED + || profile.getUnidentifiedAccessMode() == Profile.UnidentifiedAccessMode.UNRESTRICTED + )) { + account.getRecipientStore() + .storeProfile(recipientId, + Profile.newBuilder(profile) + .withUnidentifiedAccessMode(Profile.UnidentifiedAccessMode.UNKNOWN) + .build()); + } + } if (r.getIdentityFailure() != null) { final var recipientId = recipientResolver.resolveRecipient(r.getAddress()); identityFailureHandler.handleIdentityFailure(recipientId, r.getIdentityFailure()); -- 2.50.1