From 0944e2f758f55ac54a4337a9a55155fe3b6f43b5 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 23 Jan 2021 17:11:30 -0500 Subject: [PATCH] Apply contact list SMS filter to 'recents' section. --- .../securesms/contacts/ContactsCursorLoader.java | 2 +- .../securesms/database/RecipientDatabase.java | 2 +- .../thoughtcrime/securesms/database/ThreadDatabase.java | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java index 9f6fb45276..840c7cda49 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java @@ -279,7 +279,7 @@ public class ContactsCursorLoader extends CursorLoader { ThreadDatabase threadDatabase = DatabaseFactory.getThreadDatabase(getContext()); MatrixCursor recentConversations = new MatrixCursor(CONTACT_PROJECTION, RECENT_CONVERSATION_MAX); - try (Cursor rawConversations = threadDatabase.getRecentConversationList(RECENT_CONVERSATION_MAX, flagSet(mode, DisplayMode.FLAG_INACTIVE_GROUPS), groupsOnly, hideGroupsV1(mode))) { + try (Cursor rawConversations = threadDatabase.getRecentConversationList(RECENT_CONVERSATION_MAX, flagSet(mode, DisplayMode.FLAG_INACTIVE_GROUPS), groupsOnly, hideGroupsV1(mode), !smsEnabled(mode))) { ThreadDatabase.Reader reader = threadDatabase.readerFor(rawConversations); ThreadRecord threadRecord; while ((threadRecord = reader.getNext()) != null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java index cc27219df7..7a9a806155 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientDatabase.java @@ -125,7 +125,7 @@ public class RecipientDatabase extends Database { private static final String PROFILE_SHARING = "profile_sharing"; private static final String LAST_PROFILE_FETCH = "last_profile_fetch"; private static final String UNIDENTIFIED_ACCESS_MODE = "unidentified_access_mode"; - private static final String FORCE_SMS_SELECTION = "force_sms_selection"; + static final String FORCE_SMS_SELECTION = "force_sms_selection"; private static final String CAPABILITIES = "capabilities"; private static final String STORAGE_SERVICE_ID = "storage_service_key"; private static final String DIRTY = "dirty"; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java index 671e6cb48b..dd9353079d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -547,10 +547,10 @@ public class ThreadDatabase extends Database { } public Cursor getRecentConversationList(int limit, boolean includeInactiveGroups, boolean hideV1Groups) { - return getRecentConversationList(limit, includeInactiveGroups, false, hideV1Groups); + return getRecentConversationList(limit, includeInactiveGroups, false, hideV1Groups, false); } - public Cursor getRecentConversationList(int limit, boolean includeInactiveGroups, boolean groupsOnly, boolean hideV1Groups) { + public Cursor getRecentConversationList(int limit, boolean includeInactiveGroups, boolean groupsOnly, boolean hideV1Groups, boolean hideSms) { SQLiteDatabase db = databaseHelper.getReadableDatabase(); String query = !includeInactiveGroups ? MESSAGE_COUNT + " != 0 AND (" + GroupDatabase.TABLE_NAME + "." + GroupDatabase.ACTIVE + " IS NULL OR " + GroupDatabase.TABLE_NAME + "." + GroupDatabase.ACTIVE + " = 1)" : MESSAGE_COUNT + " != 0"; @@ -563,6 +563,11 @@ public class ThreadDatabase extends Database { query += " AND " + RecipientDatabase.TABLE_NAME + "." + RecipientDatabase.GROUP_TYPE + " != " + RecipientDatabase.GroupType.SIGNAL_V1.getId(); } + if (hideSms) { + query += " AND (" + RecipientDatabase.TABLE_NAME + "." + RecipientDatabase.GROUP_ID + " NOT NULL OR " + RecipientDatabase.TABLE_NAME + "." + RecipientDatabase.REGISTERED + " = " + RecipientDatabase.RegisteredState.REGISTERED.getId() + ")"; + query += " AND " + RecipientDatabase.TABLE_NAME + "." + RecipientDatabase.FORCE_SMS_SELECTION + " = 0"; + } + query += " AND " + ARCHIVED + " = 0"; return db.rawQuery(createQuery(query, 0, limit, true), null);