import org.asamk.Signal;
import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupId;
import org.asamk.signal.manager.api.MessageEnvelope;
import org.asamk.signal.manager.api.RecipientAddress;
-import org.asamk.signal.manager.groups.GroupId;
import org.freedesktop.dbus.connections.impl.DBusConnection;
import org.freedesktop.dbus.exceptions.DBusException;
import org.freedesktop.dbus.types.Variant;
try {
sendDbusMessages(envelope);
} catch (DBusException e) {
- e.printStackTrace();
+ throw new RuntimeException(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()) {
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());
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())
.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}"));
}