Show system contact icon in more places.

This commit is contained in:
Cody Henthorne
2024-02-27 13:25:04 -05:00
committed by Alex Hart
parent c31a7152bc
commit 591d499462
13 changed files with 91 additions and 141 deletions

View File

@@ -1,5 +0,0 @@
package org.thoughtcrime.securesms.search
import org.thoughtcrime.securesms.recipients.Recipient
data class ContactSearchResult(val results: List<Recipient>, val query: String)

View File

@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.search;
import android.content.Context;
import android.database.Cursor;
import android.database.MergeCursor;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
@@ -14,7 +13,6 @@ import androidx.annotation.WorkerThread;
import org.signal.core.util.CursorUtil;
import org.signal.core.util.StringUtil;
import org.signal.core.util.concurrent.LatestPrioritizedSerialExecutor;
import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.contacts.ContactRepository;
@@ -52,7 +50,6 @@ import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
import static org.thoughtcrime.securesms.database.SearchTable.SNIPPET_WRAP;
@@ -72,8 +69,7 @@ public class SearchRepository {
private final MentionTable mentionTable;
private final MessageTable messageTable;
private final LatestPrioritizedSerialExecutor searchExecutor;
private final Executor serialExecutor;
private final Executor serialExecutor;
public SearchRepository(@NonNull String noteToSelfTitle) {
this.context = ApplicationDependencies.getApplication().getApplicationContext();
@@ -84,7 +80,6 @@ public class SearchRepository {
this.mentionTable = SignalDatabase.mentions();
this.messageTable = SignalDatabase.messages();
this.contactRepository = new ContactRepository(context, noteToSelfTitle);
this.searchExecutor = new LatestPrioritizedSerialExecutor(SignalExecutors.BOUNDED);
this.serialExecutor = new SerialExecutor(SignalExecutors.BOUNDED);
}
@@ -98,17 +93,6 @@ public class SearchRepository {
return new ThreadSearchResult(result, query);
}
public void queryContacts(@NonNull String query, @NonNull Consumer<ContactSearchResult> callback) {
searchExecutor.execute(1, () -> {
long start = System.currentTimeMillis();
List<Recipient> result = queryContacts(query);
Log.d(TAG, "[contacts] Search took " + (System.currentTimeMillis() - start) + " ms");
callback.accept(new ContactSearchResult(result, query));
});
}
@WorkerThread
public @NonNull MessageSearchResult queryMessagesSync(@NonNull String query) {
long start = System.currentTimeMillis();
@@ -139,27 +123,6 @@ public class SearchRepository {
});
}
private List<Recipient> queryContacts(String query) {
if (Util.isEmpty(query)) {
return Collections.emptyList();
}
Cursor contacts = null;
try {
Cursor textSecureContacts = contactRepository.querySignalContacts(query);
Cursor systemContacts = contactRepository.queryNonSignalContacts(query);
contacts = new MergeCursor(new Cursor[] { textSecureContacts, systemContacts });
return readToList(contacts, new RecipientModelBuilder(), 250);
} finally {
if (contacts != null) {
contacts.close();
}
}
}
private @NonNull List<ThreadRecord> queryConversations(@NonNull String query, boolean unreadOnly) {
if (Util.isEmpty(query)) {
return Collections.emptyList();

View File

@@ -1,45 +0,0 @@
package org.thoughtcrime.securesms.search
import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter
import org.thoughtcrime.securesms.database.model.ThreadRecord
import org.thoughtcrime.securesms.recipients.Recipient
/**
* Represents an all-encompassing search result that can contain various result for different
* subcategories.
*/
data class SearchResult(
val query: String,
val contacts: List<Recipient>,
val conversations: List<ThreadRecord>,
val messages: List<MessageResult>,
val conversationFilter: ConversationFilter
) {
fun size(): Int {
return contacts.size + conversations.size + messages.size
}
val isEmpty: Boolean
get() = size() == 0
fun merge(result: ContactSearchResult): SearchResult {
return this.copy(contacts = result.results, query = result.query)
}
fun merge(result: ThreadSearchResult): SearchResult {
return this.copy(conversations = result.results, query = result.query)
}
fun merge(result: MessageSearchResult): SearchResult {
return this.copy(messages = result.results, query = result.query)
}
fun merge(conversationFilter: ConversationFilter): SearchResult {
return this.copy(conversationFilter = conversationFilter)
}
companion object {
@JvmField
val EMPTY = SearchResult("", emptyList(), emptyList(), emptyList(), ConversationFilter.OFF)
}
}