Reduce db operations when updating thread snippet.

This commit is contained in:
Clark 2023-05-12 12:10:14 -04:00 committed by Greyson Parrelli
parent 7c37f929a5
commit fe8b2cb761
3 changed files with 24 additions and 17 deletions

View file

@ -1084,14 +1084,25 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
values.putNull(ORIGINAL_MESSAGE_ID) values.putNull(ORIGINAL_MESSAGE_ID)
} }
val messageId = writableDatabase.insert(TABLE_NAME, null, values) writableDatabase.beginTransaction()
if (messageId < 0) { val messageId: Long
Log.w(TAG, "Failed to insert text message (${message.sentTimestampMillis}, ${message.authorId}, ThreadId::$threadId)! Likely a duplicate.") try {
return Optional.empty() messageId = writableDatabase.insert(TABLE_NAME, null, values)
} if (messageId < 0) {
Log.w(TAG, "Failed to insert text message (${message.sentTimestampMillis}, ${message.authorId}, ThreadId::$threadId)! Likely a duplicate.")
return Optional.empty()
}
if (unread && editedMessage == null) { if (unread && editedMessage == null) {
threads.incrementUnread(threadId, 1, 0) threads.incrementUnread(threadId, 1, 0)
}
if (message.subscriptionId != -1) {
recipients.setDefaultSubscriptionId(recipient.id, message.subscriptionId)
}
writableDatabase.setTransactionSuccessful()
} finally {
writableDatabase.endTransaction()
} }
if (!silent) { if (!silent) {
@ -1099,10 +1110,6 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
TrimThreadJob.enqueueAsync(threadId) TrimThreadJob.enqueueAsync(threadId)
} }
if (message.subscriptionId != -1) {
recipients.setDefaultSubscriptionId(recipient.id, message.subscriptionId)
}
if (notifyObservers) { if (notifyObservers) {
notifyConversationListeners(threadId) notifyConversationListeners(threadId)
} }

View file

@ -1386,8 +1386,8 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
val meaningfulMessages = messages.hasMeaningfulMessage(threadId) val meaningfulMessages = messages.hasMeaningfulMessage(threadId)
val isPinned = getPinnedThreadIds().contains(threadId) val isPinned by lazy { getPinnedThreadIds().contains(threadId) }
val shouldDelete = allowDeletion && !isPinned && !messages.containsStories(threadId) val shouldDelete by lazy { allowDeletion && !isPinned && !messages.containsStories(threadId) }
if (!meaningfulMessages) { if (!meaningfulMessages) {
if (shouldDelete) { if (shouldDelete) {

View file

@ -888,10 +888,10 @@ public class Recipient {
} }
public boolean isUnknownGroup() { public boolean isUnknownGroup() {
boolean noMetadata = (groupAvatarId.isEmpty() || groupAvatarId.get() == - 1) && (groupName == null || groupName.isEmpty()); if ((groupAvatarId.isPresent() && groupAvatarId.get() != - 1) || (groupName != null && !groupName.isEmpty())) {
boolean noMembers = participantIds.isEmpty() || (participantIds.size() == 1 && participantIds.contains(Recipient.self().id)); return false;
}
return noMetadata && noMembers; return participantIds.isEmpty() || (participantIds.size() == 1 && participantIds.contains(Recipient.self().id));
} }
public boolean isInactiveGroup() { public boolean isInactiveGroup() {