From c0a5a6143154c810ce236ed3c0213a544c15915d Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Tue, 10 Aug 2021 09:36:20 +1000 Subject: [PATCH] add unsend request proto --- .../messages/control/UnsendRequest.kt | 55 + libsignal/protobuf/SignalService.proto | 8 + .../libsignal/protos/SignalServiceProtos.java | 1047 +++++++++++++++-- 3 files changed, 1019 insertions(+), 91 deletions(-) create mode 100644 libsession/src/main/java/org/session/libsession/messaging/messages/control/UnsendRequest.kt diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/UnsendRequest.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/UnsendRequest.kt new file mode 100644 index 0000000000..a22dd93348 --- /dev/null +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/UnsendRequest.kt @@ -0,0 +1,55 @@ +package org.session.libsession.messaging.messages.control + +import org.session.libsignal.protos.SignalServiceProtos +import org.session.libsignal.utilities.Log + +class UnsendRequest(): ControlMessage() { + var timestamp: Long? = null + var author: String? = null + + override val isSelfSendValid: Boolean = true + + // region Validation + override fun isValid(): Boolean { + if (!super.isValid()) return false + return timestamp != null && author != null + } + // endregion + + companion object { + const val TAG = "UnsendRequest" + + fun fromProto(proto: SignalServiceProtos.Content): UnsendRequest? { + val unsendRequestProto = if (proto.hasUnsendRequest()) proto.unsendRequest else return null + val timestamp = unsendRequestProto.timestamp + val author = unsendRequestProto.author + return UnsendRequest(timestamp, author) + } + } + + constructor(timestamp: Long, author: String) : this() { + this.timestamp = timestamp + this.author = author + } + + override fun toProto(): SignalServiceProtos.Content? { + val timestamp = timestamp + val author = author + if (timestamp == null || author == null) { + Log.w(TAG, "Couldn't construct unsend request proto from: $this") + return null + } + val unsendRequestProto = SignalServiceProtos.UnsendRequest.newBuilder() + unsendRequestProto.timestamp = timestamp + unsendRequestProto.author = author + val contentProto = SignalServiceProtos.Content.newBuilder() + try { + contentProto.unsendRequest = unsendRequestProto.build() + return contentProto.build() + } catch (e: Exception) { + Log.w(TAG, "Couldn't construct unsend request proto from: $this") + return null + } + } + +} \ No newline at end of file diff --git a/libsignal/protobuf/SignalService.proto b/libsignal/protobuf/SignalService.proto index 7ee8dc9946..390a67a1a8 100644 --- a/libsignal/protobuf/SignalService.proto +++ b/libsignal/protobuf/SignalService.proto @@ -35,12 +35,20 @@ message TypingMessage { required Action action = 2; } +message UnsendRequest { + // @required + required uint64 timestamp = 1; + // @required + required string author = 2; +} + message Content { optional DataMessage dataMessage = 1; optional ReceiptMessage receiptMessage = 5; optional TypingMessage typingMessage = 6; optional ConfigurationMessage configurationMessage = 7; optional DataExtractionNotification dataExtractionNotification = 8; + optional UnsendRequest unsendRequest = 9; } message KeyPair { diff --git a/libsignal/src/main/java/org/session/libsignal/protos/SignalServiceProtos.java b/libsignal/src/main/java/org/session/libsignal/protos/SignalServiceProtos.java index 0ca46d3a9f..4dce0ba511 100644 --- a/libsignal/src/main/java/org/session/libsignal/protos/SignalServiceProtos.java +++ b/libsignal/src/main/java/org/session/libsignal/protos/SignalServiceProtos.java @@ -1706,6 +1706,654 @@ public final class SignalServiceProtos { // @@protoc_insertion_point(class_scope:signalservice.TypingMessage) } + public interface UnsendRequestOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required uint64 timestamp = 1; + /** + * required uint64 timestamp = 1; + * + *
+     * @required
+     * 
+ */ + boolean hasTimestamp(); + /** + * required uint64 timestamp = 1; + * + *
+     * @required
+     * 
+ */ + long getTimestamp(); + + // required string author = 2; + /** + * required string author = 2; + * + *
+     * @required
+     * 
+ */ + boolean hasAuthor(); + /** + * required string author = 2; + * + *
+     * @required
+     * 
+ */ + java.lang.String getAuthor(); + /** + * required string author = 2; + * + *
+     * @required
+     * 
+ */ + com.google.protobuf.ByteString + getAuthorBytes(); + } + /** + * Protobuf type {@code signalservice.UnsendRequest} + */ + public static final class UnsendRequest extends + com.google.protobuf.GeneratedMessage + implements UnsendRequestOrBuilder { + // Use UnsendRequest.newBuilder() to construct. + private UnsendRequest(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private UnsendRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final UnsendRequest defaultInstance; + public static UnsendRequest getDefaultInstance() { + return defaultInstance; + } + + public UnsendRequest getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private UnsendRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + timestamp_ = input.readUInt64(); + break; + } + case 18: { + bitField0_ |= 0x00000002; + author_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.session.libsignal.protos.SignalServiceProtos.internal_static_signalservice_UnsendRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.session.libsignal.protos.SignalServiceProtos.internal_static_signalservice_UnsendRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.class, org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public UnsendRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new UnsendRequest(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint64 timestamp = 1; + public static final int TIMESTAMP_FIELD_NUMBER = 1; + private long timestamp_; + /** + * required uint64 timestamp = 1; + * + *
+     * @required
+     * 
+ */ + public boolean hasTimestamp() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint64 timestamp = 1; + * + *
+     * @required
+     * 
+ */ + public long getTimestamp() { + return timestamp_; + } + + // required string author = 2; + public static final int AUTHOR_FIELD_NUMBER = 2; + private java.lang.Object author_; + /** + * required string author = 2; + * + *
+     * @required
+     * 
+ */ + public boolean hasAuthor() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string author = 2; + * + *
+     * @required
+     * 
+ */ + public java.lang.String getAuthor() { + java.lang.Object ref = author_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + author_ = s; + } + return s; + } + } + /** + * required string author = 2; + * + *
+     * @required
+     * 
+ */ + public com.google.protobuf.ByteString + getAuthorBytes() { + java.lang.Object ref = author_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + author_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + timestamp_ = 0L; + author_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasTimestamp()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAuthor()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt64(1, timestamp_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getAuthorBytes()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(1, timestamp_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getAuthorBytes()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.session.libsignal.protos.SignalServiceProtos.UnsendRequest prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code signalservice.UnsendRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements org.session.libsignal.protos.SignalServiceProtos.UnsendRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.session.libsignal.protos.SignalServiceProtos.internal_static_signalservice_UnsendRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.session.libsignal.protos.SignalServiceProtos.internal_static_signalservice_UnsendRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.class, org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.Builder.class); + } + + // Construct using org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + timestamp_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + author_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.session.libsignal.protos.SignalServiceProtos.internal_static_signalservice_UnsendRequest_descriptor; + } + + public org.session.libsignal.protos.SignalServiceProtos.UnsendRequest getDefaultInstanceForType() { + return org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.getDefaultInstance(); + } + + public org.session.libsignal.protos.SignalServiceProtos.UnsendRequest build() { + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.session.libsignal.protos.SignalServiceProtos.UnsendRequest buildPartial() { + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest result = new org.session.libsignal.protos.SignalServiceProtos.UnsendRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.timestamp_ = timestamp_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.author_ = author_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.session.libsignal.protos.SignalServiceProtos.UnsendRequest) { + return mergeFrom((org.session.libsignal.protos.SignalServiceProtos.UnsendRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.session.libsignal.protos.SignalServiceProtos.UnsendRequest other) { + if (other == org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.getDefaultInstance()) return this; + if (other.hasTimestamp()) { + setTimestamp(other.getTimestamp()); + } + if (other.hasAuthor()) { + bitField0_ |= 0x00000002; + author_ = other.author_; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasTimestamp()) { + + return false; + } + if (!hasAuthor()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.session.libsignal.protos.SignalServiceProtos.UnsendRequest) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint64 timestamp = 1; + private long timestamp_ ; + /** + * required uint64 timestamp = 1; + * + *
+       * @required
+       * 
+ */ + public boolean hasTimestamp() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint64 timestamp = 1; + * + *
+       * @required
+       * 
+ */ + public long getTimestamp() { + return timestamp_; + } + /** + * required uint64 timestamp = 1; + * + *
+       * @required
+       * 
+ */ + public Builder setTimestamp(long value) { + bitField0_ |= 0x00000001; + timestamp_ = value; + onChanged(); + return this; + } + /** + * required uint64 timestamp = 1; + * + *
+       * @required
+       * 
+ */ + public Builder clearTimestamp() { + bitField0_ = (bitField0_ & ~0x00000001); + timestamp_ = 0L; + onChanged(); + return this; + } + + // required string author = 2; + private java.lang.Object author_ = ""; + /** + * required string author = 2; + * + *
+       * @required
+       * 
+ */ + public boolean hasAuthor() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string author = 2; + * + *
+       * @required
+       * 
+ */ + public java.lang.String getAuthor() { + java.lang.Object ref = author_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + author_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string author = 2; + * + *
+       * @required
+       * 
+ */ + public com.google.protobuf.ByteString + getAuthorBytes() { + java.lang.Object ref = author_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + author_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string author = 2; + * + *
+       * @required
+       * 
+ */ + public Builder setAuthor( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + author_ = value; + onChanged(); + return this; + } + /** + * required string author = 2; + * + *
+       * @required
+       * 
+ */ + public Builder clearAuthor() { + bitField0_ = (bitField0_ & ~0x00000002); + author_ = getDefaultInstance().getAuthor(); + onChanged(); + return this; + } + /** + * required string author = 2; + * + *
+       * @required
+       * 
+ */ + public Builder setAuthorBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + author_ = value; + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:signalservice.UnsendRequest) + } + + static { + defaultInstance = new UnsendRequest(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:signalservice.UnsendRequest) + } + public interface ContentOrBuilder extends com.google.protobuf.MessageOrBuilder { @@ -1778,6 +2426,20 @@ public final class SignalServiceProtos { * optional .signalservice.DataExtractionNotification dataExtractionNotification = 8; */ org.session.libsignal.protos.SignalServiceProtos.DataExtractionNotificationOrBuilder getDataExtractionNotificationOrBuilder(); + + // optional .signalservice.UnsendRequest unsendRequest = 9; + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + boolean hasUnsendRequest(); + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest getUnsendRequest(); + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + org.session.libsignal.protos.SignalServiceProtos.UnsendRequestOrBuilder getUnsendRequestOrBuilder(); } /** * Protobuf type {@code signalservice.Content} @@ -1895,6 +2557,19 @@ public final class SignalServiceProtos { bitField0_ |= 0x00000010; break; } + case 74: { + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.Builder subBuilder = null; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + subBuilder = unsendRequest_.toBuilder(); + } + unsendRequest_ = input.readMessage(org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(unsendRequest_); + unsendRequest_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000020; + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -2045,12 +2720,35 @@ public final class SignalServiceProtos { return dataExtractionNotification_; } + // optional .signalservice.UnsendRequest unsendRequest = 9; + public static final int UNSENDREQUEST_FIELD_NUMBER = 9; + private org.session.libsignal.protos.SignalServiceProtos.UnsendRequest unsendRequest_; + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public boolean hasUnsendRequest() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public org.session.libsignal.protos.SignalServiceProtos.UnsendRequest getUnsendRequest() { + return unsendRequest_; + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public org.session.libsignal.protos.SignalServiceProtos.UnsendRequestOrBuilder getUnsendRequestOrBuilder() { + return unsendRequest_; + } + private void initFields() { dataMessage_ = org.session.libsignal.protos.SignalServiceProtos.DataMessage.getDefaultInstance(); receiptMessage_ = org.session.libsignal.protos.SignalServiceProtos.ReceiptMessage.getDefaultInstance(); typingMessage_ = org.session.libsignal.protos.SignalServiceProtos.TypingMessage.getDefaultInstance(); configurationMessage_ = org.session.libsignal.protos.SignalServiceProtos.ConfigurationMessage.getDefaultInstance(); dataExtractionNotification_ = org.session.libsignal.protos.SignalServiceProtos.DataExtractionNotification.getDefaultInstance(); + unsendRequest_ = org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -2087,6 +2785,12 @@ public final class SignalServiceProtos { return false; } } + if (hasUnsendRequest()) { + if (!getUnsendRequest().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } memoizedIsInitialized = 1; return true; } @@ -2109,6 +2813,9 @@ public final class SignalServiceProtos { if (((bitField0_ & 0x00000010) == 0x00000010)) { output.writeMessage(8, dataExtractionNotification_); } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeMessage(9, unsendRequest_); + } getUnknownFields().writeTo(output); } @@ -2138,6 +2845,10 @@ public final class SignalServiceProtos { size += com.google.protobuf.CodedOutputStream .computeMessageSize(8, dataExtractionNotification_); } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(9, unsendRequest_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -2251,6 +2962,7 @@ public final class SignalServiceProtos { getTypingMessageFieldBuilder(); getConfigurationMessageFieldBuilder(); getDataExtractionNotificationFieldBuilder(); + getUnsendRequestFieldBuilder(); } } private static Builder create() { @@ -2289,6 +3001,12 @@ public final class SignalServiceProtos { dataExtractionNotificationBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000010); + if (unsendRequestBuilder_ == null) { + unsendRequest_ = org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.getDefaultInstance(); + } else { + unsendRequestBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); return this; } @@ -2357,6 +3075,14 @@ public final class SignalServiceProtos { } else { result.dataExtractionNotification_ = dataExtractionNotificationBuilder_.build(); } + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + if (unsendRequestBuilder_ == null) { + result.unsendRequest_ = unsendRequest_; + } else { + result.unsendRequest_ = unsendRequestBuilder_.build(); + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -2388,6 +3114,9 @@ public final class SignalServiceProtos { if (other.hasDataExtractionNotification()) { mergeDataExtractionNotification(other.getDataExtractionNotification()); } + if (other.hasUnsendRequest()) { + mergeUnsendRequest(other.getUnsendRequest()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -2423,6 +3152,12 @@ public final class SignalServiceProtos { return false; } } + if (hasUnsendRequest()) { + if (!getUnsendRequest().isInitialized()) { + + return false; + } + } return true; } @@ -3030,6 +3765,123 @@ public final class SignalServiceProtos { return dataExtractionNotificationBuilder_; } + // optional .signalservice.UnsendRequest unsendRequest = 9; + private org.session.libsignal.protos.SignalServiceProtos.UnsendRequest unsendRequest_ = org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.getDefaultInstance(); + private com.google.protobuf.SingleFieldBuilder< + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest, org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.Builder, org.session.libsignal.protos.SignalServiceProtos.UnsendRequestOrBuilder> unsendRequestBuilder_; + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public boolean hasUnsendRequest() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public org.session.libsignal.protos.SignalServiceProtos.UnsendRequest getUnsendRequest() { + if (unsendRequestBuilder_ == null) { + return unsendRequest_; + } else { + return unsendRequestBuilder_.getMessage(); + } + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public Builder setUnsendRequest(org.session.libsignal.protos.SignalServiceProtos.UnsendRequest value) { + if (unsendRequestBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + unsendRequest_ = value; + onChanged(); + } else { + unsendRequestBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public Builder setUnsendRequest( + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.Builder builderForValue) { + if (unsendRequestBuilder_ == null) { + unsendRequest_ = builderForValue.build(); + onChanged(); + } else { + unsendRequestBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public Builder mergeUnsendRequest(org.session.libsignal.protos.SignalServiceProtos.UnsendRequest value) { + if (unsendRequestBuilder_ == null) { + if (((bitField0_ & 0x00000020) == 0x00000020) && + unsendRequest_ != org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.getDefaultInstance()) { + unsendRequest_ = + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.newBuilder(unsendRequest_).mergeFrom(value).buildPartial(); + } else { + unsendRequest_ = value; + } + onChanged(); + } else { + unsendRequestBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000020; + return this; + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public Builder clearUnsendRequest() { + if (unsendRequestBuilder_ == null) { + unsendRequest_ = org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.getDefaultInstance(); + onChanged(); + } else { + unsendRequestBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000020); + return this; + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.Builder getUnsendRequestBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return getUnsendRequestFieldBuilder().getBuilder(); + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + public org.session.libsignal.protos.SignalServiceProtos.UnsendRequestOrBuilder getUnsendRequestOrBuilder() { + if (unsendRequestBuilder_ != null) { + return unsendRequestBuilder_.getMessageOrBuilder(); + } else { + return unsendRequest_; + } + } + /** + * optional .signalservice.UnsendRequest unsendRequest = 9; + */ + private com.google.protobuf.SingleFieldBuilder< + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest, org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.Builder, org.session.libsignal.protos.SignalServiceProtos.UnsendRequestOrBuilder> + getUnsendRequestFieldBuilder() { + if (unsendRequestBuilder_ == null) { + unsendRequestBuilder_ = new com.google.protobuf.SingleFieldBuilder< + org.session.libsignal.protos.SignalServiceProtos.UnsendRequest, org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.Builder, org.session.libsignal.protos.SignalServiceProtos.UnsendRequestOrBuilder>( + unsendRequest_, + getParentForChildren(), + isClean()); + unsendRequest_ = null; + } + return unsendRequestBuilder_; + } + // @@protoc_insertion_point(builder_scope:signalservice.Content) } @@ -21254,6 +22106,11 @@ public final class SignalServiceProtos { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_signalservice_TypingMessage_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_signalservice_UnsendRequest_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_signalservice_UnsendRequest_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor internal_static_signalservice_Content_descriptor; private static @@ -21357,88 +22214,90 @@ public final class SignalServiceProtos { "SSAGE\020\007\"{\n\rTypingMessage\022\021\n\ttimestamp\030\001 " + "\002(\004\0223\n\006action\030\002 \002(\0162#.signalservice.Typi" + "ngMessage.Action\"\"\n\006Action\022\013\n\007STARTED\020\000\022" + - "\013\n\007STOPPED\020\001\"\270\002\n\007Content\022/\n\013dataMessage\030", - "\001 \001(\0132\032.signalservice.DataMessage\0225\n\016rec" + - "eiptMessage\030\005 \001(\0132\035.signalservice.Receip" + - "tMessage\0223\n\rtypingMessage\030\006 \001(\0132\034.signal" + - "service.TypingMessage\022A\n\024configurationMe" + - "ssage\030\007 \001(\0132#.signalservice.Configuratio" + - "nMessage\022M\n\032dataExtractionNotification\030\010" + - " \001(\0132).signalservice.DataExtractionNotif" + - "ication\"0\n\007KeyPair\022\021\n\tpublicKey\030\001 \002(\014\022\022\n" + - "\nprivateKey\030\002 \002(\014\"\226\001\n\032DataExtractionNoti" + - "fication\022<\n\004type\030\001 \002(\0162..signalservice.D", - "ataExtractionNotification.Type\022\021\n\ttimest" + - "amp\030\002 \001(\004\"\'\n\004Type\022\016\n\nSCREENSHOT\020\001\022\017\n\013MED" + - "IA_SAVED\020\002\"\245\014\n\013DataMessage\022\014\n\004body\030\001 \001(\t" + - "\0225\n\013attachments\030\002 \003(\0132 .signalservice.At" + - "tachmentPointer\022*\n\005group\030\003 \001(\0132\033.signals" + - "ervice.GroupContext\022\r\n\005flags\030\004 \001(\r\022\023\n\013ex" + - "pireTimer\030\005 \001(\r\022\022\n\nprofileKey\030\006 \001(\014\022\021\n\tt" + - "imestamp\030\007 \001(\004\022/\n\005quote\030\010 \001(\0132 .signalse" + - "rvice.DataMessage.Quote\0223\n\007preview\030\n \003(\013" + - "2\".signalservice.DataMessage.Preview\0227\n\007", - "profile\030e \001(\0132&.signalservice.DataMessag" + - "e.LokiProfile\022K\n\023openGroupInvitation\030f \001" + - "(\0132..signalservice.DataMessage.OpenGroup" + - "Invitation\022W\n\031closedGroupControlMessage\030" + - "h \001(\01324.signalservice.DataMessage.Closed" + - "GroupControlMessage\022\022\n\nsyncTarget\030i \001(\t\032" + - "\225\002\n\005Quote\022\n\n\002id\030\001 \002(\004\022\016\n\006author\030\002 \002(\t\022\014\n" + - "\004text\030\003 \001(\t\022F\n\013attachments\030\004 \003(\01321.signa" + - "lservice.DataMessage.Quote.QuotedAttachm" + - "ent\032\231\001\n\020QuotedAttachment\022\023\n\013contentType\030", - "\001 \001(\t\022\020\n\010fileName\030\002 \001(\t\0223\n\tthumbnail\030\003 \001" + - "(\0132 .signalservice.AttachmentPointer\022\r\n\005" + - "flags\030\004 \001(\r\"\032\n\005Flags\022\021\n\rVOICE_MESSAGE\020\001\032" + - "V\n\007Preview\022\013\n\003url\030\001 \002(\t\022\r\n\005title\030\002 \001(\t\022/" + - "\n\005image\030\003 \001(\0132 .signalservice.Attachment" + - "Pointer\032:\n\013LokiProfile\022\023\n\013displayName\030\001 " + - "\001(\t\022\026\n\016profilePicture\030\002 \001(\t\0320\n\023OpenGroup" + - "Invitation\022\013\n\003url\030\001 \002(\t\022\014\n\004name\030\003 \002(\t\032\374\003" + - "\n\031ClosedGroupControlMessage\022G\n\004type\030\001 \002(" + - "\01629.signalservice.DataMessage.ClosedGrou", - "pControlMessage.Type\022\021\n\tpublicKey\030\002 \001(\014\022" + - "\014\n\004name\030\003 \001(\t\0221\n\021encryptionKeyPair\030\004 \001(\013" + - "2\026.signalservice.KeyPair\022\017\n\007members\030\005 \003(" + - "\014\022\016\n\006admins\030\006 \003(\014\022U\n\010wrappers\030\007 \003(\0132C.si" + - "gnalservice.DataMessage.ClosedGroupContr" + - "olMessage.KeyPairWrapper\022\027\n\017expirationTi" + - "mer\030\010 \001(\r\032=\n\016KeyPairWrapper\022\021\n\tpublicKey" + - "\030\001 \002(\014\022\030\n\020encryptedKeyPair\030\002 \002(\014\"r\n\004Type" + - "\022\007\n\003NEW\020\001\022\027\n\023ENCRYPTION_KEY_PAIR\020\003\022\017\n\013NA" + - "ME_CHANGE\020\004\022\021\n\rMEMBERS_ADDED\020\005\022\023\n\017MEMBER", - "S_REMOVED\020\006\022\017\n\013MEMBER_LEFT\020\007\"$\n\005Flags\022\033\n" + - "\027EXPIRATION_TIMER_UPDATE\020\002\"\347\003\n\024Configura" + - "tionMessage\022E\n\014closedGroups\030\001 \003(\0132/.sign" + - "alservice.ConfigurationMessage.ClosedGro" + - "up\022\022\n\nopenGroups\030\002 \003(\t\022\023\n\013displayName\030\003 " + - "\001(\t\022\026\n\016profilePicture\030\004 \001(\t\022\022\n\nprofileKe" + - "y\030\005 \001(\014\022=\n\010contacts\030\006 \003(\0132+.signalservic" + - "e.ConfigurationMessage.Contact\032\233\001\n\013Close" + - "dGroup\022\021\n\tpublicKey\030\001 \001(\014\022\014\n\004name\030\002 \001(\t\022" + - "1\n\021encryptionKeyPair\030\003 \001(\0132\026.signalservi", - "ce.KeyPair\022\017\n\007members\030\004 \003(\014\022\016\n\006admins\030\005 " + - "\003(\014\022\027\n\017expirationTimer\030\006 \001(\r\032V\n\007Contact\022" + - "\021\n\tpublicKey\030\001 \002(\014\022\014\n\004name\030\002 \002(\t\022\026\n\016prof" + - "ilePicture\030\003 \001(\t\022\022\n\nprofileKey\030\004 \001(\014\"u\n\016" + - "ReceiptMessage\0220\n\004type\030\001 \002(\0162\".signalser" + - "vice.ReceiptMessage.Type\022\021\n\ttimestamp\030\002 " + - "\003(\004\"\036\n\004Type\022\014\n\010DELIVERY\020\000\022\010\n\004READ\020\001\"\354\001\n\021" + - "AttachmentPointer\022\n\n\002id\030\001 \002(\006\022\023\n\013content" + - "Type\030\002 \001(\t\022\013\n\003key\030\003 \001(\014\022\014\n\004size\030\004 \001(\r\022\021\n" + - "\tthumbnail\030\005 \001(\014\022\016\n\006digest\030\006 \001(\014\022\020\n\010file", - "Name\030\007 \001(\t\022\r\n\005flags\030\010 \001(\r\022\r\n\005width\030\t \001(\r" + - "\022\016\n\006height\030\n \001(\r\022\017\n\007caption\030\013 \001(\t\022\013\n\003url" + - "\030e \001(\t\"\032\n\005Flags\022\021\n\rVOICE_MESSAGE\020\001\"\365\001\n\014G" + - "roupContext\022\n\n\002id\030\001 \001(\014\022.\n\004type\030\002 \001(\0162 ." + - "signalservice.GroupContext.Type\022\014\n\004name\030" + - "\003 \001(\t\022\017\n\007members\030\004 \003(\t\0220\n\006avatar\030\005 \001(\0132 " + - ".signalservice.AttachmentPointer\022\016\n\006admi" + - "ns\030\006 \003(\t\"H\n\004Type\022\013\n\007UNKNOWN\020\000\022\n\n\006UPDATE\020" + - "\001\022\013\n\007DELIVER\020\002\022\010\n\004QUIT\020\003\022\020\n\014REQUEST_INFO" + - "\020\004B3\n\034org.session.libsignal.protosB\023Sign", - "alServiceProtos" + "\013\n\007STOPPED\020\001\"2\n\rUnsendRequest\022\021\n\ttimesta", + "mp\030\001 \002(\004\022\016\n\006author\030\002 \002(\t\"\355\002\n\007Content\022/\n\013" + + "dataMessage\030\001 \001(\0132\032.signalservice.DataMe" + + "ssage\0225\n\016receiptMessage\030\005 \001(\0132\035.signalse" + + "rvice.ReceiptMessage\0223\n\rtypingMessage\030\006 " + + "\001(\0132\034.signalservice.TypingMessage\022A\n\024con" + + "figurationMessage\030\007 \001(\0132#.signalservice." + + "ConfigurationMessage\022M\n\032dataExtractionNo" + + "tification\030\010 \001(\0132).signalservice.DataExt" + + "ractionNotification\0223\n\runsendRequest\030\t \001" + + "(\0132\034.signalservice.UnsendRequest\"0\n\007KeyP", + "air\022\021\n\tpublicKey\030\001 \002(\014\022\022\n\nprivateKey\030\002 \002" + + "(\014\"\226\001\n\032DataExtractionNotification\022<\n\004typ" + + "e\030\001 \002(\0162..signalservice.DataExtractionNo" + + "tification.Type\022\021\n\ttimestamp\030\002 \001(\004\"\'\n\004Ty" + + "pe\022\016\n\nSCREENSHOT\020\001\022\017\n\013MEDIA_SAVED\020\002\"\245\014\n\013" + + "DataMessage\022\014\n\004body\030\001 \001(\t\0225\n\013attachments" + + "\030\002 \003(\0132 .signalservice.AttachmentPointer" + + "\022*\n\005group\030\003 \001(\0132\033.signalservice.GroupCon" + + "text\022\r\n\005flags\030\004 \001(\r\022\023\n\013expireTimer\030\005 \001(\r" + + "\022\022\n\nprofileKey\030\006 \001(\014\022\021\n\ttimestamp\030\007 \001(\004\022", + "/\n\005quote\030\010 \001(\0132 .signalservice.DataMessa" + + "ge.Quote\0223\n\007preview\030\n \003(\0132\".signalservic" + + "e.DataMessage.Preview\0227\n\007profile\030e \001(\0132&" + + ".signalservice.DataMessage.LokiProfile\022K" + + "\n\023openGroupInvitation\030f \001(\0132..signalserv" + + "ice.DataMessage.OpenGroupInvitation\022W\n\031c" + + "losedGroupControlMessage\030h \001(\01324.signals" + + "ervice.DataMessage.ClosedGroupControlMes" + + "sage\022\022\n\nsyncTarget\030i \001(\t\032\225\002\n\005Quote\022\n\n\002id" + + "\030\001 \002(\004\022\016\n\006author\030\002 \002(\t\022\014\n\004text\030\003 \001(\t\022F\n\013", + "attachments\030\004 \003(\01321.signalservice.DataMe" + + "ssage.Quote.QuotedAttachment\032\231\001\n\020QuotedA" + + "ttachment\022\023\n\013contentType\030\001 \001(\t\022\020\n\010fileNa" + + "me\030\002 \001(\t\0223\n\tthumbnail\030\003 \001(\0132 .signalserv" + + "ice.AttachmentPointer\022\r\n\005flags\030\004 \001(\r\"\032\n\005" + + "Flags\022\021\n\rVOICE_MESSAGE\020\001\032V\n\007Preview\022\013\n\003u" + + "rl\030\001 \002(\t\022\r\n\005title\030\002 \001(\t\022/\n\005image\030\003 \001(\0132 " + + ".signalservice.AttachmentPointer\032:\n\013Loki" + + "Profile\022\023\n\013displayName\030\001 \001(\t\022\026\n\016profileP" + + "icture\030\002 \001(\t\0320\n\023OpenGroupInvitation\022\013\n\003u", + "rl\030\001 \002(\t\022\014\n\004name\030\003 \002(\t\032\374\003\n\031ClosedGroupCo" + + "ntrolMessage\022G\n\004type\030\001 \002(\01629.signalservi" + + "ce.DataMessage.ClosedGroupControlMessage" + + ".Type\022\021\n\tpublicKey\030\002 \001(\014\022\014\n\004name\030\003 \001(\t\0221" + + "\n\021encryptionKeyPair\030\004 \001(\0132\026.signalservic" + + "e.KeyPair\022\017\n\007members\030\005 \003(\014\022\016\n\006admins\030\006 \003" + + "(\014\022U\n\010wrappers\030\007 \003(\0132C.signalservice.Dat" + + "aMessage.ClosedGroupControlMessage.KeyPa" + + "irWrapper\022\027\n\017expirationTimer\030\010 \001(\r\032=\n\016Ke" + + "yPairWrapper\022\021\n\tpublicKey\030\001 \002(\014\022\030\n\020encry", + "ptedKeyPair\030\002 \002(\014\"r\n\004Type\022\007\n\003NEW\020\001\022\027\n\023EN" + + "CRYPTION_KEY_PAIR\020\003\022\017\n\013NAME_CHANGE\020\004\022\021\n\r" + + "MEMBERS_ADDED\020\005\022\023\n\017MEMBERS_REMOVED\020\006\022\017\n\013" + + "MEMBER_LEFT\020\007\"$\n\005Flags\022\033\n\027EXPIRATION_TIM" + + "ER_UPDATE\020\002\"\347\003\n\024ConfigurationMessage\022E\n\014" + + "closedGroups\030\001 \003(\0132/.signalservice.Confi" + + "gurationMessage.ClosedGroup\022\022\n\nopenGroup" + + "s\030\002 \003(\t\022\023\n\013displayName\030\003 \001(\t\022\026\n\016profileP" + + "icture\030\004 \001(\t\022\022\n\nprofileKey\030\005 \001(\014\022=\n\010cont" + + "acts\030\006 \003(\0132+.signalservice.Configuration", + "Message.Contact\032\233\001\n\013ClosedGroup\022\021\n\tpubli" + + "cKey\030\001 \001(\014\022\014\n\004name\030\002 \001(\t\0221\n\021encryptionKe" + + "yPair\030\003 \001(\0132\026.signalservice.KeyPair\022\017\n\007m" + + "embers\030\004 \003(\014\022\016\n\006admins\030\005 \003(\014\022\027\n\017expirati" + + "onTimer\030\006 \001(\r\032V\n\007Contact\022\021\n\tpublicKey\030\001 " + + "\002(\014\022\014\n\004name\030\002 \002(\t\022\026\n\016profilePicture\030\003 \001(" + + "\t\022\022\n\nprofileKey\030\004 \001(\014\"u\n\016ReceiptMessage\022" + + "0\n\004type\030\001 \002(\0162\".signalservice.ReceiptMes" + + "sage.Type\022\021\n\ttimestamp\030\002 \003(\004\"\036\n\004Type\022\014\n\010" + + "DELIVERY\020\000\022\010\n\004READ\020\001\"\354\001\n\021AttachmentPoint", + "er\022\n\n\002id\030\001 \002(\006\022\023\n\013contentType\030\002 \001(\t\022\013\n\003k" + + "ey\030\003 \001(\014\022\014\n\004size\030\004 \001(\r\022\021\n\tthumbnail\030\005 \001(" + + "\014\022\016\n\006digest\030\006 \001(\014\022\020\n\010fileName\030\007 \001(\t\022\r\n\005f" + + "lags\030\010 \001(\r\022\r\n\005width\030\t \001(\r\022\016\n\006height\030\n \001(" + + "\r\022\017\n\007caption\030\013 \001(\t\022\013\n\003url\030e \001(\t\"\032\n\005Flags" + + "\022\021\n\rVOICE_MESSAGE\020\001\"\365\001\n\014GroupContext\022\n\n\002" + + "id\030\001 \001(\014\022.\n\004type\030\002 \001(\0162 .signalservice.G" + + "roupContext.Type\022\014\n\004name\030\003 \001(\t\022\017\n\007member" + + "s\030\004 \003(\t\0220\n\006avatar\030\005 \001(\0132 .signalservice." + + "AttachmentPointer\022\016\n\006admins\030\006 \003(\t\"H\n\004Typ", + "e\022\013\n\007UNKNOWN\020\000\022\n\n\006UPDATE\020\001\022\013\n\007DELIVER\020\002\022" + + "\010\n\004QUIT\020\003\022\020\n\014REQUEST_INFO\020\004B3\n\034org.sessi" + + "on.libsignal.protosB\023SignalServiceProtos" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -21457,26 +22316,32 @@ public final class SignalServiceProtos { com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_TypingMessage_descriptor, new java.lang.String[] { "Timestamp", "Action", }); - internal_static_signalservice_Content_descriptor = + internal_static_signalservice_UnsendRequest_descriptor = getDescriptor().getMessageTypes().get(2); + internal_static_signalservice_UnsendRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_signalservice_UnsendRequest_descriptor, + new java.lang.String[] { "Timestamp", "Author", }); + internal_static_signalservice_Content_descriptor = + getDescriptor().getMessageTypes().get(3); internal_static_signalservice_Content_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_Content_descriptor, - new java.lang.String[] { "DataMessage", "ReceiptMessage", "TypingMessage", "ConfigurationMessage", "DataExtractionNotification", }); + new java.lang.String[] { "DataMessage", "ReceiptMessage", "TypingMessage", "ConfigurationMessage", "DataExtractionNotification", "UnsendRequest", }); internal_static_signalservice_KeyPair_descriptor = - getDescriptor().getMessageTypes().get(3); + getDescriptor().getMessageTypes().get(4); internal_static_signalservice_KeyPair_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_KeyPair_descriptor, new java.lang.String[] { "PublicKey", "PrivateKey", }); internal_static_signalservice_DataExtractionNotification_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(5); internal_static_signalservice_DataExtractionNotification_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_DataExtractionNotification_descriptor, new java.lang.String[] { "Type", "Timestamp", }); internal_static_signalservice_DataMessage_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(6); internal_static_signalservice_DataMessage_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_DataMessage_descriptor, @@ -21524,7 +22389,7 @@ public final class SignalServiceProtos { internal_static_signalservice_DataMessage_ClosedGroupControlMessage_KeyPairWrapper_descriptor, new java.lang.String[] { "PublicKey", "EncryptedKeyPair", }); internal_static_signalservice_ConfigurationMessage_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(7); internal_static_signalservice_ConfigurationMessage_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_ConfigurationMessage_descriptor, @@ -21542,19 +22407,19 @@ public final class SignalServiceProtos { internal_static_signalservice_ConfigurationMessage_Contact_descriptor, new java.lang.String[] { "PublicKey", "Name", "ProfilePicture", "ProfileKey", }); internal_static_signalservice_ReceiptMessage_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_signalservice_ReceiptMessage_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_ReceiptMessage_descriptor, new java.lang.String[] { "Type", "Timestamp", }); internal_static_signalservice_AttachmentPointer_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_signalservice_AttachmentPointer_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_AttachmentPointer_descriptor, new java.lang.String[] { "Id", "ContentType", "Key", "Size", "Thumbnail", "Digest", "FileName", "Flags", "Width", "Height", "Caption", "Url", }); internal_static_signalservice_GroupContext_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_signalservice_GroupContext_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_signalservice_GroupContext_descriptor,