]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java
Reformat files
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusSignalImpl.java
index 80132f09e8d39d30df834a07a48f0a096fbee07b..bbae26b5715436df77785ac9dc6f1d9523d6ed5b 100644 (file)
@@ -4,6 +4,8 @@ import org.asamk.Signal;
 import org.asamk.signal.BaseConfig;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
+import org.asamk.signal.manager.api.CaptchaRejectedException;
+import org.asamk.signal.manager.api.DeviceLimitExceededException;
 import org.asamk.signal.manager.api.DeviceLinkUrl;
 import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.GroupInviteLinkUrl;
@@ -79,7 +81,10 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
     private static final Logger logger = LoggerFactory.getLogger(DbusSignalImpl.class);
 
     public DbusSignalImpl(
-            final Manager m, DBusConnection connection, final String objectPath, final boolean noReceiveOnStart
+            final Manager m,
+            DBusConnection connection,
+            final String objectPath,
+            final boolean noReceiveOnStart
     ) {
         this.m = m;
         this.connection = connection;
@@ -159,8 +164,10 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
             m.submitRateLimitRecaptchaChallenge(challenge, captcha);
         } catch (IOException e) {
             throw new Error.Failure("Submit challenge error: " + e.getMessage());
+        } catch (CaptchaRejectedException e) {
+            throw new Error.Failure(
+                    "Captcha rejected, it may be outdated, already used or solved from a different IP address.");
         }
-
     }
 
     @Override
@@ -186,7 +193,7 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
         try {
             var deviceLinkUrl = DeviceLinkUrl.parseDeviceLinkUri(new URI(uri));
             m.addDeviceLink(deviceLinkUrl);
-        } catch (IOException | InvalidDeviceLinkException e) {
+        } catch (IOException | InvalidDeviceLinkException | DeviceLimitExceededException e) {
             throw new Error.Failure(e.getClass().getSimpleName() + " Add device link failed. " + e.getMessage());
         } catch (NotPrimaryDeviceException e) {
             throw new Error.Failure("This command doesn't work on linked devices.");
@@ -254,16 +261,12 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
     }
 
     @Override
-    public long sendRemoteDeleteMessage(
-            final long targetSentTimestamp, final String recipient
-    ) {
+    public long sendRemoteDeleteMessage(final long targetSentTimestamp, final String recipient) {
         return sendRemoteDeleteMessage(targetSentTimestamp, List.of(recipient));
     }
 
     @Override
-    public long sendRemoteDeleteMessage(
-            final long targetSentTimestamp, final List<String> recipients
-    ) {
+    public long sendRemoteDeleteMessage(final long targetSentTimestamp, final List<String> recipients) {
         try {
             final var results = m.sendRemoteDeleteMessage(targetSentTimestamp,
                     getSingleRecipientIdentifiers(recipients, m.getSelfNumber()).stream()
@@ -319,7 +322,9 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
 
     @Override
     public long sendPaymentNotification(
-            final byte[] receipt, final String note, final String recipient
+            final byte[] receipt,
+            final String note,
+            final String recipient
     ) throws Error.Failure {
         try {
             final var results = m.sendPaymentNotificationMessage(receipt,
@@ -334,7 +339,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
 
     @Override
     public void sendTyping(
-            final String recipient, final boolean stop
+            final String recipient,
+            final boolean stop
     ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity {
         try {
             final var results = m.sendTypingMessage(stop ? TypingAction.STOP : TypingAction.START,
@@ -351,7 +357,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
 
     @Override
     public void sendReadReceipt(
-            final String recipient, final List<Long> messageIds
+            final String recipient,
+            final List<Long> messageIds
     ) throws Error.Failure, Error.UntrustedIdentity {
         final var results = m.sendReadReceipt(getSingleRecipientIdentifier(recipient, m.getSelfNumber()), messageIds);
         checkSendMessageResults(results);
@@ -359,7 +366,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
 
     @Override
     public void sendViewedReceipt(
-            final String recipient, final List<Long> messageIds
+            final String recipient,
+            final List<Long> messageIds
     ) throws Error.Failure, Error.UntrustedIdentity {
         final var results = m.sendViewedReceipt(getSingleRecipientIdentifier(recipient, m.getSelfNumber()), messageIds);
         checkSendMessageResults(results);
@@ -385,7 +393,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
 
     @Override
     public long sendNoteToSelfMessage(
-            final String messageText, final List<String> attachments
+            final String messageText,
+            final List<String> attachments
     ) throws Error.AttachmentInvalid, Error.Failure, Error.UntrustedIdentity {
         try {
             final var message = new Message(messageText,
@@ -457,7 +466,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
 
     @Override
     public void sendGroupTyping(
-            final byte[] groupId, final boolean stop
+            final byte[] groupId,
+            final boolean stop
     ) throws Error.Failure, Error.GroupNotFound, Error.UntrustedIdentity {
         try {
             final var results = m.sendTypingMessage(stop ? TypingAction.STOP : TypingAction.START,
@@ -471,9 +481,7 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
     }
 
     @Override
-    public long sendGroupRemoteDeleteMessage(
-            final long targetSentTimestamp, final byte[] groupId
-    ) {
+    public long sendGroupRemoteDeleteMessage(final long targetSentTimestamp, final byte[] groupId) {
         try {
             final var results = m.sendRemoteDeleteMessage(targetSentTimestamp,
                     Set.of(getGroupRecipientIdentifier(groupId)));
@@ -617,7 +625,9 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
 
     @Override
     public byte[] createGroup(
-            final String name, final List<String> members, final String avatar
+            final String name,
+            final List<String> members,
+            final String avatar
     ) throws Error.AttachmentInvalid, Error.Failure, Error.InvalidNumber {
         return updateGroupInternal(new byte[0], name, members, avatar);
     }
@@ -896,7 +906,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
     }
 
     private static void checkGroupSendMessageResults(
-            long timestamp, Collection<SendMessageResult> results
+            long timestamp,
+            Collection<SendMessageResult> results
     ) throws DBusExecutionException {
         if (results.size() == 1) {
             checkSendMessageResult(timestamp, results.stream().findFirst().get());
@@ -923,7 +934,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
     }
 
     private static Set<RecipientIdentifier.Single> getSingleRecipientIdentifiers(
-            final Collection<String> recipientStrings, final String localNumber
+            final Collection<String> recipientStrings,
+            final String localNumber
     ) throws DBusExecutionException {
         final var identifiers = new HashSet<RecipientIdentifier.Single>();
         for (var recipientString : recipientStrings) {
@@ -933,7 +945,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
     }
 
     private static RecipientIdentifier.Single getSingleRecipientIdentifier(
-            final String recipientString, final String localNumber
+            final String recipientString,
+            final String localNumber
     ) throws DBusExecutionException {
         try {
             return RecipientIdentifier.Single.fromString(recipientString, localNumber);
@@ -1102,7 +1115,7 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
                     List.of(new DbusProperty<>("Number", () -> identity.recipient().number().orElse("")),
                             new DbusProperty<>("Uuid",
                                     () -> identity.recipient().uuid().map(UUID::toString).orElse("")),
-                            new DbusProperty<>("Fingerprint", identity::getFingerprint),
+                            new DbusProperty<>("Fingerprint", identity::fingerprint),
                             new DbusProperty<>("SafetyNumber", identity::safetyNumber),
                             new DbusProperty<>("ScannableSafetyNumber", identity::scannableSafetyNumber),
                             new DbusProperty<>("TrustLevel", identity::trustLevel),
@@ -1177,6 +1190,8 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
             try {
                 m.removeLinkedDevices(device.id());
                 updateDevices();
+            } catch (NotPrimaryDeviceException e) {
+                throw new Error.Failure("This command doesn't work on linked devices.");
             } catch (IOException e) {
                 throw new Error.Failure(e.getMessage());
             }
@@ -1187,7 +1202,7 @@ public class DbusSignalImpl implements Signal, AutoCloseable {
                 throw new Error.Failure("Only the name of this device can be changed");
             }
             try {
-                m.updateAccountAttributes(name, null);
+                m.updateAccountAttributes(name, null, null, null);
                 // update device list
                 updateDevices();
             } catch (IOException e) {