Stop conversations without meaningful messages from showing in list.

master
Cody Henthorne 2020-08-13 10:01:54 -04:00 committed by Greyson Parrelli
parent 724f3e872b
commit cdc2e74f68
3 changed files with 29 additions and 1 deletions

View File

@ -254,6 +254,13 @@ public class MmsSmsDatabase extends Database {
DatabaseFactory.getMmsDatabase(context).getMessageCountForThread(threadId, beforeTime);
}
public int getConversationCountForThreadSummary(long threadId) {
int count = DatabaseFactory.getSmsDatabase(context).getMessageCountForThreadSummary(threadId);
count += DatabaseFactory.getMmsDatabase(context).getMessageCountForThread(threadId);
return count;
}
public int getInsecureSentCount(long threadId) {
int count = DatabaseFactory.getSmsDatabase(context).getInsecureMessagesSentForThread(threadId);
count += DatabaseFactory.getMmsDatabase(context).getInsecureMessagesSentForThread(threadId);

View File

@ -48,6 +48,7 @@ import org.thoughtcrime.securesms.sms.IncomingTextMessage;
import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
import org.thoughtcrime.securesms.util.Base64;
import org.thoughtcrime.securesms.util.JsonUtils;
import org.thoughtcrime.securesms.util.SqlUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.libsignal.util.guava.Optional;
@ -226,6 +227,26 @@ public class SmsDatabase extends MessagingDatabase {
}
}
public int getMessageCountForThreadSummary(long threadId) {
SQLiteDatabase db = databaseHelper.getReadableDatabase();
String[] cols = { "COUNT(*)" };
String query = THREAD_ID + " = ? AND (NOT " + TYPE + " & ? AND TYPE != ?)";
long type = Types.END_SESSION_BIT | Types.KEY_EXCHANGE_IDENTITY_UPDATE_BIT | Types.KEY_EXCHANGE_IDENTITY_VERIFIED_BIT;
String[] args = SqlUtil.buildArgs(threadId, type, Types.PROFILE_CHANGE_TYPE);
try (Cursor cursor = db.query(TABLE_NAME, cols, query, args, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) {
int count = cursor.getInt(0);
if (count > 0) {
return getMessageCountForThread(threadId);
}
}
}
return 0;
}
public int getMessageCountForThread(long threadId) {
SQLiteDatabase db = databaseHelper.getReadableDatabase();

View File

@ -887,7 +887,7 @@ public class ThreadDatabase extends Database {
public boolean update(long threadId, boolean unarchive, boolean allowDeletion) {
MmsSmsDatabase mmsSmsDatabase = DatabaseFactory.getMmsSmsDatabase(context);
long count = mmsSmsDatabase.getConversationCount(threadId);
long count = mmsSmsDatabase.getConversationCountForThreadSummary(threadId);
if (count == 0) {
if (allowDeletion) {