diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/mention/MentionViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/mention/MentionViewModel.kt index 86200811dc..9a3652655b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/mention/MentionViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/mention/MentionViewModel.kt @@ -44,6 +44,7 @@ import org.thoughtcrime.securesms.database.DatabaseContentProviders.Conversation import org.thoughtcrime.securesms.database.GroupDatabase import org.thoughtcrime.securesms.database.GroupMemberDatabase import org.thoughtcrime.securesms.database.MmsDatabase +import org.thoughtcrime.securesms.database.MmsSmsDatabase import org.thoughtcrime.securesms.database.SessionContactDatabase import org.thoughtcrime.securesms.database.Storage import org.thoughtcrime.securesms.database.ThreadDatabase @@ -69,6 +70,7 @@ class MentionViewModel( storage: Storage, configFactory: ConfigFactoryProtocol, dispatcher: CoroutineDispatcher = Dispatchers.IO, + mmsSmsDatabase: MmsSmsDatabase ) : ViewModel() { private val editable = MentionEditable() @@ -108,7 +110,7 @@ class MentionViewModel( ) .map { it.toString() } } - recipient.isCommunityRecipient -> mmsDatabase.getRecentChatMemberIDs( + recipient.isCommunityRecipient -> mmsSmsDatabase.getRecentChatMemberAddresses( threadID, 20 ) @@ -374,6 +376,7 @@ class MentionViewModel( private val memberDatabase: GroupMemberDatabase, private val configFactory: ConfigFactoryProtocol, private val application: Application, + private val mmsSmsDatabase : MmsSmsDatabase ) : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { @@ -388,6 +391,7 @@ class MentionViewModel( storage = storage, configFactory = configFactory, application = application, + mmsSmsDatabase = mmsSmsDatabase ) as T } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java index 6d072eb3a8..ddadfc34fc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java @@ -295,6 +295,24 @@ public Cursor getConversationSnippet(long threadId) { return queryTables(PROJECTION, selection, order, null); } + public List getRecentChatMemberAddresses(long threadId, int limit) { + String[] projection = new String[] { "DISTINCT " + MmsSmsColumns.ADDRESS }; + String selection = MmsSmsColumns.THREAD_ID + " = " + threadId; + String order = MmsSmsColumns.NORMALIZED_DATE_SENT + " DESC"; + String limitStr = String.valueOf(limit); + + try (Cursor cursor = queryTables(projection, selection, order, limitStr)) { + List addresses = new ArrayList<>(); + while (cursor != null && cursor.moveToNext()) { + String address = cursor.getString(0); + if (address != null && !address.isEmpty()) { + addresses.add(address); + } + } + return addresses; + } + } + public List getUserMessages(long threadId, String sender) { List idList = new ArrayList<>();