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,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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue