]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
Reduce use of printStackTrace
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusManagerImpl.java
index e5f64ab3ada6d7415d3bd378e7a3550540fa4425..e9fc3f9cd14a74852cb4de9519fb0028eca18174 100644 (file)
@@ -4,18 +4,33 @@ import org.asamk.Signal;
 import org.asamk.signal.DbusConfig;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
+import org.asamk.signal.manager.api.CaptchaRequiredException;
 import org.asamk.signal.manager.api.Configuration;
+import org.asamk.signal.manager.api.Contact;
 import org.asamk.signal.manager.api.Device;
+import org.asamk.signal.manager.api.DeviceLinkUrl;
 import org.asamk.signal.manager.api.Group;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupPermission;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.api.Identity;
+import org.asamk.signal.manager.api.IdentityVerificationCode;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
+import org.asamk.signal.manager.api.IncorrectPinException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.InvalidStickerException;
 import org.asamk.signal.manager.api.InvalidUsernameException;
+import org.asamk.signal.manager.api.LastGroupAdminException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.MessageEnvelope;
+import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.NotPrimaryDeviceException;
 import org.asamk.signal.manager.api.Pair;
+import org.asamk.signal.manager.api.PinLockedException;
+import org.asamk.signal.manager.api.RateLimitException;
 import org.asamk.signal.manager.api.ReceiveConfig;
 import org.asamk.signal.manager.api.Recipient;
 import org.asamk.signal.manager.api.RecipientAddress;
@@ -30,14 +45,6 @@ import org.asamk.signal.manager.api.UnregisteredRecipientException;
 import org.asamk.signal.manager.api.UpdateGroup;
 import org.asamk.signal.manager.api.UpdateProfile;
 import org.asamk.signal.manager.api.UserStatus;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupPermission;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.LastGroupAdminException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
-import org.asamk.signal.manager.storage.recipients.Contact;
 import org.freedesktop.dbus.DBusMap;
 import org.freedesktop.dbus.DBusPath;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
@@ -81,6 +88,7 @@ public class DbusManagerImpl implements Manager {
     private final Set<ReceiveMessageHandler> messageHandlers = new HashSet<>();
     private final List<Runnable> closedListeners = new ArrayList<>();
     private DBusSigHandler<Signal.MessageReceivedV2> dbusMsgHandler;
+    private DBusSigHandler<Signal.EditMessageReceived> dbusEditMsgHandler;
     private DBusSigHandler<Signal.ReceiptReceivedV2> dbusRcptHandler;
     private DBusSigHandler<Signal.SyncMessageReceivedV2> dbusSyncHandler;
 
@@ -128,7 +136,7 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public void updateConfiguration(Configuration newConfiguration) throws IOException {
+    public void updateConfiguration(Configuration newConfiguration) {
         final var configuration = getRemoteObject(new DBusPath(signal.getObjectPath() + "/Configuration"),
                 Signal.Configuration.class);
         newConfiguration.readReceipts()
@@ -163,6 +171,20 @@ public class DbusManagerImpl implements Manager {
         throw new UnsupportedOperationException();
     }
 
+    @Override
+    public void startChangeNumber(
+            final String newNumber, final boolean voiceVerification, final String captcha
+    ) throws RateLimitException, IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void finishChangeNumber(
+            final String newNumber, final String verificationCode, final String pin
+    ) throws IncorrectPinException, PinLockedException, IOException {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public void unregister() throws IOException {
         signal.unregister();
@@ -199,8 +221,8 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public void addDeviceLink(final URI linkUri) throws IOException, InvalidDeviceLinkException {
-        signal.addDevice(linkUri.toString());
+    public void addDeviceLink(final DeviceLinkUrl linkUri) throws IOException, InvalidDeviceLinkException {
+        signal.addDevice(linkUri.createDeviceLinkUri().toString());
     }
 
     @Override
@@ -222,7 +244,7 @@ public class DbusManagerImpl implements Manager {
     public SendGroupMessageResults quitGroup(
             final GroupId groupId, final Set<RecipientIdentifier.Single> groupAdmins
     ) throws GroupNotFoundException, IOException, NotAGroupMemberException, LastGroupAdminException {
-        if (groupAdmins.size() > 0) {
+        if (!groupAdmins.isEmpty()) {
             throw new UnsupportedOperationException();
         }
         final var group = getRemoteObject(signal.getGroup(groupId.serialize()), Signal.Group.class);
@@ -479,6 +501,11 @@ public class DbusManagerImpl implements Manager {
         }
     }
 
+    @Override
+    public void installStickerPack(final StickerPackUrl url) throws IOException {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public List<StickerPack> getStickerPacks() {
         throw new UnsupportedOperationException();
@@ -495,7 +522,7 @@ public class DbusManagerImpl implements Manager {
             if (isWeakListener) {
                 weakHandlers.add(handler);
             } else {
-                if (messageHandlers.size() == 0) {
+                if (messageHandlers.isEmpty()) {
                     installMessageHandlers();
                 }
                 messageHandlers.add(handler);
@@ -508,7 +535,7 @@ public class DbusManagerImpl implements Manager {
         synchronized (messageHandlers) {
             weakHandlers.remove(handler);
             messageHandlers.remove(handler);
-            if (messageHandlers.size() == 0) {
+            if (messageHandlers.isEmpty()) {
                 uninstallMessageHandlers();
             }
         }
@@ -517,7 +544,7 @@ public class DbusManagerImpl implements Manager {
     @Override
     public boolean isReceiving() {
         synchronized (messageHandlers) {
-            return messageHandlers.size() > 0;
+            return !messageHandlers.isEmpty();
         }
     }
 
@@ -595,7 +622,7 @@ public class DbusManagerImpl implements Manager {
                 return null;
             }
             final var contactName = signal.getContactName(n);
-            if (onlyContacts && contactName.length() == 0) {
+            if (onlyContacts && contactName.isEmpty()) {
                 return null;
             }
             if (name.isPresent() && !name.get().equals(contactName)) {
@@ -666,20 +693,8 @@ public class DbusManagerImpl implements Manager {
     }
 
     @Override
-    public boolean trustIdentityVerified(final RecipientIdentifier.Single recipient, final byte[] fingerprint) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean trustIdentityVerifiedSafetyNumber(
-            final RecipientIdentifier.Single recipient, final String safetyNumber
-    ) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean trustIdentityVerifiedSafetyNumber(
-            final RecipientIdentifier.Single recipient, final byte[] safetyNumber
+    public boolean trustIdentityVerified(
+            final RecipientIdentifier.Single recipient, final IdentityVerificationCode verificationCode
     ) {
         throw new UnsupportedOperationException();
     }
@@ -706,7 +721,7 @@ public class DbusManagerImpl implements Manager {
             this.notify();
         }
         synchronized (messageHandlers) {
-            if (messageHandlers.size() > 0) {
+            if (!messageHandlers.isEmpty()) {
                 uninstallMessageHandlers();
             }
             weakHandlers.clear();
@@ -730,7 +745,7 @@ public class DbusManagerImpl implements Manager {
                 .map(RecipientIdentifier.Single.class::cast)
                 .map(RecipientIdentifier.Single::getIdentifier)
                 .toList();
-        if (singleRecipients.size() > 0) {
+        if (!singleRecipients.isEmpty()) {
             timestamp = recipientsHandler.apply(singleRecipients);
         }
 
@@ -804,6 +819,49 @@ public class DbusManagerImpl implements Manager {
                 notifyMessageHandlers(envelope);
             };
             connection.addSigHandler(Signal.MessageReceivedV2.class, signal, this.dbusMsgHandler);
+            this.dbusEditMsgHandler = messageReceived -> {
+                final var extras = messageReceived.getExtras();
+                final var envelope = new MessageEnvelope(Optional.of(new RecipientAddress(null,
+                        messageReceived.getSender())),
+                        0,
+                        messageReceived.getTimestamp(),
+                        0,
+                        0,
+                        false,
+                        Optional.empty(),
+                        Optional.empty(),
+                        Optional.empty(),
+                        Optional.of(new MessageEnvelope.Edit(messageReceived.getTargetSentTimestamp(),
+                                new MessageEnvelope.Data(messageReceived.getTimestamp(),
+                                        messageReceived.getGroupId().length > 0
+                                                ? Optional.of(new MessageEnvelope.Data.GroupContext(GroupId.unknownVersion(
+                                                messageReceived.getGroupId()), false, 0))
+                                                : Optional.empty(),
+                                        Optional.empty(),
+                                        Optional.empty(),
+                                        Optional.of(messageReceived.getMessage()),
+                                        0,
+                                        false,
+                                        false,
+                                        false,
+                                        false,
+                                        false,
+                                        Optional.empty(),
+                                        Optional.empty(),
+                                        Optional.empty(),
+                                        getAttachments(extras),
+                                        Optional.empty(),
+                                        Optional.empty(),
+                                        List.of(),
+                                        List.of(),
+                                        List.of(),
+                                        List.of()))),
+                        Optional.empty(),
+                        Optional.empty(),
+                        Optional.empty());
+                notifyMessageHandlers(envelope);
+            };
+            connection.addSigHandler(Signal.EditMessageReceived.class, signal, this.dbusEditMsgHandler);
 
             this.dbusRcptHandler = receiptReceived -> {
                 final var type = switch (receiptReceived.getReceiptType()) {
@@ -890,7 +948,7 @@ public class DbusManagerImpl implements Manager {
             };
             connection.addSigHandler(Signal.SyncMessageReceivedV2.class, signal, this.dbusSyncHandler);
         } catch (DBusException e) {
-            e.printStackTrace();
+            throw new RuntimeException(e);
         }
         signal.subscribeReceive();
     }
@@ -906,10 +964,11 @@ public class DbusManagerImpl implements Manager {
         try {
             signal.unsubscribeReceive();
             connection.removeSigHandler(Signal.MessageReceivedV2.class, signal, this.dbusMsgHandler);
+            connection.removeSigHandler(Signal.EditMessageReceived.class, signal, this.dbusEditMsgHandler);
             connection.removeSigHandler(Signal.ReceiptReceivedV2.class, signal, this.dbusRcptHandler);
             connection.removeSigHandler(Signal.SyncMessageReceivedV2.class, signal, this.dbusSyncHandler);
         } catch (DBusException e) {
-            e.printStackTrace();
+            throw new RuntimeException(e);
         }
     }