Move expiration configuration to a separate table

This commit is contained in:
charles
2022-12-05 13:00:53 +11:00
parent 92123b2417
commit 8c002247d6
12 changed files with 116 additions and 103 deletions

View File

@@ -200,6 +200,6 @@ interface StorageProtocol {
fun unblock(toUnblock: List<Recipient>)
fun blockedContacts(): List<Recipient>
fun getExpirationConfiguration(threadId: Long): ExpirationConfiguration?
fun updateExpirationConfiguration(config: ExpirationConfiguration)
fun addExpirationConfiguration(config: ExpirationConfiguration)
fun getExpiringMessages(messageIds: LongArray): List<Pair<String, Int>>
}

View File

@@ -6,7 +6,7 @@ class ExpirationConfiguration(
val threadId: Long = -1,
val durationSeconds: Int = 0,
val expirationType: ExpirationType? = null,
val lastChangeTimestampMs: Long = 0
val updatedTimestampMs: Long = 0
) {
val isEnabled = durationSeconds > 0
}

View File

@@ -45,7 +45,7 @@ abstract class Message {
builder.expirationTimer = config.durationSeconds
if (config.isEnabled) {
builder.expirationType = config.expirationType
builder.lastDisappearingMessageChangeTimestamp = config.lastChangeTimestampMs
builder.lastDisappearingMessageChangeTimestamp = config.updatedTimestampMs
}
}
}

View File

@@ -88,7 +88,7 @@ fun updateExpirationConfigurationIfNeeded(message: Message, proto: SignalService
val threadID = storage.getOrCreateThreadIdFor(message.sender!!, message.groupPublicKey, openGroupID)
if (threadID <= 0) return
val localConfig = storage.getExpirationConfiguration(threadID)
if (localConfig == null || localConfig.lastChangeTimestampMs < proto.lastDisappearingMessageChangeTimestamp) return
if (localConfig == null || localConfig.updatedTimestampMs < proto.lastDisappearingMessageChangeTimestamp) return
val durationSeconds = if (proto.hasExpirationTimer()) proto.expirationTimer else 0
val type = if (proto.hasExpirationType()) proto.expirationType else null
val remoteConfig = ExpirationConfiguration(
@@ -97,7 +97,7 @@ fun updateExpirationConfigurationIfNeeded(message: Message, proto: SignalService
type,
proto.lastDisappearingMessageChangeTimestamp
)
storage.updateExpirationConfiguration(remoteConfig)
storage.addExpirationConfiguration(remoteConfig)
}
// region Control Messages