diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java index 02a57caa1..445127b27 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java @@ -403,6 +403,7 @@ public class MessageController { source.map(account -> account.getAuthenticatedDevice().getId()).orElse(null), messages.timestamp() == 0 ? System.currentTimeMillis() : messages.timestamp(), isStory, + messages.online(), messages.urgent(), reportSpamToken.orElse(null)); } catch (final IllegalArgumentException e) { diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java b/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java index 37cd1d886..3422d44a5 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java @@ -19,6 +19,7 @@ public record IncomingMessage(int type, byte destinationDeviceId, int destinatio @Nullable Byte sourceDeviceId, final long timestamp, final boolean story, + final boolean ephemeral, final boolean urgent, @Nullable byte[] reportSpamToken) { @@ -35,6 +36,7 @@ public record IncomingMessage(int type, byte destinationDeviceId, int destinatio .setServerTimestamp(System.currentTimeMillis()) .setDestinationServiceId(destinationIdentifier.toServiceIdentifierString()) .setStory(story) + .setEphemeral(ephemeral) .setUrgent(urgent); if (sourceAccount != null && sourceDeviceId != null) { diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityTest.java index 6f2da5044..4544acd15 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/entities/OutgoingMessageEntityTest.java @@ -64,8 +64,6 @@ class OutgoingMessageEntityTest { @Test void entityPreservesEnvelope() { - final Random random = new Random(); - final byte[] reportSpamToken = TestRandomUtil.nextBytes(8); final Account account = new Account(); @@ -79,11 +77,14 @@ class OutgoingMessageEntityTest { (byte) 123, System.currentTimeMillis(), false, + false, true, reportSpamToken); MessageProtos.Envelope envelope = baseEnvelope.toBuilder().setServerGuid(UUID.randomUUID().toString()).build(); - assertEquals(envelope, OutgoingMessageEntity.fromEnvelope(envelope).toEnvelope()); + // Note that outgoing message entities don't have an "ephemeral"/"online" flag + assertEquals(envelope.toBuilder().clearEphemeral().build(), + OutgoingMessageEntity.fromEnvelope(envelope).toEnvelope()); } }