From 9dd96148d103a6ad2572b647d3d60cf271441a59 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 20 Sep 2022 16:04:08 -0300 Subject: [PATCH] Add story boolean to envelope proto. --- .../securesms/database/PushDatabase.java | 6 +++-- .../api/SignalServiceMessageReceiver.java | 6 +++-- .../api/messages/SignalServiceEnvelope.java | 22 ++++++++++++++----- .../push/SignalServiceEnvelopeEntity.java | 7 ++++++ .../main/proto/InternalSerialization.proto | 1 + .../src/main/proto/SignalService.proto | 3 ++- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/PushDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/PushDatabase.java index 5791274861..ef83d89c7e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/PushDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/PushDatabase.java @@ -92,7 +92,8 @@ public class PushDatabase extends Database { cursor.getLong(cursor.getColumnIndexOrThrow(SERVER_DELIVERED_TIMESTAMP)), cursor.getString(cursor.getColumnIndexOrThrow(SERVER_GUID)), "", - true); + true, + false); } } catch (IOException e) { Log.w(TAG, e); @@ -173,7 +174,8 @@ public class PushDatabase extends Database { serverDeliveredTimestamp, serverGuid, "", - true); + true, + false); } catch (IOException e) { throw new AssertionError(e); } diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageReceiver.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageReceiver.java index 2e7f51e271..68d9443ff8 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageReceiver.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessageReceiver.java @@ -219,7 +219,8 @@ public class SignalServiceMessageReceiver { messageResult.getServerDeliveredTimestamp(), entity.getServerUuid(), entity.getDestinationUuid(), - entity.isUrgent()); + entity.isUrgent(), + entity.isStory()); } else { envelope = new SignalServiceEnvelope(entity.getType(), entity.getTimestamp(), @@ -228,7 +229,8 @@ public class SignalServiceMessageReceiver { messageResult.getServerDeliveredTimestamp(), entity.getServerUuid(), entity.getDestinationUuid(), - entity.isUrgent()); + entity.isUrgent(), + entity.isStory()); } callback.onMessage(envelope); diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceEnvelope.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceEnvelope.java index 39b9caf6a2..97a75a5a41 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceEnvelope.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceEnvelope.java @@ -64,7 +64,8 @@ public class SignalServiceEnvelope { long serverDeliveredTimestamp, String uuid, String destinationUuid, - boolean urgent) + boolean urgent, + boolean story) { Envelope.Builder builder = Envelope.newBuilder() .setType(Envelope.Type.valueOf(type)) @@ -72,7 +73,8 @@ public class SignalServiceEnvelope { .setTimestamp(timestamp) .setServerTimestamp(serverReceivedTimestamp) .setDestinationUuid(destinationUuid) - .setUrgent(urgent); + .setUrgent(urgent) + .setStory(story); if (sender.isPresent()) { builder.setSourceUuid(sender.get().getServiceId().toString()); @@ -97,14 +99,16 @@ public class SignalServiceEnvelope { long serverDeliveredTimestamp, String uuid, String destinationUuid, - boolean urgent) + boolean urgent, + boolean story) { Envelope.Builder builder = Envelope.newBuilder() .setType(Envelope.Type.valueOf(type)) .setTimestamp(timestamp) .setServerTimestamp(serverReceivedTimestamp) .setDestinationUuid(destinationUuid) - .setUrgent(urgent); + .setUrgent(urgent) + .setStory(story); if (uuid != null) { builder.setServerGuid(uuid); @@ -245,6 +249,10 @@ public class SignalServiceEnvelope { return envelope.getUrgent(); } + public boolean isStory() { + return envelope.getStory(); + } + private SignalServiceEnvelopeProto.Builder serializeToProto() { SignalServiceEnvelopeProto.Builder builder = SignalServiceEnvelopeProto.newBuilder() .setType(getType()) @@ -252,7 +260,8 @@ public class SignalServiceEnvelope { .setTimestamp(getTimestamp()) .setServerReceivedTimestamp(getServerReceivedTimestamp()) .setServerDeliveredTimestamp(getServerDeliveredTimestamp()) - .setUrgent(isUrgent()); + .setUrgent(isUrgent()) + .setStory(isStory()); if (getSourceUuid().isPresent()) { builder.setSourceUuid(getSourceUuid().get()); @@ -298,6 +307,7 @@ public class SignalServiceEnvelope { proto.getServerDeliveredTimestamp(), proto.getServerGuid(), proto.getDestinationUuid(), - proto.getUrgent()); + proto.getUrgent(), + proto.getStory()); } } diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/SignalServiceEnvelopeEntity.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/SignalServiceEnvelopeEntity.java index d6180c63f1..345444697e 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/SignalServiceEnvelopeEntity.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/SignalServiceEnvelopeEntity.java @@ -40,6 +40,9 @@ public class SignalServiceEnvelopeEntity { @JsonProperty private Boolean urgent; + @JsonProperty + private Boolean story; + public SignalServiceEnvelopeEntity() {} public int getType() { @@ -93,4 +96,8 @@ public class SignalServiceEnvelopeEntity { public boolean isUrgent() { return urgent == null || urgent; } + + public boolean isStory() { + return story != null && story; + } } diff --git a/libsignal/service/src/main/proto/InternalSerialization.proto b/libsignal/service/src/main/proto/InternalSerialization.proto index bf7dc90a44..c94b89e578 100644 --- a/libsignal/service/src/main/proto/InternalSerialization.proto +++ b/libsignal/service/src/main/proto/InternalSerialization.proto @@ -34,6 +34,7 @@ message SignalServiceEnvelopeProto { optional string serverGuid = 10; optional string destinationUuid = 11; optional bool urgent = 12 [default = true]; + optional bool story = 13; } message MetadataProto { diff --git a/libsignal/service/src/main/proto/SignalService.proto b/libsignal/service/src/main/proto/SignalService.proto index d6a7b9606a..affade218a 100644 --- a/libsignal/service/src/main/proto/SignalService.proto +++ b/libsignal/service/src/main/proto/SignalService.proto @@ -35,7 +35,8 @@ message Envelope { optional uint64 serverTimestamp = 10; optional bool urgent = 14 [default = true]; reserved /*updatedPni*/ 15; // Not used presently, may be used in the future - // NEXT ID: 16 + optional bool story = 16; + // NEXT ID: 17 } message Content {