diff --git a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowRecipientSelectionFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowRecipientSelectionFragment.kt index 0c8dfb1145..f03df2685f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowRecipientSelectionFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/badges/gifts/flow/GiftFlowRecipientSelectionFragment.kt @@ -55,6 +55,7 @@ class GiftFlowRecipientSelectionFragment : Fragment(R.layout.gift_flow_recipient if (query.isNullOrEmpty()) { addSection( ContactSearchConfiguration.Section.Recents( + includeSelf = false, includeHeader = true, mode = ContactSearchConfiguration.Section.Recents.Mode.INDIVIDUALS ) 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 08a6fdc0ed..38efc7b36a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactsCursorLoader.java @@ -188,7 +188,7 @@ public class ContactsCursorLoader extends AbstractContactsCursorLoader { ThreadDatabase threadDatabase = SignalDatabase.threads(); MatrixCursor recentConversations = ContactsCursorRows.createMatrixCursor(RECENT_CONVERSATION_MAX); - try (Cursor rawConversations = threadDatabase.getRecentConversationList(RECENT_CONVERSATION_MAX, flagSet(mode, DisplayMode.FLAG_INACTIVE_GROUPS), false, groupsOnly, hideGroupsV1(mode), !smsEnabled(mode))) { + try (Cursor rawConversations = threadDatabase.getRecentConversationList(RECENT_CONVERSATION_MAX, flagSet(mode, DisplayMode.FLAG_INACTIVE_GROUPS), false, groupsOnly, hideGroupsV1(mode), !smsEnabled(mode), false)) { ThreadDatabase.Reader reader = threadDatabase.readerFor(rawConversations); ThreadRecord threadRecord; while ((threadRecord = reader.getNext()) != null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration.kt index 25672590bd..01016734a7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchConfiguration.kt @@ -34,6 +34,7 @@ class ContactSearchConfiguration private constructor( val includeInactiveGroups: Boolean = false, val includeGroupsV1: Boolean = false, val includeSms: Boolean = false, + val includeSelf: Boolean = false, override val includeHeader: Boolean, override val expandConfig: ExpandConfig? = null ) : Section(SectionKey.RECENTS) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt index 3f47668e76..fdf9734af0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/paged/ContactSearchPagedDataSourceRepository.kt @@ -45,7 +45,8 @@ open class ContactSearchPagedDataSourceRepository( section.mode == ContactSearchConfiguration.Section.Recents.Mode.INDIVIDUALS, section.mode == ContactSearchConfiguration.Section.Recents.Mode.GROUPS, !section.includeGroupsV1, - !section.includeSms + !section.includeSms, + !section.includeSelf ) } 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 017121daa3..005c7cb22b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -594,10 +594,10 @@ public class ThreadDatabase extends Database { } public Cursor getRecentConversationList(int limit, boolean includeInactiveGroups, boolean hideV1Groups) { - return getRecentConversationList(limit, includeInactiveGroups, false, false, hideV1Groups, false); + return getRecentConversationList(limit, includeInactiveGroups, false, false, hideV1Groups, false, false); } - public Cursor getRecentConversationList(int limit, boolean includeInactiveGroups, boolean individualsOnly, boolean groupsOnly, boolean hideV1Groups, boolean hideSms) { + public Cursor getRecentConversationList(int limit, boolean includeInactiveGroups, boolean individualsOnly, boolean groupsOnly, boolean hideV1Groups, boolean hideSms, boolean hideSelf) { SQLiteDatabase db = databaseHelper.getSignalReadableDatabase(); String query = !includeInactiveGroups ? MEANINGFUL_MESSAGES + " != 0 AND (" + GroupDatabase.TABLE_NAME + "." + GroupDatabase.ACTIVE + " IS NULL OR " + GroupDatabase.TABLE_NAME + "." + GroupDatabase.ACTIVE + " = 1)" : MEANINGFUL_MESSAGES + " != 0"; @@ -620,6 +620,10 @@ public class ThreadDatabase extends Database { query += " AND " + RecipientDatabase.TABLE_NAME + "." + RecipientDatabase.FORCE_SMS_SELECTION + " = 0"; } + if (hideSelf) { + query += " AND " + RECIPIENT_ID + " != " + Recipient.self().getId().toLong(); + } + query += " AND " + ARCHIVED + " = 0"; if (SignalStore.releaseChannelValues().getReleaseChannelRecipientId() != null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob.java index 84b8a4b5a8..fbee838ba1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ConversationShortcutUpdateJob.java @@ -68,7 +68,7 @@ public class ConversationShortcutUpdateJob extends BaseJob { int maxShortcuts = ConversationUtil.getMaxShortcuts(context); List ranked = new ArrayList<>(maxShortcuts); - try (ThreadDatabase.Reader reader = threadDatabase.readerFor(threadDatabase.getRecentConversationList(maxShortcuts, false, false, false, true, !Util.isDefaultSmsProvider(context)))) { + try (ThreadDatabase.Reader reader = threadDatabase.readerFor(threadDatabase.getRecentConversationList(maxShortcuts, false, false, false, true, !Util.isDefaultSmsProvider(context), false))) { ThreadRecord record; while ((record = reader.getNext()) != null) { ranked.add(record.getRecipient().resolve());