Fix issue with thread summaries being updated after message deletion.
Fixes #9902
This commit is contained in:
parent
566285ec0e
commit
1ec3a72f79
4 changed files with 9 additions and 7 deletions
|
@ -464,6 +464,8 @@ public final class ConversationListItem extends RelativeLayout
|
|||
return emphasisAdded(context.getString(R.string.ThreadRecord_you_marked_unverified));
|
||||
} else if (SmsDatabase.Types.isUnsupportedMessageType(thread.getType())) {
|
||||
return emphasisAdded(context.getString(R.string.ThreadRecord_message_could_not_be_processed));
|
||||
} else if (SmsDatabase.Types.isProfileChange(thread.getType())) {
|
||||
return emphasisAdded("");
|
||||
} else {
|
||||
ThreadDatabase.Extra extra = thread.getExtra();
|
||||
if (extra != null && extra.isViewOnce()) {
|
||||
|
|
|
@ -2282,7 +2282,7 @@ public class RecipientDatabase extends Database {
|
|||
Log.w(TAG, "Had no sessions. No action necessary.");
|
||||
}
|
||||
|
||||
DatabaseFactory.getThreadDatabase(context).update(threadMerge.threadId, false, false);
|
||||
DatabaseFactory.getThreadDatabase(context).update(threadMerge.threadId, false, false, false);
|
||||
|
||||
return byUuid;
|
||||
}
|
||||
|
|
|
@ -890,7 +890,7 @@ public class SmsDatabase extends MessagingDatabase {
|
|||
SQLiteDatabase db = databaseHelper.getWritableDatabase();
|
||||
long threadId = getThreadIdForMessage(messageId);
|
||||
db.delete(TABLE_NAME, ID_WHERE, new String[] {messageId+""});
|
||||
boolean threadDeleted = DatabaseFactory.getThreadDatabase(context).update(threadId, false);
|
||||
boolean threadDeleted = DatabaseFactory.getThreadDatabase(context).update(threadId, false, true, true);
|
||||
notifyConversationListeners(threadId);
|
||||
return threadDeleted;
|
||||
}
|
||||
|
|
|
@ -165,7 +165,7 @@ public class ThreadDatabase extends Database {
|
|||
private void updateThread(long threadId, long count, String body, @Nullable Uri attachment,
|
||||
@Nullable String contentType, @Nullable Extra extra,
|
||||
long date, int status, int deliveryReceiptCount, long type, boolean unarchive,
|
||||
long expiresIn, int readReceiptCount)
|
||||
long expiresIn, int readReceiptCount, boolean causedByDeletion)
|
||||
{
|
||||
String extraSerialized = null;
|
||||
|
||||
|
@ -178,7 +178,7 @@ public class ThreadDatabase extends Database {
|
|||
}
|
||||
|
||||
ContentValues contentValues = new ContentValues();
|
||||
if (!MmsSmsColumns.Types.isProfileChange(type)) {
|
||||
if (!MmsSmsColumns.Types.isProfileChange(type) || causedByDeletion) {
|
||||
contentValues.put(DATE, date - date % 1000);
|
||||
contentValues.put(SNIPPET, body);
|
||||
contentValues.put(SNIPPET_URI, attachment == null ? null : attachment.toString());
|
||||
|
@ -814,10 +814,10 @@ public class ThreadDatabase extends Database {
|
|||
}
|
||||
|
||||
public boolean update(long threadId, boolean unarchive) {
|
||||
return update(threadId, unarchive, true);
|
||||
return update(threadId, unarchive, true, false);
|
||||
}
|
||||
|
||||
public boolean update(long threadId, boolean unarchive, boolean allowDeletion) {
|
||||
public boolean update(long threadId, boolean unarchive, boolean allowDeletion, boolean causedByDeletion) {
|
||||
MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context);
|
||||
long count = mmsSmsDatabase.getConversationCount(threadId);
|
||||
|
||||
|
@ -839,7 +839,7 @@ public class ThreadDatabase extends Database {
|
|||
updateThread(threadId, count, ThreadBodyUtil.getFormattedBodyFor(context, record), getAttachmentUriFor(record),
|
||||
getContentTypeFor(record), getExtrasFor(record),
|
||||
record.getTimestamp(), record.getDeliveryStatus(), record.getDeliveryReceiptCount(),
|
||||
record.getType(), unarchive, record.getExpiresIn(), record.getReadReceiptCount());
|
||||
record.getType(), unarchive, record.getExpiresIn(), record.getReadReceiptCount(), causedByDeletion);
|
||||
notifyConversationListListeners();
|
||||
return false;
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue