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 2b0e1b3fb..958ff6733 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/controllers/MessageController.java @@ -298,17 +298,8 @@ public class MessageController { validateCompleteDeviceList(destination.get(), messages.getMessages(), isSyncMessage); validateRegistrationIds(destination.get(), messages.getMessages()); - // iOS versions prior to 5.5.0.7 send `online` on IncomingMessageList.message, rather on the top-level entity. - // This causes some odd client behaviors, such as persisted typing indicators, so we have a temporary - // server-side adaptation. - final boolean online = messages.getMessages() - .stream() - .findFirst() - .map(IncomingMessage::isOnline) - .orElse(messages.isOnline()); - final List tags = List.of(UserAgentTagUtil.getPlatformTag(userAgent), - Tag.of(EPHEMERAL_TAG_NAME, String.valueOf(online)), + Tag.of(EPHEMERAL_TAG_NAME, String.valueOf(messages.isOnline())), Tag.of(SENDER_TYPE_TAG_NAME, senderType)); for (IncomingMessage incomingMessage : messages.getMessages()) { @@ -316,7 +307,7 @@ public class MessageController { if (destinationDevice.isPresent()) { Metrics.counter(SENT_MESSAGE_COUNTER_NAME, tags).increment(); - sendMessage(source, destination.get(), destinationDevice.get(), messages.getTimestamp(), online, incomingMessage); + sendMessage(source, destination.get(), destinationDevice.get(), messages.getTimestamp(), messages.isOnline(), incomingMessage); } } 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 d8aca7297..cb84c5be2 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/entities/IncomingMessage.java @@ -32,9 +32,6 @@ public class IncomingMessage { @JsonProperty private long timestamp; // deprecated - @JsonProperty - private Boolean online; // use IncomingMessageList.online - this is a temporary adaptation for older clients - public String getDestination() { return destination; } @@ -62,8 +59,4 @@ public class IncomingMessage { public String getContent() { return content; } - - public Boolean isOnline() { - return online; - } } diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java index be5495ea3..9c4945dc7 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/tests/controllers/MessageControllerTest.java @@ -583,37 +583,6 @@ class MessageControllerTest { } - - @ParameterizedTest - @MethodSource - void testOnlineMessage(final String fixture, final boolean expectedOnline) throws Exception { - - final Response response = - resources.getJerseyTest() - .target(String.format("/v1/messages/%s", SINGLE_DEVICE_RECIPIENT)) - .request() - .header("Authorization", AuthHelper.getAuthHeader(AuthHelper.VALID_NUMBER, AuthHelper.VALID_PASSWORD)) - .put(Entity.entity(mapper.readValue(jsonFixture(fixture), IncomingMessageList.class), - MediaType.APPLICATION_JSON_TYPE)); - - assertThat("Good Response", response.getStatus(), is(equalTo(200))); - - verify(messageSender, times(1)).sendMessage(any(Account.class), any(Device.class), any(Envelope.class), eq(expectedOnline)); - } - - private static Stream testOnlineMessage() { - return Stream.of( - Arguments.of("fixtures/current_message_single_device.json", false), // default to `false` when absent - Arguments.of("fixtures/online_message_true.json", true), - Arguments.of("fixtures/online_message_false.json", false), - // iOS versions prior to 5.5.0.7 send `online` on IncomingMessageList.message, rather on the top-level entity. - // This causes some odd client behaviors, such as persisted typing indicators, so we have a temporary - // server-side adaptation. - Arguments.of("fixtures/online_message_true_nested_property.json", true), - Arguments.of("fixtures/online_message_false_nested_property.json", false) - ); - } - @Test void testReportMessage() { diff --git a/service/src/test/resources/fixtures/online_message_false.json b/service/src/test/resources/fixtures/online_message_false.json deleted file mode 100644 index 265e10feb..000000000 --- a/service/src/test/resources/fixtures/online_message_false.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "online": false, - "messages": [ - { - "type": 1, - "destinationDeviceId": 1, - "body": "Zm9vYmFyego", - "timestamp": 1234 - } - ] -} diff --git a/service/src/test/resources/fixtures/online_message_false_nested_property.json b/service/src/test/resources/fixtures/online_message_false_nested_property.json deleted file mode 100644 index 77111f71d..000000000 --- a/service/src/test/resources/fixtures/online_message_false_nested_property.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "messages": [ - { - "type": 1, - "destinationDeviceId": 1, - "body": "Zm9vYmFyego", - "timestamp": 1234, - "online": false - } - ] -} diff --git a/service/src/test/resources/fixtures/online_message_true.json b/service/src/test/resources/fixtures/online_message_true.json deleted file mode 100644 index 6fd0a6a61..000000000 --- a/service/src/test/resources/fixtures/online_message_true.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "online": true, - "messages": [ - { - "type": 1, - "destinationDeviceId": 1, - "body": "Zm9vYmFyego", - "timestamp": 1234 - } - ] -} diff --git a/service/src/test/resources/fixtures/online_message_true_nested_property.json b/service/src/test/resources/fixtures/online_message_true_nested_property.json deleted file mode 100644 index 3437cc17f..000000000 --- a/service/src/test/resources/fixtures/online_message_true_nested_property.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "messages": [ - { - "type": 1, - "destinationDeviceId": 1, - "body": "Zm9vYmFyego", - "timestamp": 1234, - "online": true - } - ] -}