Inline message processing when we can.

This commit is contained in:
Clark
2023-05-22 12:19:51 -04:00
committed by Nicholas Tinsley
parent c26f54161d
commit 836cd04564
4 changed files with 67 additions and 50 deletions

View File

@@ -1032,15 +1032,6 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
type = type or MessageTypes.KEY_EXCHANGE_IDENTITY_DEFAULT_BIT
}
val recipient = Recipient.resolved(message.authorId)
val groupRecipient: Recipient? = if (message.groupId == null) {
null
} else {
val id = recipients.getOrInsertFromPossiblyMigratedGroupId(message.groupId!!)
Recipient.resolved(id)
}
val silent = message.isIdentityUpdate ||
message.isIdentityVerified ||
message.isIdentityDefault ||
@@ -1053,7 +1044,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
Util.isDefaultSmsProvider(context)
)
val threadId: Long = if (groupRecipient == null) threads.getOrCreateThreadIdFor(recipient) else threads.getOrCreateThreadIdFor(groupRecipient)
val threadId: Long = if (message.groupId == null) threads.getOrCreateThreadIdFor(message.authorId, false) else threads.getOrCreateThreadIdFor(RecipientId.from(message.groupId!!), true)
if (tryToCollapseJoinRequestEvents) {
val result = collapseJoinRequestEventsIfPossible(threadId, message as IncomingGroupUpdateMessage)
@@ -1098,7 +1089,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
}
if (message.subscriptionId != -1) {
recipients.setDefaultSubscriptionId(recipient.id, message.subscriptionId)
recipients.setDefaultSubscriptionId(message.authorId, message.subscriptionId)
}
writableDatabase.setTransactionSuccessful()
} finally {

View File

@@ -1152,6 +1152,11 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
return threadId ?: createThreadForRecipient(recipient.id, recipient.isGroup, distributionType)
}
fun getOrCreateThreadIdFor(recipientId: RecipientId, isGroup: Boolean, distributionType: Int = DistributionTypes.DEFAULT): Long {
val threadId = getThreadIdFor(recipientId)
return threadId ?: createThreadForRecipient(recipientId, isGroup, distributionType)
}
fun areThreadIdAndRecipientAssociated(threadId: Long, recipient: Recipient): Boolean {
return readableDatabase
.exists(TABLE_NAME)