Reduce db operations when updating thread snippet.
This commit is contained in:
parent
7c37f929a5
commit
fe8b2cb761
3 changed files with 24 additions and 17 deletions
|
@ -1084,7 +1084,10 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
|||
values.putNull(ORIGINAL_MESSAGE_ID)
|
||||
}
|
||||
|
||||
val messageId = writableDatabase.insert(TABLE_NAME, null, values)
|
||||
writableDatabase.beginTransaction()
|
||||
val messageId: Long
|
||||
try {
|
||||
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()
|
||||
|
@ -1094,15 +1097,19 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
|||
threads.incrementUnread(threadId, 1, 0)
|
||||
}
|
||||
|
||||
if (message.subscriptionId != -1) {
|
||||
recipients.setDefaultSubscriptionId(recipient.id, message.subscriptionId)
|
||||
}
|
||||
writableDatabase.setTransactionSuccessful()
|
||||
} finally {
|
||||
writableDatabase.endTransaction()
|
||||
}
|
||||
|
||||
if (!silent) {
|
||||
ThreadUpdateJob.enqueue(threadId)
|
||||
TrimThreadJob.enqueueAsync(threadId)
|
||||
}
|
||||
|
||||
if (message.subscriptionId != -1) {
|
||||
recipients.setDefaultSubscriptionId(recipient.id, message.subscriptionId)
|
||||
}
|
||||
|
||||
if (notifyObservers) {
|
||||
notifyConversationListeners(threadId)
|
||||
}
|
||||
|
|
|
@ -1386,8 +1386,8 @@ class ThreadTable(context: Context, databaseHelper: SignalDatabase) : DatabaseTa
|
|||
|
||||
val meaningfulMessages = messages.hasMeaningfulMessage(threadId)
|
||||
|
||||
val isPinned = getPinnedThreadIds().contains(threadId)
|
||||
val shouldDelete = allowDeletion && !isPinned && !messages.containsStories(threadId)
|
||||
val isPinned by lazy { getPinnedThreadIds().contains(threadId) }
|
||||
val shouldDelete by lazy { allowDeletion && !isPinned && !messages.containsStories(threadId) }
|
||||
|
||||
if (!meaningfulMessages) {
|
||||
if (shouldDelete) {
|
||||
|
|
|
@ -888,10 +888,10 @@ public class Recipient {
|
|||
}
|
||||
|
||||
public boolean isUnknownGroup() {
|
||||
boolean noMetadata = (groupAvatarId.isEmpty() || groupAvatarId.get() == - 1) && (groupName == null || groupName.isEmpty());
|
||||
boolean noMembers = participantIds.isEmpty() || (participantIds.size() == 1 && participantIds.contains(Recipient.self().id));
|
||||
|
||||
return noMetadata && noMembers;
|
||||
if ((groupAvatarId.isPresent() && groupAvatarId.get() != - 1) || (groupName != null && !groupName.isEmpty())) {
|
||||
return false;
|
||||
}
|
||||
return participantIds.isEmpty() || (participantIds.size() == 1 && participantIds.contains(Recipient.self().id));
|
||||
}
|
||||
|
||||
public boolean isInactiveGroup() {
|
||||
|
|
Loading…
Add table
Reference in a new issue