mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-03-01 06:07:37 +00:00
Inline the expireVersion capability.
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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())
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user