]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/util/ErrorUtils.java
Update libsignal-service-java
[signal-cli] / src / main / java / org / asamk / signal / util / ErrorUtils.java
index 100368f6dfa014ee1911eb8382b1ca8738f80157..fb0509c6a18515793c3415f1b3a385ef5d759b34 100644 (file)
@@ -6,9 +6,13 @@ import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.whispersystems.signalservice.api.messages.SendMessageResult;
+import org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.asamk.signal.util.Util.getLegacyIdentifier;
 
 public class ErrorUtils {
 
@@ -40,12 +44,24 @@ public class ErrorUtils {
     }
 
     public static String getErrorMessageFromSendMessageResult(SendMessageResult result) {
+        var identifier = getLegacyIdentifier(result.getAddress());
         if (result.isNetworkFailure()) {
-            return String.format("Network failure for \"%s\"", result.getAddress().getLegacyIdentifier());
+            return String.format("Network failure for \"%s\"", identifier);
         } else if (result.isUnregisteredFailure()) {
-            return String.format("Unregistered user \"%s\"", result.getAddress().getLegacyIdentifier());
+            return String.format("Unregistered user \"%s\"", identifier);
         } else if (result.getIdentityFailure() != null) {
-            return String.format("Untrusted Identity for \"%s\"", result.getAddress().getLegacyIdentifier());
+            return String.format("Untrusted Identity for \"%s\"", identifier);
+        } else if (result.getProofRequiredFailure() != null) {
+            final var failure = result.getProofRequiredFailure();
+            return String.format(
+                    "CAPTCHA proof required for sending to \"%s\", available options \"%s\" with token \"%s\", or wait \"%d\" seconds",
+                    identifier,
+                    failure.getOptions()
+                            .stream()
+                            .map(ProofRequiredException.Option::toString)
+                            .collect(Collectors.joining(", ")),
+                    failure.getToken(),
+                    failure.getRetryAfterSeconds());
         }
         return null;
     }