]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/Main.java
Update signal-service-java dependency
[signal-cli] / src / main / java / org / asamk / signal / Main.java
index d50b4395be3beb2e7797d961a97ff997e39a54c7..7f85f28077809f02b26c439fdfd2d6f80c8bf46d 100644 (file)
@@ -100,7 +100,7 @@ public class Main {
                         busType = DBusConnection.SESSION;
                     }
                     dBusConn = DBusConnection.getConnection(busType);
-                    ts = (Signal) dBusConn.getRemoteObject(
+                    ts = dBusConn.getRemoteObject(
                             SIGNAL_BUSNAME, SIGNAL_OBJECTPATH,
                             Signal.class);
                 } catch (UnsatisfiedLinkError e) {
@@ -984,6 +984,9 @@ public class Main {
                 System.out.println("Relayed by: " + source.getRelay().get());
             }
             System.out.println("Timestamp: " + formatTimestamp(envelope.getTimestamp()));
+            if (envelope.isUnidentifiedSender()) {
+                System.out.println("Sent by unidentified/sealed sender");
+            }
 
             if (envelope.isReceipt()) {
                 System.out.println("Got receipt.");
@@ -1120,6 +1123,20 @@ public class Main {
                             System.out.println("    " + formatTimestamp(timestamp));
                         }
                     }
+                    if (content.getTypingMessage().isPresent()) {
+                        System.out.println("Received a typing message");
+                        SignalServiceTypingMessage typingMessage = content.getTypingMessage().get();
+                        System.out.println(" - Action: " + typingMessage.getAction());
+                        System.out.println(" - Timestamp: " + formatTimestamp(typingMessage.getTimestamp()));
+                        if (typingMessage.getGroupId().isPresent()) {
+                            GroupInfo group = m.getGroup(typingMessage.getGroupId().get());
+                            if (group != null) {
+                                System.out.println("  Name: " + group.name);
+                            } else {
+                                System.out.println("  Name: <Unknown group>");
+                            }
+                        }
+                    }
                 }
             } else {
                 System.out.println("Unknown message received.");
@@ -1167,7 +1184,7 @@ public class Main {
             if (message.getExpiresInSeconds() > 0) {
                 System.out.println("Expires in: " + message.getExpiresInSeconds() + " seconds");
             }
-            if (message.isProfileKeyUpdate() && message.getProfileKey().isPresent()) {
+            if (message.getProfileKey().isPresent()) {
                 System.out.println("Profile key update, key length:" + message.getProfileKey().get().length);
             }
 
@@ -1182,7 +1199,9 @@ public class Main {
                         System.out.println("  Filename: " + attachment.getFileName());
                         System.out.println("  Type: " + attachment.getContentType());
                         System.out.println("  Thumbnail:");
-                        printAttachment(attachment.getThumbnail());
+                        if (attachment.getThumbnail() != null) {
+                            printAttachment(attachment.getThumbnail());
+                        }
                     }
                 }
             }
@@ -1199,7 +1218,7 @@ public class Main {
             System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")");
             if (attachment.isPointer()) {
                 final SignalServiceAttachmentPointer pointer = attachment.asPointer();
-                System.out.println("  Id: " + pointer.getId() + " Key length: " + pointer.getKey().length + (pointer.getRelay().isPresent() ? " Relay: " + pointer.getRelay().get() : ""));
+                System.out.println("  Id: " + pointer.getId() + " Key length: " + pointer.getKey().length);
                 System.out.println("  Filename: " + (pointer.getFileName().isPresent() ? pointer.getFileName().get() : "-"));
                 System.out.println("  Size: " + (pointer.getSize().isPresent() ? pointer.getSize().get() + " bytes" : "<unavailable>") + (pointer.getPreview().isPresent() ? " (Preview is available: " + pointer.getPreview().get().length + " bytes)" : ""));
                 System.out.println("  Voice note: " + (pointer.getVoiceNote() ? "yes" : "no"));
@@ -1224,44 +1243,7 @@ public class Main {
         public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
             super.handleMessage(envelope, content, exception);
 
-            if (envelope.isReceipt()) {
-                try {
-                    conn.sendSignal(new Signal.ReceiptReceived(
-                            SIGNAL_OBJECTPATH,
-                            envelope.getTimestamp(),
-                            envelope.getSource()
-                    ));
-                } catch (DBusException e) {
-                    e.printStackTrace();
-                }
-            } else if (content != null && content.getDataMessage().isPresent()) {
-                SignalServiceDataMessage message = content.getDataMessage().get();
-
-                if (!message.isEndSession() &&
-                        !(message.getGroupInfo().isPresent() &&
-                                message.getGroupInfo().get().getType() != SignalServiceGroup.Type.DELIVER)) {
-                    List<String> attachments = new ArrayList<>();
-                    if (message.getAttachments().isPresent()) {
-                        for (SignalServiceAttachment attachment : message.getAttachments().get()) {
-                            if (attachment.isPointer()) {
-                                attachments.add(m.getAttachmentFile(attachment.asPointer().getId()).getAbsolutePath());
-                            }
-                        }
-                    }
-
-                    try {
-                        conn.sendSignal(new Signal.MessageReceived(
-                                SIGNAL_OBJECTPATH,
-                                message.getTimestamp(),
-                                envelope.getSource(),
-                                message.getGroupInfo().isPresent() ? message.getGroupInfo().get().getGroupId() : new byte[0],
-                                message.getBody().isPresent() ? message.getBody().get() : "",
-                                attachments));
-                    } catch (DBusException e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
+            JsonDbusReceiveMessageHandler.sendReceivedMessageToDbus(envelope, content, conn, m);
         }
     }
 
@@ -1308,6 +1290,10 @@ public class Main {
         public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
             super.handleMessage(envelope, content, exception);
 
+            sendReceivedMessageToDbus(envelope, content, conn, m);
+        }
+
+        private static void sendReceivedMessageToDbus(SignalServiceEnvelope envelope, SignalServiceContent content, DBusConnection conn, Manager m) {
             if (envelope.isReceipt()) {
                 try {
                     conn.sendSignal(new Signal.ReceiptReceived(