]> nmode's Git Repositories - signal-cli/commitdiff
Disable unidentified access for recipient if it fails once
authorAsamK <asamk@gmx.de>
Sat, 25 Dec 2021 15:19:21 +0000 (16:19 +0100)
committerAsamK <asamk@gmx.de>
Sat, 25 Dec 2021 15:19:21 +0000 (16:19 +0100)
lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java

index 7ed5a561bf3c5233f3c25cc80c94df59587cf55c..c2f41e2d2351533c91c1fbf197822a61b1205abe 100644 (file)
@@ -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());