fix: compile errors

This commit is contained in:
0x330a 2023-07-06 14:48:05 +10:00
parent 325abe020a
commit 4c9a237d87
No known key found for this signature in database
GPG Key ID: 267811D6E6A2698C
14 changed files with 392 additions and 53 deletions

View File

@ -121,7 +121,7 @@ class ExpirationSettingsViewModel(
return@launch
}
val expiryChangeTimestampMs = System.currentTimeMillis() + SnodeAPI.clockOffset
val expiryChangeTimestampMs = SnodeAPI.nowWithOffset
storage.setExpirationConfiguration(ExpirationConfiguration(threadId, expirationTimer, expiryType, expiryChangeTimestampMs))
val message = ExpirationTimerUpdate(expirationTimer)

View File

@ -154,6 +154,8 @@ import org.thoughtcrime.securesms.util.ConfigurationMessageUtilities
import org.thoughtcrime.securesms.util.DateUtils
import org.thoughtcrime.securesms.util.MediaUtil
import org.thoughtcrime.securesms.util.SaveAttachmentTask
import org.thoughtcrime.securesms.util.drawToBitmap
import org.thoughtcrime.securesms.util.isScrolledToBottom
import org.thoughtcrime.securesms.util.push
import org.thoughtcrime.securesms.util.show
import org.thoughtcrime.securesms.util.toPx
@ -381,7 +383,6 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
}
updateUnreadCountIndicator()
updateSubtitle()
setUpBlockedBanner()
binding!!.searchBottomBar.setEventListener(this)
updateSendAfterApprovalText()
@ -699,7 +700,6 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
}
setUpMessageRequestsBar()
invalidateOptionsMenu()
updateSubtitle()
updateSendAfterApprovalText()
showOrHideInputIfNeeded()
@ -1451,7 +1451,8 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
processMessageRequestApproval()
// Create the message
val message = VisibleMessage()
message.sentTimestamp = SnodeAPI.nowWithOffset
val sentTimestampMs = SnodeAPI.nowWithOffset
message.sentTimestamp = sentTimestampMs
message.text = body
val quote = quotedMessage?.let {
val quotedAttachments = (it as? MmsMessageRecord)?.slideDeck?.asAttachments() ?: listOf()

View File

@ -86,9 +86,10 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
private static final int lokiV38 = 59;
private static final int lokiV39 = 60;
private static final int lokiV40 = 61;
private static final int lokiV41 = 62;
// Loki - onUpgrade(...) must be updated to use Loki version numbers if Signal makes any database changes
private static final int DATABASE_VERSION = lokiV40;
private static final int DATABASE_VERSION = lokiV41;
private static final int MIN_DATABASE_VERSION = lokiV7;
private static final String CIPHER3_DATABASE_NAME = "signal.db";
public static final String DATABASE_NAME = "signal_v4.db";

View File

@ -85,7 +85,7 @@ public class AndroidAutoReplyReceiver extends BroadcastReceiver {
VisibleMessage message = new VisibleMessage();
message.setText(responseText.toString());
message.setSentTimestamp(SnodeAPI.getNowWithOffset() + SnodeAPI.INSTANCE.getClockOffset());
message.setSentTimestamp(SnodeAPI.getNowWithOffset());
MessageSender.send(message, recipient.getAddress());
ExpirationConfiguration config = DatabaseComponent.get(context).expirationConfigurationDatabase().getExpirationConfiguration(threadId);
long expiresInMillis = config == null ? 0 : config.getDurationSeconds() * 1000L;

View File

@ -79,7 +79,7 @@ public class RemoteReplyReceiver extends BroadcastReceiver {
ThreadDatabase threadDatabase = DatabaseComponent.get(context).threadDatabase();
long threadId = threadDatabase.getOrCreateThreadIdFor(recipient);
VisibleMessage message = new VisibleMessage();
message.setSentTimestamp(System.currentTimeMillis() + SnodeAPI.INSTANCE.getClockOffset());
message.setSentTimestamp(SnodeAPI.getNowWithOffset());
message.setText(responseText.toString());
ExpirationConfiguration config = DatabaseComponent.get(context).expirationConfigurationDatabase().getExpirationConfiguration(threadId);
long expiresInMillis = config == null ? 0 : config.getDurationSeconds() * 1000L;

View File

@ -7,8 +7,6 @@ import org.session.libsession.messaging.messages.signal.IncomingTextMessage
import org.session.libsession.messaging.messages.signal.OutgoingTextMessage
import org.session.libsession.messaging.open_groups.OpenGroup
import org.session.libsession.messaging.open_groups.OpenGroupApi
import org.session.libsession.messaging.sending_receiving.notifications.PushNotificationAPI
import org.session.libsession.messaging.sending_receiving.pollers.ClosedGroupPollerV2
import org.session.libsession.utilities.Address
import org.session.libsession.utilities.GroupUtil
import org.session.libsession.utilities.recipients.Recipient
@ -21,7 +19,6 @@ import org.thoughtcrime.securesms.crypto.KeyPairUtilities
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
import org.thoughtcrime.securesms.groups.GroupManager
import java.security.SecureRandom
import java.util.*
import kotlin.random.asKotlinRandom
object MockDataGenerator {
@ -134,6 +131,7 @@ object MockDataGenerator {
.joinToString(),
Optional.absent(),
0,
0,
false,
-1,
false
@ -152,6 +150,7 @@ object MockDataGenerator {
.map { wordContent.random(dmThreadRandomGenerator.asKotlinRandom()) }
.joinToString(),
0,
0,
-1,
(timestampNow - (index * 5000))
),
@ -264,6 +263,7 @@ object MockDataGenerator {
.joinToString(),
Optional.absent(),
0,
0,
false,
-1,
false
@ -282,6 +282,7 @@ object MockDataGenerator {
.map { wordContent.random(cgThreadRandomGenerator.asKotlinRandom()) }
.joinToString(),
0,
0,
-1,
(timestampNow - (index * 5000))
),
@ -390,6 +391,7 @@ object MockDataGenerator {
.joinToString(),
Optional.absent(),
0,
0,
false,
-1,
false
@ -407,6 +409,7 @@ object MockDataGenerator {
.map { wordContent.random(ogThreadRandomGenerator.asKotlinRandom()) }
.joinToString(),
0,
0,
-1,
(timestampNow - (index * 5000))
),

View File

@ -34,7 +34,6 @@
android:contentDescription="@string/AccessibilityId_control_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/AccessibilityId_configuration_message"
android:gravity="center"
android:textColor="?android:textColorPrimary"
android:textSize="@dimen/very_small_font_size"

View File

@ -78,7 +78,6 @@
<!-- Conversation icons -->
<string name="AccessibilityId_call_button">Call button</string>
<string name="AccessibilityId_settings">Settings</string>
<string name="AccessibilityId_disappearing_messages_timer">Disappearing messages timer</string>
<string name="AccessibilityId_disappearing_messages_time_picker">Time selector</string>
<string name="AccessibilityId_accept_message_request_button">Accept message request</string>
<string name="AccessibilityId_decline_message_request_button">Decline message request</string>

View File

@ -39,16 +39,17 @@ abstract class Message {
dataMessage.group = groupProto.build()
}
fun SignalServiceProtos.Content.Builder.setExpirationConfigurationIfNeeded(threadId: Long?) {
fun SignalServiceProtos.Content.Builder.setExpirationConfigurationIfNeeded(threadId: Long?): SignalServiceProtos.Content.Builder {
val config = threadId?.let { MessagingModuleConfiguration.shared.storage.getExpirationConfiguration(it) }
?: run {
expirationTimer = 0
return
return this
}
if (config.isEnabled) {
expirationTimer = config.durationSeconds
lastDisappearingMessageChangeTimestamp = config.updatedTimestampMs
expirationType = config.expirationType
}
return this
}
}

View File

@ -18,9 +18,10 @@ class MessageRequestResponse(val isApproved: Boolean, var profile: Profile? = nu
.setProfile(profileProto.build())
profile?.profileKey?.let { messageRequestResponseProto.profileKey = ByteString.copyFrom(it) }
return try {
messageRequestResponseProto.messageRequestResponse = messageRequestResponseProto.build()
messageRequestResponseProto.setExpirationConfigurationIfNeeded(threadID)
messageRequestResponseProto.build()
SignalServiceProtos.Content.newBuilder()
.setExpirationConfigurationIfNeeded(threadID)
.setMessageRequestResponse(messageRequestResponseProto.build())
.build()
} catch (e: Exception) {
Log.w(TAG, "Couldn't construct message request response proto from: $this")
null

View File

@ -14,11 +14,6 @@ import org.session.libsession.messaging.messages.control.ConfigurationMessage
import org.session.libsession.messaging.messages.control.ExpirationTimerUpdate
import org.session.libsession.messaging.messages.control.MessageRequestResponse
import org.session.libsession.messaging.messages.control.UnsendRequest
import org.session.libsession.messaging.messages.control.CallMessage
import org.session.libsession.messaging.messages.control.ClosedGroupControlMessage
import org.session.libsession.messaging.messages.control.ConfigurationMessage
import org.session.libsession.messaging.messages.control.ExpirationTimerUpdate
import org.session.libsession.messaging.messages.control.UnsendRequest
import org.session.libsession.messaging.messages.visible.LinkPreview
import org.session.libsession.messaging.messages.visible.Quote
import org.session.libsession.messaging.messages.visible.VisibleMessage
@ -38,7 +33,12 @@ import org.session.libsession.utilities.SSKEnvironment
import org.session.libsignal.crypto.PushTransportDetails
import org.session.libsignal.protos.SignalServiceProtos
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType
import org.session.libsignal.utilities.*
import org.session.libsignal.utilities.Base64
import org.session.libsignal.utilities.IdPrefix
import org.session.libsignal.utilities.Namespace
import org.session.libsignal.utilities.defaultRequiresAuth
import org.session.libsignal.utilities.hasNamespaces
import org.session.libsignal.utilities.hexEncodedPublicKey
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicInteger
import org.session.libsession.messaging.sending_receiving.attachments.Attachment as SignalAttachment

View File

@ -32,12 +32,6 @@ import org.session.libsession.messaging.utilities.SodiumUtilities
import org.session.libsession.messaging.utilities.WebRtcUtils
import org.session.libsession.snode.SnodeAPI
import org.session.libsession.utilities.Address
import org.session.libsession.utilities.GroupRecord
import org.session.libsession.utilities.GroupUtil
import org.session.libsession.utilities.ProfileKeyUtil
import org.session.libsession.utilities.SSKEnvironment
import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsession.utilities.Address
import org.session.libsession.utilities.Address.Companion.fromSerialized
import org.session.libsession.utilities.GroupRecord
import org.session.libsession.utilities.GroupUtil
@ -282,7 +276,7 @@ fun MessageReceiver.updateExpiryIfNeeded(message: Message, proto: SignalServiceP
// handle a delete after send expired fetch
if (type == ExpirationType.DELETE_AFTER_SEND
&& sentTime + configToUse.durationSeconds <= SnodeAPI.nowWithClockOffset) {
&& sentTime + configToUse.durationSeconds <= SnodeAPI.nowWithOffset) {
throw MessageReceiver.Error.ExpiredMessage
}
// handle a delete after read last known config value (test) TODO: actually implement this with shared config library

View File

@ -9,8 +9,8 @@ import org.session.libsession.messaging.messages.ExpirationConfiguration
import org.session.libsession.messaging.sending_receiving.data_extraction.DataExtractionNotificationInfoMessage
import org.session.libsession.utilities.Address
import org.session.libsession.utilities.ExpirationUtil
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType
import org.session.libsession.utilities.truncateIdForDisplay
import org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType
object UpdateMessageBuilder {
@ -103,7 +103,8 @@ object UpdateMessageBuilder {
}
} else {
val time = ExpirationUtil.getExpirationDisplayValue(context, duration.toInt())
val config = storage.getExpirationConfiguration(storage.getOrCreateThreadIdFor(Address.fromSerialized(sender!!)))
val threadId = storage.getThreadId(Address.fromSerialized(senderId!!))
val config = threadId?.let { storage.getExpirationConfiguration(it) }
val state = when (config?.expirationType) {
ExpirationType.DELETE_AFTER_SEND -> context.getString(R.string.MessageRecord_state_sent)
ExpirationType.DELETE_AFTER_READ -> context.getString(R.string.MessageRecord_state_read)

View File

@ -2468,6 +2468,36 @@ public final class SignalServiceProtos {
* <code>optional .signalservice.MessageRequestResponse messageRequestResponse = 10;</code>
*/
org.session.libsignal.protos.SignalServiceProtos.MessageRequestResponseOrBuilder getMessageRequestResponseOrBuilder();
// optional .signalservice.Content.ExpirationType expirationType = 11;
/**
* <code>optional .signalservice.Content.ExpirationType expirationType = 11;</code>
*/
boolean hasExpirationType();
/**
* <code>optional .signalservice.Content.ExpirationType expirationType = 11;</code>
*/
org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType getExpirationType();
// optional uint32 expirationTimer = 12;
/**
* <code>optional uint32 expirationTimer = 12;</code>
*/
boolean hasExpirationTimer();
/**
* <code>optional uint32 expirationTimer = 12;</code>
*/
int getExpirationTimer();
// optional uint64 lastDisappearingMessageChangeTimestamp = 13;
/**
* <code>optional uint64 lastDisappearingMessageChangeTimestamp = 13;</code>
*/
boolean hasLastDisappearingMessageChangeTimestamp();
/**
* <code>optional uint64 lastDisappearingMessageChangeTimestamp = 13;</code>
*/
long getLastDisappearingMessageChangeTimestamp();
}
/**
* Protobuf type {@code signalservice.Content}
@ -2624,6 +2654,27 @@ public final class SignalServiceProtos {
bitField0_ |= 0x00000080;
break;
}
case 88: {
int rawValue = input.readEnum();
org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType value = org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType.valueOf(rawValue);
if (value == null) {
unknownFields.mergeVarintField(11, rawValue);
} else {
bitField0_ |= 0x00000100;
expirationType_ = value;
}
break;
}
case 96: {
bitField0_ |= 0x00000200;
expirationTimer_ = input.readUInt32();
break;
}
case 104: {
bitField0_ |= 0x00000400;
lastDisappearingMessageChangeTimestamp_ = input.readUInt64();
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
@ -2663,6 +2714,88 @@ public final class SignalServiceProtos {
return PARSER;
}
/**
* Protobuf enum {@code signalservice.Content.ExpirationType}
*/
public enum ExpirationType
implements com.google.protobuf.ProtocolMessageEnum {
/**
* <code>DELETE_AFTER_READ = 1;</code>
*/
DELETE_AFTER_READ(0, 1),
/**
* <code>DELETE_AFTER_SEND = 2;</code>
*/
DELETE_AFTER_SEND(1, 2),
;
/**
* <code>DELETE_AFTER_READ = 1;</code>
*/
public static final int DELETE_AFTER_READ_VALUE = 1;
/**
* <code>DELETE_AFTER_SEND = 2;</code>
*/
public static final int DELETE_AFTER_SEND_VALUE = 2;
public final int getNumber() { return value; }
public static ExpirationType valueOf(int value) {
switch (value) {
case 1: return DELETE_AFTER_READ;
case 2: return DELETE_AFTER_SEND;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap<ExpirationType>
internalGetValueMap() {
return internalValueMap;
}
private static com.google.protobuf.Internal.EnumLiteMap<ExpirationType>
internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap<ExpirationType>() {
public ExpirationType findValueByNumber(int number) {
return ExpirationType.valueOf(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
return getDescriptor().getValues().get(index);
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return org.session.libsignal.protos.SignalServiceProtos.Content.getDescriptor().getEnumTypes().get(0);
}
private static final ExpirationType[] VALUES = values();
public static ExpirationType valueOf(
com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
if (desc.getType() != getDescriptor()) {
throw new java.lang.IllegalArgumentException(
"EnumValueDescriptor is not for this type.");
}
return VALUES[desc.getIndex()];
}
private final int index;
private final int value;
private ExpirationType(int index, int value) {
this.index = index;
this.value = value;
}
// @@protoc_insertion_point(enum_scope:signalservice.Content.ExpirationType)
}
private int bitField0_;
// optional .signalservice.DataMessage dataMessage = 1;
public static final int DATAMESSAGE_FIELD_NUMBER = 1;
@ -2840,6 +2973,54 @@ public final class SignalServiceProtos {
return messageRequestResponse_;
}
// optional .signalservice.Content.ExpirationType expirationType = 11;
public static final int EXPIRATIONTYPE_FIELD_NUMBER = 11;
private org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType expirationType_;
/**
* <code>optional .signalservice.Content.ExpirationType expirationType = 11;</code>
*/
public boolean hasExpirationType() {
return ((bitField0_ & 0x00000100) == 0x00000100);
}
/**
* <code>optional .signalservice.Content.ExpirationType expirationType = 11;</code>
*/
public org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType getExpirationType() {
return expirationType_;
}
// optional uint32 expirationTimer = 12;
public static final int EXPIRATIONTIMER_FIELD_NUMBER = 12;
private int expirationTimer_;
/**
* <code>optional uint32 expirationTimer = 12;</code>
*/
public boolean hasExpirationTimer() {
return ((bitField0_ & 0x00000200) == 0x00000200);
}
/**
* <code>optional uint32 expirationTimer = 12;</code>
*/
public int getExpirationTimer() {
return expirationTimer_;
}
// optional uint64 lastDisappearingMessageChangeTimestamp = 13;
public static final int LASTDISAPPEARINGMESSAGECHANGETIMESTAMP_FIELD_NUMBER = 13;
private long lastDisappearingMessageChangeTimestamp_;
/**
* <code>optional uint64 lastDisappearingMessageChangeTimestamp = 13;</code>
*/
public boolean hasLastDisappearingMessageChangeTimestamp() {
return ((bitField0_ & 0x00000400) == 0x00000400);
}
/**
* <code>optional uint64 lastDisappearingMessageChangeTimestamp = 13;</code>
*/
public long getLastDisappearingMessageChangeTimestamp() {
return lastDisappearingMessageChangeTimestamp_;
}
private void initFields() {
dataMessage_ = org.session.libsignal.protos.SignalServiceProtos.DataMessage.getDefaultInstance();
callMessage_ = org.session.libsignal.protos.SignalServiceProtos.CallMessage.getDefaultInstance();
@ -2849,6 +3030,9 @@ public final class SignalServiceProtos {
dataExtractionNotification_ = org.session.libsignal.protos.SignalServiceProtos.DataExtractionNotification.getDefaultInstance();
unsendRequest_ = org.session.libsignal.protos.SignalServiceProtos.UnsendRequest.getDefaultInstance();
messageRequestResponse_ = org.session.libsignal.protos.SignalServiceProtos.MessageRequestResponse.getDefaultInstance();
expirationType_ = org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType.DELETE_AFTER_READ;
expirationTimer_ = 0;
lastDisappearingMessageChangeTimestamp_ = 0L;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@ -2934,6 +3118,15 @@ public final class SignalServiceProtos {
if (((bitField0_ & 0x00000080) == 0x00000080)) {
output.writeMessage(10, messageRequestResponse_);
}
if (((bitField0_ & 0x00000100) == 0x00000100)) {
output.writeEnum(11, expirationType_.getNumber());
}
if (((bitField0_ & 0x00000200) == 0x00000200)) {
output.writeUInt32(12, expirationTimer_);
}
if (((bitField0_ & 0x00000400) == 0x00000400)) {
output.writeUInt64(13, lastDisappearingMessageChangeTimestamp_);
}
getUnknownFields().writeTo(output);
}
@ -2975,6 +3168,18 @@ public final class SignalServiceProtos {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(10, messageRequestResponse_);
}
if (((bitField0_ & 0x00000100) == 0x00000100)) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(11, expirationType_.getNumber());
}
if (((bitField0_ & 0x00000200) == 0x00000200)) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(12, expirationTimer_);
}
if (((bitField0_ & 0x00000400) == 0x00000400)) {
size += com.google.protobuf.CodedOutputStream
.computeUInt64Size(13, lastDisappearingMessageChangeTimestamp_);
}
size += getUnknownFields().getSerializedSize();
memoizedSerializedSize = size;
return size;
@ -3147,6 +3352,12 @@ public final class SignalServiceProtos {
messageRequestResponseBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000080);
expirationType_ = org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType.DELETE_AFTER_READ;
bitField0_ = (bitField0_ & ~0x00000100);
expirationTimer_ = 0;
bitField0_ = (bitField0_ & ~0x00000200);
lastDisappearingMessageChangeTimestamp_ = 0L;
bitField0_ = (bitField0_ & ~0x00000400);
return this;
}
@ -3239,6 +3450,18 @@ public final class SignalServiceProtos {
} else {
result.messageRequestResponse_ = messageRequestResponseBuilder_.build();
}
if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
to_bitField0_ |= 0x00000100;
}
result.expirationType_ = expirationType_;
if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
to_bitField0_ |= 0x00000200;
}
result.expirationTimer_ = expirationTimer_;
if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
to_bitField0_ |= 0x00000400;
}
result.lastDisappearingMessageChangeTimestamp_ = lastDisappearingMessageChangeTimestamp_;
result.bitField0_ = to_bitField0_;
onBuilt();
return result;
@ -3279,6 +3502,15 @@ public final class SignalServiceProtos {
if (other.hasMessageRequestResponse()) {
mergeMessageRequestResponse(other.getMessageRequestResponse());
}
if (other.hasExpirationType()) {
setExpirationType(other.getExpirationType());
}
if (other.hasExpirationTimer()) {
setExpirationTimer(other.getExpirationTimer());
}
if (other.hasLastDisappearingMessageChangeTimestamp()) {
setLastDisappearingMessageChangeTimestamp(other.getLastDisappearingMessageChangeTimestamp());
}
this.mergeUnknownFields(other.getUnknownFields());
return this;
}
@ -4290,6 +4522,108 @@ public final class SignalServiceProtos {
return messageRequestResponseBuilder_;
}
// optional .signalservice.Content.ExpirationType expirationType = 11;
private org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType expirationType_ = org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType.DELETE_AFTER_READ;
/**
* <code>optional .signalservice.Content.ExpirationType expirationType = 11;</code>
*/
public boolean hasExpirationType() {
return ((bitField0_ & 0x00000100) == 0x00000100);
}
/**
* <code>optional .signalservice.Content.ExpirationType expirationType = 11;</code>
*/
public org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType getExpirationType() {
return expirationType_;
}
/**
* <code>optional .signalservice.Content.ExpirationType expirationType = 11;</code>
*/
public Builder setExpirationType(org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType value) {
if (value == null) {
throw new NullPointerException();
}
bitField0_ |= 0x00000100;
expirationType_ = value;
onChanged();
return this;
}
/**
* <code>optional .signalservice.Content.ExpirationType expirationType = 11;</code>
*/
public Builder clearExpirationType() {
bitField0_ = (bitField0_ & ~0x00000100);
expirationType_ = org.session.libsignal.protos.SignalServiceProtos.Content.ExpirationType.DELETE_AFTER_READ;
onChanged();
return this;
}
// optional uint32 expirationTimer = 12;
private int expirationTimer_ ;
/**
* <code>optional uint32 expirationTimer = 12;</code>
*/
public boolean hasExpirationTimer() {
return ((bitField0_ & 0x00000200) == 0x00000200);
}
/**
* <code>optional uint32 expirationTimer = 12;</code>
*/
public int getExpirationTimer() {
return expirationTimer_;
}
/**
* <code>optional uint32 expirationTimer = 12;</code>
*/
public Builder setExpirationTimer(int value) {
bitField0_ |= 0x00000200;
expirationTimer_ = value;
onChanged();
return this;
}
/**
* <code>optional uint32 expirationTimer = 12;</code>
*/
public Builder clearExpirationTimer() {
bitField0_ = (bitField0_ & ~0x00000200);
expirationTimer_ = 0;
onChanged();
return this;
}
// optional uint64 lastDisappearingMessageChangeTimestamp = 13;
private long lastDisappearingMessageChangeTimestamp_ ;
/**
* <code>optional uint64 lastDisappearingMessageChangeTimestamp = 13;</code>
*/
public boolean hasLastDisappearingMessageChangeTimestamp() {
return ((bitField0_ & 0x00000400) == 0x00000400);
}
/**
* <code>optional uint64 lastDisappearingMessageChangeTimestamp = 13;</code>
*/
public long getLastDisappearingMessageChangeTimestamp() {
return lastDisappearingMessageChangeTimestamp_;
}
/**
* <code>optional uint64 lastDisappearingMessageChangeTimestamp = 13;</code>
*/
public Builder setLastDisappearingMessageChangeTimestamp(long value) {
bitField0_ |= 0x00000400;
lastDisappearingMessageChangeTimestamp_ = value;
onChanged();
return this;
}
/**
* <code>optional uint64 lastDisappearingMessageChangeTimestamp = 13;</code>
*/
public Builder clearLastDisappearingMessageChangeTimestamp() {
bitField0_ = (bitField0_ & ~0x00000400);
lastDisappearingMessageChangeTimestamp_ = 0L;
onChanged();
return this;
}
// @@protoc_insertion_point(builder_scope:signalservice.Content)
}
@ -26115,7 +26449,7 @@ public final class SignalServiceProtos {
"\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\"2\n\rUnsendRequest\022\021\n\ttimesta",
"mp\030\001 \002(\004\022\016\n\006author\030\002 \002(\t\"\345\003\n\007Content\022/\n\013" +
"mp\030\001 \002(\004\022\016\n\006author\030\002 \002(\t\"\255\005\n\007Content\022/\n\013" +
"dataMessage\030\001 \001(\0132\032.signalservice.DataMe" +
"ssage\022/\n\013callMessage\030\003 \001(\0132\032.signalservi" +
"ce.CallMessage\0225\n\016receiptMessage\030\005 \001(\0132\035" +
@ -26127,94 +26461,99 @@ public final class SignalServiceProtos {
"e.DataExtractionNotification\0223\n\runsendRe",
"quest\030\t \001(\0132\034.signalservice.UnsendReques" +
"t\022E\n\026messageRequestResponse\030\n \001(\0132%.sign" +
"alservice.MessageRequestResponse\"0\n\007KeyP" +
"alservice.MessageRequestResponse\022=\n\016expi" +
"rationType\030\013 \001(\0162%.signalservice.Content" +
".ExpirationType\022\027\n\017expirationTimer\030\014 \001(\r" +
"\022.\n&lastDisappearingMessageChangeTimesta" +
"mp\030\r \001(\004\">\n\016ExpirationType\022\025\n\021DELETE_AFT" +
"ER_READ\020\001\022\025\n\021DELETE_AFTER_SEND\020\002\"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" +
"(\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\"\361\r\n\013" +
"DataMessage\022\014\n\004body\030\001 \001(\t\0225\n\013attachments" +
"\030\002 \003(\0132 .signalservice.AttachmentPointer",
"\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" +
"ge.Quote\0223\n\007preview\030\n \003(\0132\".signalservic",
"e.DataMessage.Preview\0225\n\010reaction\030\013 \001(\0132" +
"#.signalservice.DataMessage.Reaction\0227\n\007" +
"profile\030e \001(\0132&.signalservice.DataMessag" +
"e.LokiProfile\022K\n\023openGroupInvitation\030f \001" +
"(\0132..signalservice.DataMessage.OpenGroup",
"(\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" +
"\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",
"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" +
"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(",
"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" +
"\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\032\222\001\n\010Reactio" +
"n\022\n\n\002id\030\001 \002(\004\022\016\n\006author\030\002 \002(\t\022\r\n\005emoji\030\003" +
" \001(\t\022:\n\006action\030\004 \002(\0162*.signalservice.Dat",
" \001(\t\022:\n\006action\030\004 \002(\0162*.signalservice.Dat" +
"aMessage.Reaction.Action\"\037\n\006Action\022\t\n\005RE" +
"ACT\020\000\022\n\n\006REMOVE\020\001\"$\n\005Flags\022\033\n\027EXPIRATION" +
"_TIMER_UPDATE\020\002\"\352\001\n\013CallMessage\022-\n\004type\030" +
"\001 \002(\0162\037.signalservice.CallMessage.Type\022\014" +
"\n\004sdps\030\002 \003(\t\022\027\n\017sdpMLineIndexes\030\003 \003(\r\022\017\n" +
"\n\004sdps\030\002 \003(\t\022\027\n\017sdpMLineIndexes\030\003 \003(\r\022\017\n",
"\007sdpMids\030\004 \003(\t\022\014\n\004uuid\030\005 \002(\t\"f\n\004Type\022\r\n\t" +
"PRE_OFFER\020\006\022\t\n\005OFFER\020\001\022\n\n\006ANSWER\020\002\022\026\n\022PR" +
"OVISIONAL_ANSWER\020\003\022\022\n\016ICE_CANDIDATES\020\004\022\014" +
"\n\010END_CALL\020\005\"\245\004\n\024ConfigurationMessage\022E\n" +
"\014closedGroups\030\001 \003(\0132/.signalservice.Conf",
"\014closedGroups\030\001 \003(\0132/.signalservice.Conf" +
"igurationMessage.ClosedGroup\022\022\n\nopenGrou" +
"ps\030\002 \003(\t\022\023\n\013displayName\030\003 \001(\t\022\026\n\016profile" +
"Picture\030\004 \001(\t\022\022\n\nprofileKey\030\005 \001(\014\022=\n\010con" +
"tacts\030\006 \003(\0132+.signalservice.Configuratio" +
"nMessage.Contact\032\233\001\n\013ClosedGroup\022\021\n\tpubl" +
"nMessage.Contact\032\233\001\n\013ClosedGroup\022\021\n\tpubl",
"icKey\030\001 \001(\014\022\014\n\004name\030\002 \001(\t\0221\n\021encryptionK" +
"eyPair\030\003 \001(\0132\026.signalservice.KeyPair\022\017\n\007" +
"members\030\004 \003(\014\022\016\n\006admins\030\005 \003(\014\022\027\n\017expirat" +
"ionTimer\030\006 \001(\r\032\223\001\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 \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\022\022\n\nisApproved\030\005 " +
"\001(\010\022\021\n\tisBlocked\030\006 \001(\010\022\024\n\014didApproveMe\030\007" +
" \001(\010\"y\n\026MessageRequestResponse\022\022\n\nisAppr" +
"oved\030\001 \002(\010\022\022\n\nprofileKey\030\002 \001(\014\0227\n\007profil" +
"e\030\003 \001(\0132&.signalservice.DataMessage.Loki" +
"e\030\003 \001(\0132&.signalservice.DataMessage.Loki",
"Profile\"u\n\016ReceiptMessage\0220\n\004type\030\001 \002(\0162" +
"\".signalservice.ReceiptMessage.Type\022\021\n\tt" +
"imestamp\030\002 \003(\004\"\036\n\004Type\022\014\n\010DELIVERY\020\000\022\010\n\004" +
"READ\020\001\"\354\001\n\021AttachmentPointer\022\n\n\002id\030\001 \002(\006" +
"\022\023\n\013contentType\030\002 \001(\t\022\013\n\003key\030\003 \001(\014\022\014\n\004si",
"\022\023\n\013contentType\030\002 \001(\t\022\013\n\003key\030\003 \001(\014\022\014\n\004si" +
"ze\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\005flags\030\010 \001(\r\022\r\n\005" +
"width\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_MESS" +
"AGE\020\001\"\365\001\n\014GroupContext\022\n\n\002id\030\001 \001(\014\022.\n\004ty" +
"AGE\020\001\"\365\001\n\014GroupContext\022\n\n\002id\030\001 \001(\014\022.\n\004ty",
"pe\030\002 \001(\0162 .signalservice.GroupContext.Ty" +
"pe\022\014\n\004name\030\003 \001(\t\022\017\n\007members\030\004 \003(\t\0220\n\006ava" +
"tar\030\005 \001(\0132 .signalservice.AttachmentPoin" +
"ter\022\016\n\006admins\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\014R",
"\022\n\n\006UPDATE\020\001\022\013\n\007DELIVER\020\002\022\010\n\004QUIT\020\003\022\020\n\014R" +
"EQUEST_INFO\020\004B3\n\034org.session.libsignal.p" +
"rotosB\023SignalServiceProtos"
};
@ -26246,7 +26585,7 @@ public final class SignalServiceProtos {
internal_static_signalservice_Content_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_signalservice_Content_descriptor,
new java.lang.String[] { "DataMessage", "CallMessage", "ReceiptMessage", "TypingMessage", "ConfigurationMessage", "DataExtractionNotification", "UnsendRequest", "MessageRequestResponse", });
new java.lang.String[] { "DataMessage", "CallMessage", "ReceiptMessage", "TypingMessage", "ConfigurationMessage", "DataExtractionNotification", "UnsendRequest", "MessageRequestResponse", "ExpirationType", "ExpirationTimer", "LastDisappearingMessageChangeTimestamp", });
internal_static_signalservice_KeyPair_descriptor =
getDescriptor().getMessageTypes().get(4);
internal_static_signalservice_KeyPair_fieldAccessorTable = new