Inline the expireVersion capability.

This commit is contained in:
Greyson Parrelli
2024-12-03 11:55:13 -05:00
parent e6c5080a07
commit f44d157f9a
13 changed files with 9 additions and 32 deletions

View File

@@ -14,7 +14,6 @@ import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.sms.MessageSender
import org.thoughtcrime.securesms.storage.StorageSyncHelper
import org.thoughtcrime.securesms.util.ExpirationTimerUtil
import java.io.IOException
private val TAG: String = Log.tag(ExpireTimerSettingsRepository::class.java)
@@ -39,7 +38,7 @@ class ExpireTimerSettingsRepository(val context: Context) {
consumer.invoke(Result.failure(e))
}
} else {
val expireTimerVersion = ExpirationTimerUtil.setExpirationTimer(recipientId, newExpirationTime)
val expireTimerVersion = SignalDatabase.recipients.setExpireMessagesAndIncrementVersion(recipientId, newExpirationTime)
val outgoingMessage = OutgoingMessage.expirationUpdateMessage(Recipient.resolved(recipientId), System.currentTimeMillis(), newExpirationTime * 1000L, expireTimerVersion)
MessageSender.send(context, outgoingMessage, getThreadId(recipientId), MessageSender.SendType.SIGNAL, null, null)
consumer.invoke(Result.success(newExpirationTime))

View File

@@ -343,7 +343,7 @@ class InternalConversationSettingsFragment : DSLSettingsFragment(
TextUtils.concat(
colorize("DeleteSync", capabilities.deleteSync),
", ",
colorize("VersionedExpirationTimer", capabilities.versionedExpirationTimer)
colorize("SSREv2", capabilities.storageServiceEncryptionV2)
)
} else {
"Recipient not found!"

View File

@@ -419,7 +419,6 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
fun maskCapabilitiesToLong(capabilities: SignalServiceProfile.Capabilities): Long {
var value: Long = 0
value = Bitmask.update(value, Capabilities.DELETE_SYNC, Capabilities.BIT_LENGTH, Recipient.Capability.fromBoolean(capabilities.isDeleteSync).serialize().toLong())
value = Bitmask.update(value, Capabilities.VERSIONED_EXPIRATION_TIMER, Capabilities.BIT_LENGTH, Recipient.Capability.fromBoolean(capabilities.isVersionedExpirationTimer).serialize().toLong())
value = Bitmask.update(value, Capabilities.STORAGE_SERVICE_ENCRYPTION_V2, Capabilities.BIT_LENGTH, Recipient.Capability.fromBoolean(capabilities.isStorageServiceEncryptionV2).serialize().toLong())
return value
}
@@ -4713,7 +4712,8 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
// const val PNP = 7
// const val PAYMENT_ACTIVATION = 8
const val DELETE_SYNC = 9
const val VERSIONED_EXPIRATION_TIMER = 10
// const val VERSIONED_EXPIRATION_TIMER = 10
const val STORAGE_SERVICE_ENCRYPTION_V2 = 11
// IMPORTANT: We cannot sore more than 32 capabilities in the bitmask.

View File

@@ -177,7 +177,6 @@ object RecipientTableCursorUtil {
return RecipientRecord.Capabilities(
rawBits = capabilities,
deleteSync = Recipient.Capability.deserialize(Bitmask.read(capabilities, Capabilities.DELETE_SYNC, Capabilities.BIT_LENGTH).toInt()),
versionedExpirationTimer = Recipient.Capability.deserialize(Bitmask.read(capabilities, Capabilities.VERSIONED_EXPIRATION_TIMER, Capabilities.BIT_LENGTH).toInt()),
storageServiceEncryptionV2 = Recipient.Capability.deserialize(Bitmask.read(capabilities, Capabilities.STORAGE_SERVICE_ENCRYPTION_V2, Capabilities.BIT_LENGTH).toInt())
)
}

View File

@@ -121,7 +121,6 @@ data class RecipientRecord(
data class Capabilities(
val rawBits: Long,
val deleteSync: Recipient.Capability,
val versionedExpirationTimer: Recipient.Capability,
val storageServiceEncryptionV2: Recipient.Capability
) {
companion object {
@@ -129,7 +128,6 @@ data class RecipientRecord(
val UNKNOWN = Capabilities(
rawBits = 0,
deleteSync = Recipient.Capability.UNKNOWN,
versionedExpirationTimer = Recipient.Capability.UNKNOWN,
storageServiceEncryptionV2 = Recipient.Capability.UNKNOWN
)
}

View File

@@ -225,11 +225,6 @@ public class RefreshOwnProfileJob extends BaseJob {
AppDependencies.getJobManager().add(new MultiDeviceProfileContentUpdateJob());
}
if (!selfSnapshot.getVersionedExpirationTimerCapability().isSupported() && capabilities.isVersionedExpirationTimer()) {
Log.d(TAG, "Transitioned to versioned expiration timer capable, notify linked devices in case we were the last one");
AppDependencies.getJobManager().add(new MultiDeviceProfileContentUpdateJob());
}
if (selfSnapshot.getStorageServiceEncryptionV2Capability() == Recipient.Capability.NOT_SUPPORTED && capabilities.isStorageServiceEncryptionV2()) {
Log.i(TAG, "Transitioned to storageServiceEncryptionV2 capable. Notifying other devices and pushing to storage service with a recordIkm.");
AppDependencies.getJobManager().add(new MultiDeviceProfileContentUpdateJob());

View File

@@ -43,7 +43,6 @@ public final class LogSectionCapabilities implements LogSection {
if (globalCapabilities != null) {
builder.append("DeleteSync: ").append(globalCapabilities.getDeleteSync()).append("\n");
builder.append("VersionedExpirationTimer: ").append(globalCapabilities.getVersionedExpirationTimer()).append("\n");
builder.append("StorageServiceEncryptionV2: ").append(globalCapabilities.getStorageServiceEncryptionV2()).append("\n");
builder.append("\n");
} else {

View File

@@ -318,9 +318,6 @@ class Recipient(
/** The user's capability to handle synchronizing deletes across linked devices. */
val deleteSyncCapability: Capability = capabilities.deleteSync
/** The user's capability to handle tracking an expire timer version. */
val versionedExpirationTimerCapability: Capability = capabilities.versionedExpirationTimer
/** The user's capability to handle the new storage record encryption scheme. */
val storageServiceEncryptionV2Capability: Capability
get() = if (SignalStore.internal.forceSsre2Capability) Capability.SUPPORTED else capabilities.storageServiceEncryptionV2

View File

@@ -336,7 +336,7 @@ public class RecipientUtil {
}
if (threadId == -1 || SignalDatabase.messages().canSetUniversalTimer(threadId)) {
int expireTimerVersion = ExpirationTimerUtil.setExpirationTimer(recipient.getId(), defaultTimer);
int expireTimerVersion = SignalDatabase.recipients().setExpireMessagesAndIncrementVersion(recipient.getId(), defaultTimer);
OutgoingMessage outgoingMessage = OutgoingMessage.expirationUpdateMessage(recipient, System.currentTimeMillis(), defaultTimer * 1000L, expireTimerVersion);
MessageSender.send(context, outgoingMessage, SignalDatabase.threads().getOrCreateThreadIdFor(recipient), MessageSender.SendType.SIGNAL, null, null);
return expireTimerVersion;

View File

@@ -6,7 +6,6 @@
package org.thoughtcrime.securesms.util
import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
/**
@@ -20,8 +19,8 @@ object ExpirationTimerUtil {
@JvmStatic
fun setExpirationTimer(recipientId: RecipientId, expirationTimeSeconds: Int): Int {
val selfCapable = Recipient.self().versionedExpirationTimerCapability == Recipient.Capability.SUPPORTED
val recipientCapable = Recipient.resolved(recipientId).let { it.versionedExpirationTimerCapability == Recipient.Capability.SUPPORTED || it.expireTimerVersion > 2 }
val selfCapable = true
val recipientCapable = true
return if (selfCapable && recipientCapable) {
SignalDatabase.recipients.setExpireMessagesAndIncrementVersion(recipientId, expirationTimeSeconds)