mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-11 17:57:47 +00:00
Disappearing messages job update
This commit is contained in:
@@ -24,6 +24,7 @@ interface MessageDataProvider {
|
||||
fun updateMessageAsDeleted(timestamp: Long, author: String)
|
||||
fun getServerHashForMessage(messageID: Long): String?
|
||||
fun getServerHashForMessages(messageIDs: List<Long>): List<Pair<Long, String?>>
|
||||
fun getMessageTimestampForServerHash(serverHash: String): Long?
|
||||
fun getDatabaseAttachment(attachmentId: Long): DatabaseAttachment?
|
||||
fun getAttachmentStream(attachmentId: Long): SessionServiceAttachmentStream?
|
||||
fun getAttachmentPointer(attachmentId: Long): SessionServiceAttachmentPointer?
|
||||
|
@@ -202,6 +202,6 @@ interface StorageProtocol {
|
||||
fun blockedContacts(): List<Recipient>
|
||||
fun getExpirationConfiguration(threadId: Long): ExpirationConfiguration?
|
||||
fun setExpirationConfiguration(config: ExpirationConfiguration)
|
||||
fun getExpiringMessages(messageIds: List<Long>): List<Pair<Long, Long>>
|
||||
fun getExpiringMessages(messageIds: List<Long> = emptyList()): List<Pair<Long, Long>>
|
||||
fun updateDisappearingState(address: String, disappearingState: Recipient.DisappearingState)
|
||||
}
|
||||
|
@@ -5,7 +5,7 @@ import org.session.libsession.messaging.messages.ExpirationConfiguration
|
||||
import org.session.libsession.messaging.utilities.Data
|
||||
|
||||
class DisappearingMessagesJob(
|
||||
val messageIds: List<Long> = listOf(),
|
||||
val messageIds: List<Long> = emptyList(),
|
||||
val startedAtMs: Long = 0,
|
||||
val threadId: Long = 0
|
||||
) : Job {
|
||||
|
@@ -10,7 +10,7 @@ import org.session.libsession.snode.SnodeAPI
|
||||
import org.session.libsession.utilities.Address
|
||||
|
||||
class SyncedExpiriesJob(
|
||||
val messageIds: List<Long> = listOf(),
|
||||
val messageIds: List<Long> = emptyList(),
|
||||
val startedAtMs: Long = 0,
|
||||
val threadId: Long = 0
|
||||
) : Job {
|
||||
|
@@ -121,14 +121,16 @@ private fun MessageReceiver.handleCallMessage(message: CallMessage) {
|
||||
}
|
||||
|
||||
private fun MessageReceiver.handleSyncedExpiriesMessage(message: SyncedExpiriesMessage) {
|
||||
val storage = MessagingModuleConfiguration.shared.storage
|
||||
val userPublicKey = storage.getUserPublicKey() ?: return
|
||||
val module = MessagingModuleConfiguration.shared
|
||||
val userPublicKey = module.storage.getUserPublicKey() ?: return
|
||||
if (userPublicKey != message.sender) return
|
||||
message.conversationExpiries.forEach { (syncTarget, syncedExpiries) ->
|
||||
val config = storage.getExpirationConfiguration(storage.getOrCreateThreadIdFor(syncTarget)) ?: return@forEach
|
||||
val config = module.storage.getExpirationConfiguration(module.storage.getOrCreateThreadIdFor(syncTarget)) ?: return@forEach
|
||||
syncedExpiries.forEach { syncedExpiry ->
|
||||
val startedAtMs = syncedExpiry.expirationTimestamp!! - config.durationSeconds * 1000
|
||||
SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(startedAtMs, syncTarget, System.currentTimeMillis())
|
||||
module.messageDataProvider.getMessageTimestampForServerHash(syncedExpiry.serverHash!!)?.let { timestamp ->
|
||||
val startedAtMs = syncedExpiry.expirationTimestamp!! - config.durationSeconds * 1000
|
||||
SSKEnvironment.shared.messageExpirationManager.startAnyExpiration(timestamp, syncTarget, startedAtMs)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -388,6 +390,7 @@ fun MessageReceiver.handleVisibleMessage(message: VisibleMessage,
|
||||
storage.persist(message, quoteModel, linkPreviews, message.groupPublicKey, openGroupID,
|
||||
attachments, runIncrement, runThreadUpdate
|
||||
) ?: return null
|
||||
JobQueue.shared.add(DisappearingMessagesJob())
|
||||
val openGroupServerID = message.openGroupServerMessageID
|
||||
if (openGroupServerID != null) {
|
||||
val isSms = !(message.isMediaMessage() || attachments.isNotEmpty())
|
||||
|
Reference in New Issue
Block a user