mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Show system contact icon in more places.
This commit is contained in:
committed by
Alex Hart
parent
c31a7152bc
commit
591d499462
@@ -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)
|
||||
@@ -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();
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user