Update fields for view-once messages.
This commit is contained in:
parent
8b0ca53f92
commit
d43605ad3e
@ -35,7 +35,7 @@ import org.whispersystems.signalservice.api.messages.calls.OfferMessage;
|
||||
import org.whispersystems.signalservice.api.messages.calls.SignalServiceCallMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.BlockedListMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.ConfigurationMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.MessageTimerReadMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.ViewOnceOpenMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.SentTranscriptMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage;
|
||||
@ -282,8 +282,8 @@ public class SignalServiceMessageSender {
|
||||
content = createMultiDeviceGroupsContent(message.getGroups().get().asStream());
|
||||
} else if (message.getRead().isPresent()) {
|
||||
content = createMultiDeviceReadContent(message.getRead().get());
|
||||
} else if (message.getMessageTimerRead().isPresent()) {
|
||||
content = createMultiDeviceMessageTimerReadContent(message.getMessageTimerRead().get());
|
||||
} else if (message.getViewOnceOpen().isPresent()) {
|
||||
content = createMultiDeviceViewOnceOpenContent(message.getViewOnceOpen().get());
|
||||
} else if (message.getBlockedList().isPresent()) {
|
||||
content = createMultiDeviceBlockedContent(message.getBlockedList().get());
|
||||
} else if (message.getConfiguration().isPresent()) {
|
||||
@ -522,9 +522,9 @@ public class SignalServiceMessageSender {
|
||||
builder.setSticker(stickerBuilder.build());
|
||||
}
|
||||
|
||||
if (message.getMessageTimerInSeconds() > 0) {
|
||||
builder.setMessageTimer(message.getMessageTimerInSeconds());
|
||||
builder.setRequiredProtocolVersion(Math.max(DataMessage.ProtocolVersion.MESSAGE_TIMERS.getNumber(), builder.getRequiredProtocolVersion()));
|
||||
if (message.isViewOnce()) {
|
||||
builder.setIsViewOnce(message.isViewOnce());
|
||||
builder.setRequiredProtocolVersion(Math.max(DataMessage.ProtocolVersion.VIEW_ONCE_VALUE, builder.getRequiredProtocolVersion()));
|
||||
}
|
||||
|
||||
builder.setTimestamp(message.getTimestamp());
|
||||
@ -625,7 +625,7 @@ public class SignalServiceMessageSender {
|
||||
sentMessage.setExpirationStartTimestamp(System.currentTimeMillis());
|
||||
}
|
||||
|
||||
if (dataMessage.getMessageTimer() > 0) {
|
||||
if (dataMessage.getIsViewOnce()) {
|
||||
dataMessage = dataMessage.toBuilder().clearAttachments().build();
|
||||
sentMessage.setMessage(dataMessage);
|
||||
}
|
||||
@ -651,13 +651,13 @@ public class SignalServiceMessageSender {
|
||||
return container.setSyncMessage(builder).build().toByteArray();
|
||||
}
|
||||
|
||||
private byte[] createMultiDeviceMessageTimerReadContent(MessageTimerReadMessage readMessage) {
|
||||
private byte[] createMultiDeviceViewOnceOpenContent(ViewOnceOpenMessage readMessage) {
|
||||
Content.Builder container = Content.newBuilder();
|
||||
SyncMessage.Builder builder = createSyncMessageBuilder();
|
||||
|
||||
builder.setMessageTimerRead(SyncMessage.MessageTimerRead.newBuilder()
|
||||
.setTimestamp(readMessage.getTimestamp())
|
||||
.setSender(readMessage.getSender()));
|
||||
builder.setViewOnceOpen(SyncMessage.ViewOnceOpen.newBuilder()
|
||||
.setTimestamp(readMessage.getTimestamp())
|
||||
.setSender(readMessage.getSender()));
|
||||
|
||||
return container.setSyncMessage(builder).build().toByteArray();
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ import org.whispersystems.signalservice.api.messages.calls.HangupMessage;
|
||||
import org.whispersystems.signalservice.api.messages.calls.IceUpdateMessage;
|
||||
import org.whispersystems.signalservice.api.messages.calls.OfferMessage;
|
||||
import org.whispersystems.signalservice.api.messages.calls.SignalServiceCallMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.MessageTimerReadMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.ViewOnceOpenMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.RequestMessage;
|
||||
import org.whispersystems.signalservice.api.messages.multidevice.SentTranscriptMessage;
|
||||
@ -309,7 +309,7 @@ public class SignalServiceCipher {
|
||||
sharedContacts,
|
||||
previews,
|
||||
sticker,
|
||||
content.getMessageTimer());
|
||||
content.getIsViewOnce());
|
||||
}
|
||||
|
||||
private SignalServiceSyncMessage createSynchronizeMessage(Metadata metadata, SyncMessage content)
|
||||
@ -345,10 +345,10 @@ public class SignalServiceCipher {
|
||||
return SignalServiceSyncMessage.forRead(readMessages);
|
||||
}
|
||||
|
||||
if (content.hasMessageTimerRead()) {
|
||||
MessageTimerReadMessage timerRead = new MessageTimerReadMessage(content.getMessageTimerRead().getSender(),
|
||||
content.getMessageTimerRead().getTimestamp());
|
||||
return SignalServiceSyncMessage.forMessageTimerRead(timerRead);
|
||||
if (content.hasViewOnceOpen()) {
|
||||
ViewOnceOpenMessage timerRead = new ViewOnceOpenMessage(content.getViewOnceOpen().getSender(),
|
||||
content.getViewOnceOpen().getTimestamp());
|
||||
return SignalServiceSyncMessage.forViewOnceOpen(timerRead);
|
||||
}
|
||||
|
||||
if (content.hasVerified()) {
|
||||
|
||||
@ -31,7 +31,7 @@ public class SignalServiceDataMessage {
|
||||
private final Optional<List<SharedContact>> contacts;
|
||||
private final Optional<List<Preview>> previews;
|
||||
private final Optional<Sticker> sticker;
|
||||
private final int messageTimerInSeconds;
|
||||
private final boolean viewOnce;
|
||||
|
||||
/**
|
||||
* Construct a SignalServiceDataMessage with a body and no attachments.
|
||||
@ -105,7 +105,7 @@ public class SignalServiceDataMessage {
|
||||
* @param expiresInSeconds The number of seconds in which a message should disappear after having been seen.
|
||||
*/
|
||||
public SignalServiceDataMessage(long timestamp, SignalServiceGroup group, List<SignalServiceAttachment> attachments, String body, int expiresInSeconds) {
|
||||
this(timestamp, group, attachments, body, false, expiresInSeconds, false, null, false, null, null, null, null, 0);
|
||||
this(timestamp, group, attachments, body, false, expiresInSeconds, false, null, false, null, null, null, null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -123,7 +123,7 @@ public class SignalServiceDataMessage {
|
||||
String body, boolean endSession, int expiresInSeconds,
|
||||
boolean expirationUpdate, byte[] profileKey, boolean profileKeyUpdate,
|
||||
Quote quote, List<SharedContact> sharedContacts, List<Preview> previews,
|
||||
Sticker sticker, int messageTimerInSeconds)
|
||||
Sticker sticker, boolean viewOnce)
|
||||
{
|
||||
this.timestamp = timestamp;
|
||||
this.body = Optional.fromNullable(body);
|
||||
@ -135,7 +135,7 @@ public class SignalServiceDataMessage {
|
||||
this.profileKeyUpdate = profileKeyUpdate;
|
||||
this.quote = Optional.fromNullable(quote);
|
||||
this.sticker = Optional.fromNullable(sticker);
|
||||
this.messageTimerInSeconds = messageTimerInSeconds;
|
||||
this.viewOnce = viewOnce;
|
||||
|
||||
if (attachments != null && !attachments.isEmpty()) {
|
||||
this.attachments = Optional.of(attachments);
|
||||
@ -228,8 +228,8 @@ public class SignalServiceDataMessage {
|
||||
return sticker;
|
||||
}
|
||||
|
||||
public int getMessageTimerInSeconds() {
|
||||
return messageTimerInSeconds;
|
||||
public boolean isViewOnce() {
|
||||
return viewOnce;
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
@ -248,7 +248,7 @@ public class SignalServiceDataMessage {
|
||||
private boolean profileKeyUpdate;
|
||||
private Quote quote;
|
||||
private Sticker sticker;
|
||||
private int messageTimerInSeconds;
|
||||
private boolean viewOnce;
|
||||
|
||||
private Builder() {}
|
||||
|
||||
@ -335,8 +335,8 @@ public class SignalServiceDataMessage {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder withMessageTimer(int messageTimerInSeconds) {
|
||||
this.messageTimerInSeconds = messageTimerInSeconds;
|
||||
public Builder withViewOnce(boolean viewOnce) {
|
||||
this.viewOnce = viewOnce;
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -345,7 +345,7 @@ public class SignalServiceDataMessage {
|
||||
return new SignalServiceDataMessage(timestamp, group, attachments, body, endSession,
|
||||
expiresInSeconds, expirationUpdate, profileKey,
|
||||
profileKeyUpdate, quote, sharedContacts, previews,
|
||||
sticker, messageTimerInSeconds);
|
||||
sticker, viewOnce);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -9,8 +9,6 @@ package org.whispersystems.signalservice.api.messages.multidevice;
|
||||
import org.whispersystems.libsignal.util.guava.Optional;
|
||||
import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@ -22,7 +20,7 @@ public class SignalServiceSyncMessage {
|
||||
private final Optional<BlockedListMessage> blockedList;
|
||||
private final Optional<RequestMessage> request;
|
||||
private final Optional<List<ReadMessage>> reads;
|
||||
private final Optional<MessageTimerReadMessage> timerRead;
|
||||
private final Optional<ViewOnceOpenMessage> viewOnceOpen;
|
||||
private final Optional<VerifiedMessage> verified;
|
||||
private final Optional<ConfigurationMessage> configuration;
|
||||
private final Optional<List<StickerPackOperationMessage>> stickerPackOperations;
|
||||
@ -33,7 +31,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional<BlockedListMessage> blockedList,
|
||||
Optional<RequestMessage> request,
|
||||
Optional<List<ReadMessage>> reads,
|
||||
Optional<MessageTimerReadMessage> timerRead,
|
||||
Optional<ViewOnceOpenMessage> viewOnceOpen,
|
||||
Optional<VerifiedMessage> verified,
|
||||
Optional<ConfigurationMessage> configuration,
|
||||
Optional<List<StickerPackOperationMessage>> stickerPackOperations)
|
||||
@ -44,7 +42,7 @@ public class SignalServiceSyncMessage {
|
||||
this.blockedList = blockedList;
|
||||
this.request = request;
|
||||
this.reads = reads;
|
||||
this.timerRead = timerRead;
|
||||
this.viewOnceOpen = viewOnceOpen;
|
||||
this.verified = verified;
|
||||
this.configuration = configuration;
|
||||
this.stickerPackOperations = stickerPackOperations;
|
||||
@ -57,7 +55,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -70,7 +68,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -83,7 +81,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -96,7 +94,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.of(request),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -109,13 +107,13 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.of(reads),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
}
|
||||
|
||||
public static SignalServiceSyncMessage forMessageTimerRead(MessageTimerReadMessage timerRead) {
|
||||
public static SignalServiceSyncMessage forViewOnceOpen(ViewOnceOpenMessage timerRead) {
|
||||
return new SignalServiceSyncMessage(Optional.<SentTranscriptMessage>absent(),
|
||||
Optional.<ContactsMessage>absent(),
|
||||
Optional.<SignalServiceAttachment>absent(),
|
||||
@ -138,7 +136,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.of(reads),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -151,7 +149,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.of(verifiedMessage),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -164,7 +162,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.of(blocked),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -177,7 +175,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.of(configuration),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -190,7 +188,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.of(stickerPackOperations));
|
||||
@ -203,7 +201,7 @@ public class SignalServiceSyncMessage {
|
||||
Optional.<BlockedListMessage>absent(),
|
||||
Optional.<RequestMessage>absent(),
|
||||
Optional.<List<ReadMessage>>absent(),
|
||||
Optional.<MessageTimerReadMessage>absent(),
|
||||
Optional.<ViewOnceOpenMessage>absent(),
|
||||
Optional.<VerifiedMessage>absent(),
|
||||
Optional.<ConfigurationMessage>absent(),
|
||||
Optional.<List<StickerPackOperationMessage>>absent());
|
||||
@ -229,8 +227,8 @@ public class SignalServiceSyncMessage {
|
||||
return reads;
|
||||
}
|
||||
|
||||
public Optional<MessageTimerReadMessage> getMessageTimerRead() {
|
||||
return timerRead;
|
||||
public Optional<ViewOnceOpenMessage> getViewOnceOpen() {
|
||||
return viewOnceOpen;
|
||||
}
|
||||
|
||||
public Optional<BlockedListMessage> getBlockedList() {
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
package org.whispersystems.signalservice.api.messages.multidevice;
|
||||
|
||||
public class MessageTimerReadMessage {
|
||||
public class ViewOnceOpenMessage {
|
||||
|
||||
private final String sender;
|
||||
private final long timestamp;
|
||||
|
||||
public MessageTimerReadMessage(String sender, long timestamp) {
|
||||
public ViewOnceOpenMessage(String sender, long timestamp) {
|
||||
this.sender = sender;
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -178,7 +178,8 @@ message DataMessage {
|
||||
|
||||
INITIAL = 0;
|
||||
MESSAGE_TIMERS = 1;
|
||||
CURRENT = 1;
|
||||
VIEW_ONCE = 2;
|
||||
CURRENT = 2;
|
||||
}
|
||||
|
||||
optional string body = 1;
|
||||
@ -193,7 +194,7 @@ message DataMessage {
|
||||
repeated Preview preview = 10;
|
||||
optional Sticker sticker = 11;
|
||||
optional uint32 requiredProtocolVersion = 12;
|
||||
optional uint32 messageTimer = 13;
|
||||
optional bool isViewOnce = 14;
|
||||
}
|
||||
|
||||
message NullMessage {
|
||||
@ -298,7 +299,7 @@ message SyncMessage {
|
||||
optional Type type = 3;
|
||||
}
|
||||
|
||||
message MessageTimerRead {
|
||||
message ViewOnceOpen {
|
||||
optional string sender = 1;
|
||||
optional uint64 timestamp = 2;
|
||||
}
|
||||
@ -313,7 +314,7 @@ message SyncMessage {
|
||||
optional Configuration configuration = 9;
|
||||
optional bytes padding = 8;
|
||||
repeated StickerPackOperation stickerPackOperation = 10;
|
||||
optional MessageTimerRead messageTimerRead = 11;
|
||||
optional ViewOnceOpen viewOnceOpen = 11;
|
||||
}
|
||||
|
||||
message AttachmentPointer {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user