mirror of
https://github.com/oxen-io/session-android.git
synced 2025-03-27 07:32:14 +00:00
Allow legacy expiration updates when flag is off
This commit is contained in:
parent
7bd43b1b3c
commit
a5a226b468
@ -57,7 +57,7 @@ abstract class Message {
|
||||
}
|
||||
|
||||
fun SignalServiceProtos.Content.Builder.setExpirationConfigurationIfNeeded(threadId: Long?): SignalServiceProtos.Content.Builder {
|
||||
val config = threadId?.let { MessagingModuleConfiguration.shared.storage.getExpirationConfiguration(it) }
|
||||
val config = threadId?.let(MessagingModuleConfiguration.shared.storage::getExpirationConfiguration)
|
||||
?: run {
|
||||
expirationTimer = 0
|
||||
return this
|
||||
@ -66,11 +66,11 @@ abstract class Message {
|
||||
lastDisappearingMessageChangeTimestamp = config.updatedTimestampMs
|
||||
config.expiryMode.let { expiryMode ->
|
||||
expirationType = when (expiryMode) {
|
||||
is ExpiryMode.Legacy, is ExpiryMode.AfterSend -> ExpirationType.DELETE_AFTER_SEND
|
||||
is ExpiryMode.AfterSend -> ExpirationType.DELETE_AFTER_SEND
|
||||
is ExpiryMode.AfterRead -> ExpirationType.DELETE_AFTER_READ
|
||||
ExpiryMode.NONE -> ExpirationType.UNKNOWN
|
||||
else -> ExpirationType.UNKNOWN
|
||||
}
|
||||
}
|
||||
return this
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ data class ExpirationTimerUpdate(var expiryMode: ExpiryMode, var syncTarget: Str
|
||||
val expiryMode = when (type) {
|
||||
SignalServiceProtos.Content.ExpirationType.DELETE_AFTER_SEND -> ExpiryMode.AfterSend(duration.toLong())
|
||||
SignalServiceProtos.Content.ExpirationType.DELETE_AFTER_READ -> ExpiryMode.AfterRead(duration.toLong())
|
||||
else -> ExpiryMode.NONE
|
||||
else -> duration.takeIf { it > 0 }?.toLong()?.let(ExpiryMode::AfterSend) ?: ExpiryMode.NONE
|
||||
}
|
||||
|
||||
return ExpirationTimerUpdate(expiryMode, syncTarget)
|
||||
|
@ -8,6 +8,7 @@ import org.session.libsession.messaging.MessagingModuleConfiguration
|
||||
import org.session.libsession.messaging.jobs.BackgroundGroupAddJob
|
||||
import org.session.libsession.messaging.jobs.JobQueue
|
||||
import org.session.libsession.messaging.messages.ExpirationConfiguration
|
||||
import org.session.libsession.messaging.messages.ExpirationConfiguration.Companion.isNewConfigEnabled
|
||||
import org.session.libsession.messaging.messages.Message
|
||||
import org.session.libsession.messaging.messages.control.CallMessage
|
||||
import org.session.libsession.messaging.messages.control.ClosedGroupControlMessage
|
||||
@ -286,7 +287,7 @@ fun MessageReceiver.updateExpiryIfNeeded(
|
||||
storage.updateDisappearingState(message.sender!!, threadID, disappearingState)
|
||||
}
|
||||
|
||||
if (!proto.hasLastDisappearingMessageChangeTimestamp()) return
|
||||
if (!proto.hasLastDisappearingMessageChangeTimestamp() && !isNewConfigEnabled) return
|
||||
|
||||
val localConfig = storage.getExpirationConfiguration(threadID)
|
||||
|
||||
@ -295,16 +296,21 @@ fun MessageReceiver.updateExpiryIfNeeded(
|
||||
|
||||
val expiryMode = type?.expiryMode(durationSeconds.toLong()) ?: ExpiryMode.NONE
|
||||
|
||||
val lastDisappearingMessageChangeTimestamp = proto.lastDisappearingMessageChangeTimestamp
|
||||
|
||||
val remoteConfig = ExpirationConfiguration(
|
||||
threadID,
|
||||
expiryMode,
|
||||
proto.lastDisappearingMessageChangeTimestamp
|
||||
lastDisappearingMessageChangeTimestamp
|
||||
)
|
||||
|
||||
// don't update any values for open groups
|
||||
if (recipient.isOpenGroupRecipient && type != null) throw MessageReceiver.Error.InvalidMessage
|
||||
|
||||
remoteConfig.takeIf { localConfig == null || it.updatedTimestampMs > localConfig.updatedTimestampMs }
|
||||
remoteConfig.takeIf {
|
||||
localConfig == null
|
||||
|| it.updatedTimestampMs > localConfig.updatedTimestampMs
|
||||
|| !isNewConfigEnabled && !proto.hasLastDisappearingMessageChangeTimestamp() }
|
||||
?.let(storage::setExpirationConfiguration)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user