From ba389ba6bb442bdba55d18b97d877972451ede5d Mon Sep 17 00:00:00 2001 From: AsamK Date: Tue, 6 Oct 2026 17:50:49 +0200 Subject: [PATCH] Unify remote delete timestamp as targetTimestamp Fixes #2130 --- .../signal/dbus/DbusReceiveMessageHandler.java | 5 ++++- .../org/asamk/signal/json/JsonAdminDelete.java | 14 +++++++++++--- .../org/asamk/signal/json/JsonDataMessage.java | 2 +- .../org/asamk/signal/json/JsonRemoteDelete.java | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/asamk/signal/dbus/DbusReceiveMessageHandler.java b/src/main/java/org/asamk/signal/dbus/DbusReceiveMessageHandler.java index 29f4a4c9..448230cb 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusReceiveMessageHandler.java +++ b/src/main/java/org/asamk/signal/dbus/DbusReceiveMessageHandler.java @@ -165,7 +165,10 @@ public class DbusReceiveMessageHandler implements Manager.ReceiveMessageHandler } if (message.remoteDeleteId().isPresent()) { extras.put("remoteDelete", - new Variant<>(Map.of("timestamp", new Variant<>(message.remoteDeleteId().get())), "a{sv}")); + new Variant<>(Map.of("targetTimestamp", + new Variant<>(message.remoteDeleteId().get()), + "timestamp", + new Variant<>(message.remoteDeleteId().get())), "a{sv}")); } if (message.sticker().isPresent()) { final var sticker = message.sticker().get(); diff --git a/src/main/java/org/asamk/signal/json/JsonAdminDelete.java b/src/main/java/org/asamk/signal/json/JsonAdminDelete.java index c8586c9e..42b24c10 100644 --- a/src/main/java/org/asamk/signal/json/JsonAdminDelete.java +++ b/src/main/java/org/asamk/signal/json/JsonAdminDelete.java @@ -8,7 +8,11 @@ import io.micronaut.jsonschema.JsonSchema; @JsonSchema(title = "AdminDelete") public record JsonAdminDelete( - @Deprecated String targetAuthor, String targetAuthorNumber, String targetAuthorUuid, long targetSentTimestamp + @Deprecated String targetAuthor, + String targetAuthorNumber, + String targetAuthorUuid, + long targetTimestamp, + @Deprecated long targetSentTimestamp ) { static JsonAdminDelete from(MessageEnvelope.Data.AdminDelete adminDelete) { @@ -16,9 +20,13 @@ public record JsonAdminDelete( final var targetAuthor = address.getLegacyIdentifier(); final var targetAuthorNumber = address.number().orElse(null); final var targetAuthorUuid = address.uuid().map(UUID::toString).orElse(null); - final var targetSentTimestamp = adminDelete.targetSentTimestamp(); + final var targetTimestamp = adminDelete.targetSentTimestamp(); - return new JsonAdminDelete(targetAuthor, targetAuthorNumber, targetAuthorUuid, targetSentTimestamp); + return new JsonAdminDelete(targetAuthor, + targetAuthorNumber, + targetAuthorUuid, + targetTimestamp, + targetTimestamp); } } diff --git a/src/main/java/org/asamk/signal/json/JsonDataMessage.java b/src/main/java/org/asamk/signal/json/JsonDataMessage.java index a053945b..f2ea5b5b 100644 --- a/src/main/java/org/asamk/signal/json/JsonDataMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonDataMessage.java @@ -67,7 +67,7 @@ record JsonDataMessage( .map(JsonPreview::from) .toList() : null; final var remoteDelete = dataMessage.remoteDeleteId().isPresent() - ? new JsonRemoteDelete(dataMessage.remoteDeleteId().get()) + ? new JsonRemoteDelete(dataMessage.remoteDeleteId().get(), dataMessage.remoteDeleteId().get()) : null; final var attachments = !dataMessage.attachments().isEmpty() ? dataMessage.attachments() .stream() diff --git a/src/main/java/org/asamk/signal/json/JsonRemoteDelete.java b/src/main/java/org/asamk/signal/json/JsonRemoteDelete.java index b1def8e8..1a870fa9 100644 --- a/src/main/java/org/asamk/signal/json/JsonRemoteDelete.java +++ b/src/main/java/org/asamk/signal/json/JsonRemoteDelete.java @@ -3,4 +3,4 @@ package org.asamk.signal.json; import io.micronaut.jsonschema.JsonSchema; @JsonSchema(title = "RemoteDelete") -record JsonRemoteDelete(long timestamp) {} +record JsonRemoteDelete(long targetTimestamp, @Deprecated long timestamp) {}