From: AsamK Date: Sun, 18 Jun 2017 10:53:06 +0000 (+0200) Subject: Send dbus signal, when receipt is received X-Git-Tag: v0.6.0~13 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/804949ddea13e4201310b219bf9c1fd9f4a2fe56?ds=sidebyside Send dbus signal, when receipt is received Fixes #84 --- diff --git a/src/main/java/org/asamk/Signal.java b/src/main/java/org/asamk/Signal.java index 9eb9b4cd..ab926d3f 100644 --- a/src/main/java/org/asamk/Signal.java +++ b/src/main/java/org/asamk/Signal.java @@ -65,4 +65,23 @@ public interface Signal extends DBusInterface { 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; + } + } } diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index afd5a515..45adf11f 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -397,6 +397,13 @@ public class Main { System.out.println(); } }); + dBusConn.addSigHandler(Signal.ReceiptReceived.class, new DBusSigHandler() { + @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; @@ -1098,7 +1105,17 @@ public class Main { 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() &&