"name":"org.asamk.Signal",
"allDeclaredMethods":true,
"allDeclaredClasses":true,
- "methods":[{"name":"getSelfNumber","parameterTypes":[] }, {"name":"sendGroupMessageReaction","parameterTypes":["java.lang.String","boolean","java.lang.String","long","byte[]"] }, {"name":"sendMessage","parameterTypes":["java.lang.String","java.util.List","java.lang.String"] }, {"name":"sendMessageReaction","parameterTypes":["java.lang.String","boolean","java.lang.String","long","java.util.List"] }]
+ "methods":[{"name":"getSelfNumber","parameterTypes":[] }, {"name":"sendGroupMessageReaction","parameterTypes":["java.lang.String","boolean","java.lang.String","long","byte[]"] }, {"name":"sendMessage","parameterTypes":["java.lang.String","java.util.List","java.lang.String"] }, {"name":"sendMessageReaction","parameterTypes":["java.lang.String","boolean","java.lang.String","long","java.util.List"] }, {"name":"subscribeReceive","parameterTypes":[] }, {"name":"unsubscribeReceive","parameterTypes":[] }]
},
{
"name":"org.asamk.Signal$Configuration",
"allDeclaredMethods":true,
"allDeclaredClasses":true
},
+{
+ "name":"org.asamk.Signal$EditMessageReceived",
+ "queryAllDeclaredConstructors":true,
+ "queryAllPublicConstructors":true
+},
{
"name":"org.asamk.Signal$Error$AttachmentInvalid",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
}
}
+ class EditMessageReceived extends DBusSignal {
+
+ private final long timestamp;
+ private final long targetSentTimestamp;
+ private final String sender;
+ private final byte[] groupId;
+ private final String message;
+ private final Map<String, Variant<?>> extras;
+
+ public EditMessageReceived(
+ String objectpath,
+ long timestamp,
+ final long targetSentTimestamp,
+ String sender,
+ byte[] groupId,
+ String message,
+ final Map<String, Variant<?>> extras
+ ) throws DBusException {
+ super(objectpath, timestamp, targetSentTimestamp, sender, groupId, message, extras);
+ this.timestamp = timestamp;
+ this.targetSentTimestamp = targetSentTimestamp;
+ this.sender = sender;
+ this.groupId = groupId;
+ this.message = message;
+ this.extras = extras;
+ }
+
+ public long getTimestamp() {
+ return timestamp;
+ }
+
+ public long getTargetSentTimestamp() {
+ return targetSentTimestamp;
+ }
+
+ public String getSender() {
+ return sender;
+ }
+
+ public byte[] getGroupId() {
+ return groupId;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public Map<String, Variant<?>> getExtras() {
+ return extras;
+ }
+ }
+
class MessageReceived extends DBusSignal {
private final long timestamp;
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;
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()) {
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) {
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()) {