|
|
@ -52,6 +52,8 @@ class MarkReadReceiver : BroadcastReceiver() {
|
|
|
|
const val THREAD_IDS_EXTRA = "thread_ids"
|
|
|
|
const val THREAD_IDS_EXTRA = "thread_ids"
|
|
|
|
const val NOTIFICATION_ID_EXTRA = "notification_id"
|
|
|
|
const val NOTIFICATION_ID_EXTRA = "notification_id"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val messageExpirationManager = SSKEnvironment.shared.messageExpirationManager
|
|
|
|
|
|
|
|
|
|
|
|
@JvmStatic
|
|
|
|
@JvmStatic
|
|
|
|
fun process(
|
|
|
|
fun process(
|
|
|
|
context: Context,
|
|
|
|
context: Context,
|
|
|
@ -63,18 +65,14 @@ class MarkReadReceiver : BroadcastReceiver() {
|
|
|
|
|
|
|
|
|
|
|
|
sendReadReceipts(context, markedReadMessages)
|
|
|
|
sendReadReceipts(context, markedReadMessages)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val mmsSmsDatabase = DatabaseComponent.get(context).mmsSmsDatabase()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// start disappear after read messages except TimerUpdates in groups.
|
|
|
|
markedReadMessages
|
|
|
|
markedReadMessages
|
|
|
|
.filter { it.expiryType == ExpiryType.AFTER_READ }
|
|
|
|
.filter { it.expiryType == ExpiryType.AFTER_READ }
|
|
|
|
.forEach { info ->
|
|
|
|
.map { it.syncMessageId }
|
|
|
|
DatabaseComponent.get(context).mmsSmsDatabase().getMessageForTimestamp(info.syncMessageId.timetamp)
|
|
|
|
.filter { mmsSmsDatabase.getMessageForTimestamp(it.timetamp)?.run { isExpirationTimerUpdate && recipient.isClosedGroupRecipient } == false }
|
|
|
|
?.takeUnless { it.isExpirationTimerUpdate && it.recipient.isClosedGroupRecipient }
|
|
|
|
.forEach { messageExpirationManager.startDisappearAfterRead(it.timetamp, it.address.serialize()) }
|
|
|
|
?.run {
|
|
|
|
|
|
|
|
SSKEnvironment.shared.messageExpirationManager.startDisappearAfterRead(
|
|
|
|
|
|
|
|
info.syncMessageId.timetamp,
|
|
|
|
|
|
|
|
info.syncMessageId.address.serialize()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hashToDisappearAfterReadMessage(context, markedReadMessages)?.let {
|
|
|
|
hashToDisappearAfterReadMessage(context, markedReadMessages)?.let {
|
|
|
|
fetchUpdatedExpiriesAndScheduleDeletion(context, it)
|
|
|
|
fetchUpdatedExpiriesAndScheduleDeletion(context, it)
|
|
|
|