]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java
Disable unidentified access for recipient if it fails once
[signal-cli] / 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());