]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/dbus/DbusReceiveMessageHandler.java
Update gradle
[signal-cli] / src / main / java / org / asamk / signal / dbus / DbusReceiveMessageHandler.java
index 3176620d539a6071142ad06f1b04358d0ffee5f0..29f4a4c9e0adfe62a37cc4208dde5f1b5d8cdf53 100644 (file)
@@ -30,7 +30,7 @@ public class DbusReceiveMessageHandler implements Manager.ReceiveMessageHandler
         try {
             sendDbusMessages(envelope);
         } catch (DBusException e) {
-            e.printStackTrace();
+            throw new RuntimeException(e);
         }
     }
 
@@ -74,6 +74,27 @@ public class DbusReceiveMessageHandler implements Manager.ReceiveMessageHandler
                         getMessageExtras(message)));
             }
         }
+        if (envelope.edit().isPresent()) {
+            var editMessage = envelope.edit().get();
+            var message = editMessage.dataMessage();
+
+            var groupId = message.groupContext()
+                    .map(MessageEnvelope.Data.GroupContext::groupId)
+                    .map(GroupId::serialize)
+                    .orElseGet(() -> new byte[0]);
+            var isGroupUpdate = message.groupContext()
+                    .map(MessageEnvelope.Data.GroupContext::isGroupUpdate)
+                    .orElse(false);
+            if (!message.isEndSession() && !isGroupUpdate) {
+                conn.sendMessage(new Signal.EditMessageReceived(objectPath,
+                        message.timestamp(),
+                        editMessage.targetSentTimestamp(),
+                        senderString,
+                        groupId,
+                        message.body().orElse(""),
+                        getMessageExtras(message)));
+            }
+        }
         if (envelope.sync().isPresent()) {
             var syncMessage = envelope.sync().get();
             if (syncMessage.sent().isPresent()) {
@@ -110,7 +131,7 @@ public class DbusReceiveMessageHandler implements Manager.ReceiveMessageHandler
 
     private List<String> getAttachments(MessageEnvelope.Data message) {
         var attachments = new ArrayList<String>();
-        if (message.attachments().size() > 0) {
+        if (!message.attachments().isEmpty()) {
             for (var attachment : message.attachments()) {
                 if (attachment.file().isPresent()) {
                     attachments.add(attachment.file().get().getAbsolutePath());
@@ -122,7 +143,7 @@ public class DbusReceiveMessageHandler implements Manager.ReceiveMessageHandler
 
     private HashMap<String, Variant<?>> getMessageExtras(MessageEnvelope.Data message) {
         var extras = new HashMap<String, Variant<?>>();
-        if (message.attachments().size() > 0) {
+        if (!message.attachments().isEmpty()) {
             var attachments = message.attachments()
                     .stream()
                     .filter(a -> a.id().isPresent())
@@ -130,7 +151,7 @@ public class DbusReceiveMessageHandler implements Manager.ReceiveMessageHandler
                     .toList();
             extras.put("attachments", new Variant<>(attachments, "aa{sv}"));
         }
-        if (message.mentions().size() > 0) {
+        if (!message.mentions().isEmpty()) {
             var mentions = message.mentions().stream().map(this::getMentionMap).toList();
             extras.put("mentions", new Variant<>(mentions, "aa{sv}"));
         }