]> nmode's Git Repositories - signal-cli/commitdiff
Send dbus signal, when receipt is received
authorAsamK <asamk@gmx.de>
Sun, 18 Jun 2017 10:53:06 +0000 (12:53 +0200)
committerAsamK <asamk@gmx.de>
Sun, 18 Jun 2017 10:53:06 +0000 (12:53 +0200)
Fixes #84

src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/Main.java

index 9eb9b4cd516393b99ccd09f473f99b0bc892a7ab..ab926d3fcbe02d7d33dba7c1da65f74a502b0575 100644 (file)
@@ -65,4 +65,23 @@ public interface Signal extends DBusInterface {
             return attachments;
         }
     }
             return attachments;
         }
     }
+
+    class ReceiptReceived extends DBusSignal {
+        private long timestamp;
+        private String sender;
+
+        public ReceiptReceived(String objectpath, long timestamp, String sender) throws DBusException {
+            super(objectpath, timestamp, sender);
+            this.timestamp = timestamp;
+            this.sender = sender;
+        }
+
+        public long getTimestamp() {
+            return timestamp;
+        }
+
+        public String getSender() {
+            return sender;
+        }
+    }
 }
 }
index afd5a51574d5851a7cff35dfa975cb0b86c1cb45..45adf11ff5a0a20517bb60669746b40b4cdae15a 100644 (file)
@@ -397,6 +397,13 @@ public class Main {
                                     System.out.println();
                                 }
                             });
                                     System.out.println();
                                 }
                             });
+                            dBusConn.addSigHandler(Signal.ReceiptReceived.class, new DBusSigHandler<Signal.ReceiptReceived>() {
+                                @Override
+                                public void handle(Signal.ReceiptReceived s) {
+                                    System.out.print(String.format("Receipt from: %s\nTimestamp: %s\n",
+                                            s.getSender(), formatTimestamp(s.getTimestamp())));
+                                }
+                            });
                         } catch (UnsatisfiedLinkError e) {
                             System.err.println("Missing native library dependency for dbus service: " + e.getMessage());
                             return 1;
                         } catch (UnsatisfiedLinkError e) {
                             System.err.println("Missing native library dependency for dbus service: " + e.getMessage());
                             return 1;
@@ -1098,7 +1105,17 @@ public class Main {
         public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
             super.handleMessage(envelope, content, exception);
 
         public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
             super.handleMessage(envelope, content, exception);
 
-            if (!envelope.isReceipt() && content != null && content.getDataMessage().isPresent()) {
+            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() &&
                 SignalServiceDataMessage message = content.getDataMessage().get();
 
                 if (!message.isEndSession() &&