Fix bug with restoring skipped sending statuses.

This commit is contained in:
Greyson Parrelli
2024-10-03 11:32:11 -04:00
parent 21383e7ba5
commit ce7e33c424
2 changed files with 9 additions and 18 deletions

View File

@@ -854,10 +854,6 @@ private fun List<ReactionRecord>?.toRemote(): List<Reaction> {
}
private fun BackupMessageRecord.toRemoteSendStatus(groupReceipts: List<GroupReceiptTable.GroupReceiptInfo>?): List<SendStatus> {
if (!MessageTypes.isOutgoingMessageType(this.type)) {
return emptyList()
}
if (!groupReceipts.isNullOrEmpty()) {
return groupReceipts.toRemoteSendStatus(this, this.networkFailureRecipientIds, this.identityMismatchRecipientIds)
}
@@ -925,12 +921,12 @@ private fun List<GroupReceiptTable.GroupReceiptInfo>.toRemoteSendStatus(messageR
reason = SendStatus.Failed.FailureReason.IDENTITY_KEY_MISMATCH
)
}
networkFailureRecipientIds.contains(it.recipientId.toLong()) -> {
MessageTypes.isFailedMessageType(messageRecord.type) && networkFailureRecipientIds.contains(it.recipientId.toLong()) -> {
statusBuilder.failed = SendStatus.Failed(
reason = SendStatus.Failed.FailureReason.NETWORK
)
}
messageRecord.baseType == MessageTypes.BASE_SENT_FAILED_TYPE -> {
MessageTypes.isFailedMessageType(messageRecord.type) -> {
statusBuilder.failed = SendStatus.Failed(
reason = SendStatus.Failed.FailureReason.UNKNOWN
)

View File

@@ -578,21 +578,16 @@ class ChatItemArchiveImporter(
private fun ChatItem.getMessageType(): Long {
var type: Long = if (this.outgoing != null) {
if (this.outgoing.sendStatus.count { it.failed?.reason == SendStatus.Failed.FailureReason.IDENTITY_KEY_MISMATCH } > 0) {
if (this.outgoing.sendStatus.any { it.failed?.reason == SendStatus.Failed.FailureReason.IDENTITY_KEY_MISMATCH }) {
MessageTypes.BASE_SENT_FAILED_TYPE
} else if (this.outgoing.sendStatus.count { it.failed?.reason == SendStatus.Failed.FailureReason.UNKNOWN } > 0) {
} else if (this.outgoing.sendStatus.any { it.failed?.reason == SendStatus.Failed.FailureReason.UNKNOWN }) {
MessageTypes.BASE_SENT_FAILED_TYPE
} else if (this.outgoing.sendStatus.count { it.failed?.reason == SendStatus.Failed.FailureReason.NETWORK } > 0) {
} else if (this.outgoing.sendStatus.any { it.failed?.reason == SendStatus.Failed.FailureReason.NETWORK }) {
MessageTypes.BASE_SENT_FAILED_TYPE
} else if (this.outgoing.sendStatus.any { it.pending != null }) {
MessageTypes.BASE_SENDING_TYPE
} else if (this.outgoing.sendStatus.count { it.pending != null } > 0) {
MessageTypes.BASE_SENDING_TYPE
} else if (this.outgoing.sendStatus.count { it.skipped != null } > 0) {
val count = this.outgoing.sendStatus.count { it.skipped != null }
if (count == this.outgoing.sendStatus.size) {
MessageTypes.BASE_SENDING_SKIPPED_TYPE
} else {
MessageTypes.BASE_SENDING_TYPE
}
} else if (this.outgoing.sendStatus.all { it.skipped != null }) {
MessageTypes.BASE_SENDING_SKIPPED_TYPE
} else {
MessageTypes.BASE_SENT_TYPE
}