Prefer about over phone number.

This commit is contained in:
Alex Hart 2023-02-15 16:30:16 -04:00 committed by Greyson Parrelli
parent e8ff1a04ed
commit c75a9b577d
11 changed files with 29 additions and 330 deletions

View file

@ -13,11 +13,11 @@ class ContactSelectionListAdapter(
context: Context, context: Context,
displayCheckBox: Boolean, displayCheckBox: Boolean,
displaySmsTag: DisplaySmsTag, displaySmsTag: DisplaySmsTag,
displayPhoneNumber: DisplayPhoneNumber, displaySecondaryInformation: DisplaySecondaryInformation,
onClickCallbacks: OnContactSelectionClick, onClickCallbacks: OnContactSelectionClick,
longClickCallbacks: LongClickCallbacks, longClickCallbacks: LongClickCallbacks,
storyContextMenuCallbacks: StoryContextMenuCallbacks storyContextMenuCallbacks: StoryContextMenuCallbacks
) : ContactSearchAdapter(context, emptySet(), displayCheckBox, displaySmsTag, displayPhoneNumber, onClickCallbacks, longClickCallbacks, storyContextMenuCallbacks) { ) : ContactSearchAdapter(context, emptySet(), displayCheckBox, displaySmsTag, displaySecondaryInformation, onClickCallbacks, longClickCallbacks, storyContextMenuCallbacks) {
init { init {
registerFactory(NewGroupModel::class.java, LayoutFactory({ NewGroupViewHolder(it, onClickCallbacks::onNewGroupClicked) }, R.layout.contact_selection_new_group_item)) registerFactory(NewGroupModel::class.java, LayoutFactory({ NewGroupViewHolder(it, onClickCallbacks::onNewGroupClicked) }, R.layout.contact_selection_new_group_item))

View file

@ -338,7 +338,7 @@ public final class ContactSelectionListFragment extends LoggingFragment
selectionLimit, selectionLimit,
isMulti, isMulti,
ContactSearchAdapter.DisplaySmsTag.DEFAULT, ContactSearchAdapter.DisplaySmsTag.DEFAULT,
ContactSearchAdapter.DisplayPhoneNumber.ALWAYS, ContactSearchAdapter.DisplaySecondaryInformation.ALWAYS,
this::mapStateToConfiguration, this::mapStateToConfiguration,
new ContactSearchMediator.SimpleCallbacks() { new ContactSearchMediator.SimpleCallbacks() {
@Override @Override
@ -347,11 +347,11 @@ public final class ContactSelectionListFragment extends LoggingFragment
} }
}, },
false, false,
(context, fixedContacts, displayCheckBox, displaySmsTag, displayPhoneNumber, callbacks, longClickCallbacks, storyContextMenuCallbacks) -> new ContactSelectionListAdapter( (context, fixedContacts, displayCheckBox, displaySmsTag, displaySecondaryInformation, callbacks, longClickCallbacks, storyContextMenuCallbacks) -> new ContactSelectionListAdapter(
context, context,
displayCheckBox, displayCheckBox,
displaySmsTag, displaySmsTag,
displayPhoneNumber, displaySecondaryInformation,
new ContactSelectionListAdapter.OnContactSelectionClick() { new ContactSelectionListAdapter.OnContactSelectionClick() {
@Override @Override
public void onNewGroupClicked() { public void onNewGroupClicked() {

View file

@ -40,28 +40,22 @@ import org.signal.core.util.concurrent.SimpleTask;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.components.menu.ActionItem; import org.thoughtcrime.securesms.components.menu.ActionItem;
import org.thoughtcrime.securesms.components.menu.SignalContextMenu; import org.thoughtcrime.securesms.components.menu.SignalContextMenu;
import org.thoughtcrime.securesms.contacts.ContactSelectionListItem;
import org.thoughtcrime.securesms.contacts.management.ContactsManagementRepository; import org.thoughtcrime.securesms.contacts.management.ContactsManagementRepository;
import org.thoughtcrime.securesms.contacts.management.ContactsManagementViewModel; import org.thoughtcrime.securesms.contacts.management.ContactsManagementViewModel;
import org.thoughtcrime.securesms.contacts.paged.ContactSearchData;
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey; import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey;
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery; import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery;
import org.thoughtcrime.securesms.conversation.ConversationIntents; import org.thoughtcrime.securesms.conversation.ConversationIntents;
import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.database.SignalDatabase;
import org.thoughtcrime.securesms.groups.ui.creategroup.CreateGroupActivity; import org.thoughtcrime.securesms.groups.ui.creategroup.CreateGroupActivity;
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.CommunicationActions;
import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.LifecycleDisposable; import org.thoughtcrime.securesms.util.LifecycleDisposable;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;

View file

@ -1,298 +0,0 @@
package org.thoughtcrime.securesms.contacts;
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.badges.BadgeImageView;
import org.thoughtcrime.securesms.components.AvatarImageView;
import org.thoughtcrime.securesms.components.FromTextView;
import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto;
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
import org.thoughtcrime.securesms.conversation.colors.AvatarColor;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter;
import org.thoughtcrime.securesms.profiles.manage.UsernameState;
import org.thoughtcrime.securesms.recipients.LiveRecipient;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientForeverObserver;
import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.SpanUtil;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil;
import java.util.Optional;
public class ContactSelectionListItem extends ConstraintLayout implements RecipientForeverObserver {
@SuppressWarnings("unused")
private static final String TAG = Log.tag(ContactSelectionListItem.class);
private AvatarImageView contactPhotoImage;
private TextView numberView;
private FromTextView nameView;
private TextView labelView;
private CheckBox checkBox;
private View smsTag;
private BadgeImageView badge;
private String number;
private String chipName;
private int contactType;
private String contactName;
private String contactNumber;
private String contactLabel;
private String contactAbout;
private LiveRecipient recipient;
private GlideRequests glideRequests;
private final UsernameFallbackPhotoProvider usernameFallbackPhotoProvider = new UsernameFallbackPhotoProvider();
public ContactSelectionListItem(Context context) {
super(context);
}
public ContactSelectionListItem(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
this.contactPhotoImage = findViewById(R.id.contact_photo_image);
this.numberView = findViewById(R.id.number);
this.labelView = findViewById(R.id.label);
this.nameView = findViewById(R.id.name);
this.checkBox = findViewById(R.id.check_box);
this.smsTag = findViewById(R.id.sms_tag);
this.badge = findViewById(R.id.contact_badge);
ViewUtil.setTextViewGravityStart(this.nameView, getContext());
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (recipient != null) {
recipient.observeForever(this);
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
unbind();
}
public void set(@NonNull GlideRequests glideRequests,
@Nullable RecipientId recipientId,
int type,
String name,
String number,
String label,
String about,
boolean checkboxVisible)
{
this.glideRequests = glideRequests;
this.number = number;
this.contactType = type;
this.contactName = name;
this.contactNumber = number;
this.contactLabel = label;
this.contactAbout = about;
this.contactPhotoImage.setFallbackPhotoProvider(null);
if (type == ContactRepository.NEW_PHONE_TYPE || type == ContactRepository.NEW_USERNAME_TYPE) {
this.recipient = null;
this.contactPhotoImage.setFallbackPhotoProvider(usernameFallbackPhotoProvider);
this.contactPhotoImage.setFallbackPhotoColor(AvatarColor.ON_SURFACE_VARIANT);
this.contactPhotoImage.setAvatar(glideRequests, null, false);
} else if (recipientId != null) {
if (this.recipient != null) {
this.recipient.removeForeverObserver(this);
}
this.recipient = Recipient.live(recipientId);
this.recipient.observeForever(this);
}
Recipient recipientSnapshot = recipient != null ? recipient.get() : null;
if (recipientSnapshot != null && !recipientSnapshot.isResolving() && !recipientSnapshot.isMyStory()) {
contactName = recipientSnapshot.getDisplayName(getContext());
name = contactName;
} else if (recipient != null) {
name = "";
}
if (recipientSnapshot == null || recipientSnapshot.isResolving() || recipientSnapshot.isRegistered() || recipientSnapshot.isDistributionList()) {
smsTag.setVisibility(GONE);
} else {
smsTag.setVisibility(VISIBLE);
}
if (recipientSnapshot == null || recipientSnapshot.isResolving()) {
this.contactPhotoImage.setAvatar(glideRequests, null, false);
setText(null, type, name, number, label, about);
} else if (recipientSnapshot.isMyStory()) {
this.contactPhotoImage.setRecipient(Recipient.self(), false);
setText(recipientSnapshot, type, name, number, label, about);
} else {
this.contactPhotoImage.setAvatar(glideRequests, recipientSnapshot, false);
setText(recipientSnapshot, type, name, number, label, about);
}
this.checkBox.setVisibility(checkboxVisible ? View.VISIBLE : View.GONE);
if (recipientSnapshot == null || recipientSnapshot.isSelf()) {
badge.setBadge(null);
} else {
badge.setBadgeFromRecipient(recipientSnapshot);
}
}
public void setChecked(boolean selected, boolean animate) {
checkBox.setChecked(selected);
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
this.checkBox.setEnabled(enabled);
}
public void unbind() {
if (recipient != null) {
recipient.removeForeverObserver(this);
}
}
@SuppressLint("SetTextI18n")
private void setText(@Nullable Recipient recipient, int type, String name, String number, String label, @Nullable String about) {
this.numberView.setVisibility(View.VISIBLE);
if (number == null || number.isEmpty()) {
this.nameView.setEnabled(false);
this.numberView.setText("");
this.labelView.setVisibility(View.GONE);
} else if (recipient != null && recipient.isGroup()) {
this.nameView.setEnabled(false);
this.numberView.setText(getGroupMemberCount(recipient));
this.labelView.setVisibility(View.GONE);
} else if (type == ContactRepository.PUSH_TYPE) {
this.numberView.setText(!Util.isEmpty(about) ? about : number);
this.nameView.setEnabled(true);
this.labelView.setVisibility(View.GONE);
} else if (type == ContactRepository.NEW_USERNAME_TYPE) {
this.numberView.setVisibility(View.GONE);
this.nameView.setEnabled(true);
this.labelView.setVisibility(View.GONE);
} else if (recipient != null && recipient.isDistributionList()) {
this.numberView.setText(getViewerCount(number));
this.labelView.setVisibility(View.GONE);
} else {
this.numberView.setText(!Util.isEmpty(about) ? about : number);
this.nameView.setEnabled(true);
this.labelView.setText(label != null && !label.equals("null") ? getResources().getString(R.string.ContactSelectionListItem__dot_s, label) : "");
this.labelView.setVisibility(View.VISIBLE);
}
if (recipient != null) {
this.nameView.setText(recipient);
chipName = recipient.getShortDisplayName(getContext());
} else if (type == ContactRepository.NEW_USERNAME_TYPE && number != null) {
this.nameView.setText(presentUsername(number));
} else {
this.nameView.setText(name);
chipName = name;
}
}
public String getNumber() {
return number;
}
public String getChipName() {
return chipName;
}
private String getGroupMemberCount(@NonNull Recipient recipient) {
if (!recipient.isGroup()) {
throw new AssertionError();
}
int memberCount = recipient.getParticipantIds().size();
return getContext().getResources().getQuantityString(R.plurals.contact_selection_list_item__number_of_members, memberCount, memberCount);
}
private String getViewerCount(@NonNull String number) {
int viewerCount = Integer.parseInt(number);
return getContext().getResources().getQuantityString(R.plurals.contact_selection_list_item__number_of_viewers, viewerCount, viewerCount);
}
private CharSequence presentUsername(@NonNull String username) {
if (username.contains(UsernameState.DELIMITER)) {
return username;
} else {
return new SpannableStringBuilder(username).append(SpanUtil.color(ContextCompat.getColor(getContext(), R.color.signal_colorOutline), UsernameState.DELIMITER));
}
}
public @Nullable LiveRecipient getRecipient() {
return recipient;
}
public boolean isUsernameType() {
return contactType == ContactRepository.NEW_USERNAME_TYPE;
}
public Optional<RecipientId> getRecipientId() {
return recipient != null ? Optional.of(recipient.getId()) : Optional.empty();
}
@Override
public void onRecipientChanged(@NonNull Recipient recipient) {
if (this.recipient != null && this.recipient.getId().equals(recipient.getId())) {
contactName = recipient.getDisplayName(getContext());
contactAbout = recipient.getCombinedAboutAndEmoji();
if (recipient.isGroup() && recipient.getGroupId().isPresent()) {
contactNumber = recipient.getGroupId().get().toString();
} else if (recipient.hasE164()) {
contactNumber = PhoneNumberFormatter.prettyPrint(recipient.getE164().orElse(""));
} else if (!recipient.isDistributionList()) {
contactNumber = recipient.getEmail().orElse("");
}
if (recipient.isMyStory()) {
contactPhotoImage.setRecipient(Recipient.self(), false);
} else {
contactPhotoImage.setAvatar(glideRequests, recipient, false);
}
setText(recipient, contactType, contactName, contactNumber, contactLabel, contactAbout);
smsTag.setVisibility(recipient.isRegistered() || recipient.isDistributionList() ? GONE : VISIBLE);
badge.setBadgeFromRecipient(recipient);
} else {
Log.w(TAG, "Bad change! Local recipient doesn't match. Ignoring. Local: " + (this.recipient == null ? "null" : this.recipient.getId()) + ", Changed: " + recipient.getId());
}
}
private static class UsernameFallbackPhotoProvider extends Recipient.FallbackPhotoProvider {
@Override
public @NonNull FallbackContactPhoto getPhotoForRecipientWithoutName() {
return new ResourceContactPhoto(R.drawable.ic_search_24, R.drawable.ic_search_24, R.drawable.ic_search_24);
}
}
}

View file

@ -39,7 +39,7 @@ open class ContactSearchAdapter(
fixedContacts: Set<ContactSearchKey>, fixedContacts: Set<ContactSearchKey>,
displayCheckBox: Boolean, displayCheckBox: Boolean,
displaySmsTag: DisplaySmsTag, displaySmsTag: DisplaySmsTag,
displayPhoneNumber: DisplayPhoneNumber, displaySecondaryInformation: DisplaySecondaryInformation,
onClickCallbacks: ClickCallbacks, onClickCallbacks: ClickCallbacks,
longClickCallbacks: LongClickCallbacks, longClickCallbacks: LongClickCallbacks,
storyContextMenuCallbacks: StoryContextMenuCallbacks storyContextMenuCallbacks: StoryContextMenuCallbacks
@ -47,7 +47,7 @@ open class ContactSearchAdapter(
init { init {
registerStoryItems(this, displayCheckBox, onClickCallbacks::onStoryClicked, storyContextMenuCallbacks) registerStoryItems(this, displayCheckBox, onClickCallbacks::onStoryClicked, storyContextMenuCallbacks)
registerKnownRecipientItems(this, fixedContacts, displayCheckBox, displaySmsTag, displayPhoneNumber, onClickCallbacks::onKnownRecipientClicked, longClickCallbacks::onKnownRecipientLongClick) registerKnownRecipientItems(this, fixedContacts, displayCheckBox, displaySmsTag, displaySecondaryInformation, onClickCallbacks::onKnownRecipientClicked, longClickCallbacks::onKnownRecipientLongClick)
registerHeaders(this) registerHeaders(this)
registerExpands(this, onClickCallbacks::onExpandClicked) registerExpands(this, onClickCallbacks::onExpandClicked)
registerFactory(UnknownRecipientModel::class.java, LayoutFactory({ UnknownRecipientViewHolder(it, onClickCallbacks::onUnknownRecipientClicked, displayCheckBox) }, R.layout.contact_search_unknown_item)) registerFactory(UnknownRecipientModel::class.java, LayoutFactory({ UnknownRecipientViewHolder(it, onClickCallbacks::onUnknownRecipientClicked, displayCheckBox) }, R.layout.contact_search_unknown_item))
@ -84,13 +84,13 @@ open class ContactSearchAdapter(
fixedContacts: Set<ContactSearchKey>, fixedContacts: Set<ContactSearchKey>,
displayCheckBox: Boolean, displayCheckBox: Boolean,
displaySmsTag: DisplaySmsTag, displaySmsTag: DisplaySmsTag,
displayPhoneNumber: DisplayPhoneNumber, displaySecondaryInformation: DisplaySecondaryInformation,
recipientListener: OnClickedCallback<ContactSearchData.KnownRecipient>, recipientListener: OnClickedCallback<ContactSearchData.KnownRecipient>,
recipientLongClickCallback: OnLongClickedCallback<ContactSearchData.KnownRecipient> recipientLongClickCallback: OnLongClickedCallback<ContactSearchData.KnownRecipient>
) { ) {
mappingAdapter.registerFactory( mappingAdapter.registerFactory(
RecipientModel::class.java, RecipientModel::class.java,
LayoutFactory({ KnownRecipientViewHolder(it, fixedContacts, displayCheckBox, displaySmsTag, displayPhoneNumber, recipientListener, recipientLongClickCallback) }, R.layout.contact_search_item) LayoutFactory({ KnownRecipientViewHolder(it, fixedContacts, displayCheckBox, displaySmsTag, displaySecondaryInformation, recipientListener, recipientLongClickCallback) }, R.layout.contact_search_item)
) )
} }
@ -351,7 +351,7 @@ open class ContactSearchAdapter(
private val fixedContacts: Set<ContactSearchKey>, private val fixedContacts: Set<ContactSearchKey>,
displayCheckBox: Boolean, displayCheckBox: Boolean,
displaySmsTag: DisplaySmsTag, displaySmsTag: DisplaySmsTag,
private val displayPhoneNumber: DisplayPhoneNumber, private val displaySecondaryInformation: DisplaySecondaryInformation,
onClick: OnClickedCallback<ContactSearchData.KnownRecipient>, onClick: OnClickedCallback<ContactSearchData.KnownRecipient>,
private val onLongClick: OnLongClickedCallback<ContactSearchData.KnownRecipient> private val onLongClick: OnLongClickedCallback<ContactSearchData.KnownRecipient>
) : BaseRecipientViewHolder<RecipientModel, ContactSearchData.KnownRecipient>(itemView, displayCheckBox, displaySmsTag, onClick), LetterHeaderDecoration.LetterHeaderItem { ) : BaseRecipientViewHolder<RecipientModel, ContactSearchData.KnownRecipient>(itemView, displayCheckBox, displaySmsTag, onClick), LetterHeaderDecoration.LetterHeaderItem {
@ -370,7 +370,10 @@ open class ContactSearchAdapter(
val count = recipient.participantIds.size val count = recipient.participantIds.size
number.text = context.resources.getQuantityString(R.plurals.ContactSearchItems__group_d_members, count, count) number.text = context.resources.getQuantityString(R.plurals.ContactSearchItems__group_d_members, count, count)
number.visible = true number.visible = true
} else if (displayPhoneNumber == DisplayPhoneNumber.ALWAYS && recipient.hasE164()) { } else if (displaySecondaryInformation == DisplaySecondaryInformation.ALWAYS && recipient.combinedAboutAndEmoji != null) {
number.text = recipient.combinedAboutAndEmoji
number.visible = true
} else if (displaySecondaryInformation == DisplaySecondaryInformation.ALWAYS && recipient.hasE164()) {
number.text = PhoneNumberFormatter.prettyPrint(recipient.requireE164()) number.text = PhoneNumberFormatter.prettyPrint(recipient.requireE164())
number.visible = true number.visible = true
} else { } else {
@ -608,7 +611,7 @@ open class ContactSearchAdapter(
NEVER NEVER
} }
enum class DisplayPhoneNumber { enum class DisplaySecondaryInformation {
NEVER, NEVER,
ALWAYS ALWAYS
} }

View file

@ -31,7 +31,7 @@ import java.util.concurrent.TimeUnit
* @param selectionLimits [SelectionLimits] describing how large the result set can be. * @param selectionLimits [SelectionLimits] describing how large the result set can be.
* @param displayCheckBox Whether or not to display checkboxes on items. * @param displayCheckBox Whether or not to display checkboxes on items.
* @param displaySmsTag Whether or not to display the SMS tag on items. * @param displaySmsTag Whether or not to display the SMS tag on items.
* @param displayPhoneNumber Whether or not to display phone numbers on known contacts. * @param displaySecondaryInformation Whether or not to display phone numbers on known contacts.
* @param mapStateToConfiguration Maps a [ContactSearchState] to a [ContactSearchConfiguration] * @param mapStateToConfiguration Maps a [ContactSearchState] to a [ContactSearchConfiguration]
* @param callbacks Hooks to help process, filter, and react to selection * @param callbacks Hooks to help process, filter, and react to selection
* @param performSafetyNumberChecks Whether to perform safety number checks for selected users * @param performSafetyNumberChecks Whether to perform safety number checks for selected users
@ -44,7 +44,7 @@ class ContactSearchMediator(
selectionLimits: SelectionLimits, selectionLimits: SelectionLimits,
displayCheckBox: Boolean, displayCheckBox: Boolean,
displaySmsTag: ContactSearchAdapter.DisplaySmsTag, displaySmsTag: ContactSearchAdapter.DisplaySmsTag,
displayPhoneNumber: ContactSearchAdapter.DisplayPhoneNumber, displaySecondaryInformation: ContactSearchAdapter.DisplaySecondaryInformation,
mapStateToConfiguration: (ContactSearchState) -> ContactSearchConfiguration, mapStateToConfiguration: (ContactSearchState) -> ContactSearchConfiguration,
private val callbacks: Callbacks = SimpleCallbacks(), private val callbacks: Callbacks = SimpleCallbacks(),
performSafetyNumberChecks: Boolean = true, performSafetyNumberChecks: Boolean = true,
@ -71,7 +71,7 @@ class ContactSearchMediator(
fixedContacts = fixedContacts, fixedContacts = fixedContacts,
displayCheckBox = displayCheckBox, displayCheckBox = displayCheckBox,
displaySmsTag = displaySmsTag, displaySmsTag = displaySmsTag,
displayPhoneNumber = displayPhoneNumber, displaySecondaryInformation = displaySecondaryInformation,
callbacks = object : ContactSearchAdapter.ClickCallbacks { callbacks = object : ContactSearchAdapter.ClickCallbacks {
override fun onStoryClicked(view: View, story: ContactSearchData.Story, isSelected: Boolean) { override fun onStoryClicked(view: View, story: ContactSearchData.Story, isSelected: Boolean) {
toggleStorySelection(view, story, isSelected) toggleStorySelection(view, story, isSelected)
@ -232,7 +232,7 @@ class ContactSearchMediator(
fixedContacts: Set<ContactSearchKey>, fixedContacts: Set<ContactSearchKey>,
displayCheckBox: Boolean, displayCheckBox: Boolean,
displaySmsTag: ContactSearchAdapter.DisplaySmsTag, displaySmsTag: ContactSearchAdapter.DisplaySmsTag,
displayPhoneNumber: ContactSearchAdapter.DisplayPhoneNumber, displaySecondaryInformation: ContactSearchAdapter.DisplaySecondaryInformation,
callbacks: ContactSearchAdapter.ClickCallbacks, callbacks: ContactSearchAdapter.ClickCallbacks,
longClickCallbacks: ContactSearchAdapter.LongClickCallbacks, longClickCallbacks: ContactSearchAdapter.LongClickCallbacks,
storyContextMenuCallbacks: ContactSearchAdapter.StoryContextMenuCallbacks storyContextMenuCallbacks: ContactSearchAdapter.StoryContextMenuCallbacks
@ -245,12 +245,12 @@ class ContactSearchMediator(
fixedContacts: Set<ContactSearchKey>, fixedContacts: Set<ContactSearchKey>,
displayCheckBox: Boolean, displayCheckBox: Boolean,
displaySmsTag: ContactSearchAdapter.DisplaySmsTag, displaySmsTag: ContactSearchAdapter.DisplaySmsTag,
displayPhoneNumber: ContactSearchAdapter.DisplayPhoneNumber, displaySecondaryInformation: ContactSearchAdapter.DisplaySecondaryInformation,
callbacks: ContactSearchAdapter.ClickCallbacks, callbacks: ContactSearchAdapter.ClickCallbacks,
longClickCallbacks: ContactSearchAdapter.LongClickCallbacks, longClickCallbacks: ContactSearchAdapter.LongClickCallbacks,
storyContextMenuCallbacks: ContactSearchAdapter.StoryContextMenuCallbacks storyContextMenuCallbacks: ContactSearchAdapter.StoryContextMenuCallbacks
): PagingMappingAdapter<ContactSearchKey> { ): PagingMappingAdapter<ContactSearchKey> {
return ContactSearchAdapter(context, fixedContacts, displayCheckBox, displaySmsTag, displayPhoneNumber, callbacks, longClickCallbacks, storyContextMenuCallbacks) return ContactSearchAdapter(context, fixedContacts, displayCheckBox, displaySmsTag, displaySecondaryInformation, callbacks, longClickCallbacks, storyContextMenuCallbacks)
} }
} }
} }

View file

@ -124,7 +124,7 @@ class MultiselectForwardFragment :
FeatureFlags.shareSelectionLimit(), FeatureFlags.shareSelectionLimit(),
!args.selectSingleRecipient, !args.selectSingleRecipient,
ContactSearchAdapter.DisplaySmsTag.DEFAULT, ContactSearchAdapter.DisplaySmsTag.DEFAULT,
ContactSearchAdapter.DisplayPhoneNumber.NEVER, ContactSearchAdapter.DisplaySecondaryInformation.NEVER,
this::getConfiguration, this::getConfiguration,
object : ContactSearchMediator.SimpleCallbacks() { object : ContactSearchMediator.SimpleCallbacks() {
override fun onBeforeContactsSelected(view: View?, contactSearchKeys: Set<ContactSearchKey>): Set<ContactSearchKey> { override fun onBeforeContactsSelected(view: View?, contactSearchKeys: Set<ContactSearchKey>): Set<ContactSearchKey> {

View file

@ -298,7 +298,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
SelectionLimits.NO_LIMITS, SelectionLimits.NO_LIMITS,
false, false,
ContactSearchAdapter.DisplaySmsTag.DEFAULT, ContactSearchAdapter.DisplaySmsTag.DEFAULT,
ContactSearchAdapter.DisplayPhoneNumber.NEVER, ContactSearchAdapter.DisplaySecondaryInformation.NEVER,
this::mapSearchStateToConfiguration, this::mapSearchStateToConfiguration,
new ContactSearchMediator.SimpleCallbacks(), new ContactSearchMediator.SimpleCallbacks(),
false, false,
@ -306,7 +306,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
fixedContacts, fixedContacts,
displayCheckBox, displayCheckBox,
displaySmsTag, displaySmsTag,
displayPhoneNumber, displaySecondaryInformation,
callbacks, callbacks,
longClickCallbacks, longClickCallbacks,
storyContextMenuCallbacks storyContextMenuCallbacks
@ -317,7 +317,7 @@ public class ConversationListFragment extends MainFragment implements ActionMode
fixedContacts, fixedContacts,
displayCheckBox, displayCheckBox,
displaySmsTag, displaySmsTag,
displayPhoneNumber, displaySecondaryInformation,
new ContactSearchClickCallbacks(callbacks), new ContactSearchClickCallbacks(callbacks),
longClickCallbacks, longClickCallbacks,
storyContextMenuCallbacks, storyContextMenuCallbacks,

View file

@ -28,13 +28,13 @@ class ConversationListSearchAdapter(
fixedContacts: Set<ContactSearchKey>, fixedContacts: Set<ContactSearchKey>,
displayCheckBox: Boolean, displayCheckBox: Boolean,
displaySmsTag: DisplaySmsTag, displaySmsTag: DisplaySmsTag,
displayPhoneNumber: DisplayPhoneNumber, displaySecondaryInformation: DisplaySecondaryInformation,
onClickedCallbacks: ConversationListSearchClickCallbacks, onClickedCallbacks: ConversationListSearchClickCallbacks,
longClickCallbacks: LongClickCallbacks, longClickCallbacks: LongClickCallbacks,
storyContextMenuCallbacks: StoryContextMenuCallbacks, storyContextMenuCallbacks: StoryContextMenuCallbacks,
lifecycleOwner: LifecycleOwner, lifecycleOwner: LifecycleOwner,
glideRequests: GlideRequests glideRequests: GlideRequests
) : ContactSearchAdapter(context, fixedContacts, displayCheckBox, displaySmsTag, displayPhoneNumber, onClickedCallbacks, longClickCallbacks, storyContextMenuCallbacks) { ) : ContactSearchAdapter(context, fixedContacts, displayCheckBox, displaySmsTag, displaySecondaryInformation, onClickedCallbacks, longClickCallbacks, storyContextMenuCallbacks) {
init { init {
registerFactory( registerFactory(

View file

@ -67,7 +67,7 @@ class ChooseGroupStoryBottomSheet : FixedRoundedCornerBottomSheetDialogFragment(
selectionLimits = FeatureFlags.shareSelectionLimit(), selectionLimits = FeatureFlags.shareSelectionLimit(),
displayCheckBox = true, displayCheckBox = true,
displaySmsTag = ContactSearchAdapter.DisplaySmsTag.DEFAULT, displaySmsTag = ContactSearchAdapter.DisplaySmsTag.DEFAULT,
displayPhoneNumber = ContactSearchAdapter.DisplayPhoneNumber.NEVER, displaySecondaryInformation = ContactSearchAdapter.DisplaySecondaryInformation.NEVER,
mapStateToConfiguration = { state -> mapStateToConfiguration = { state ->
ContactSearchConfiguration.build { ContactSearchConfiguration.build {
query = state.query query = state.query

View file

@ -29,7 +29,7 @@ class ViewAllSignalConnectionsFragment : Fragment(R.layout.view_all_signal_conne
selectionLimits = SelectionLimits(0, 0), selectionLimits = SelectionLimits(0, 0),
displayCheckBox = false, displayCheckBox = false,
displaySmsTag = ContactSearchAdapter.DisplaySmsTag.IF_NOT_REGISTERED, displaySmsTag = ContactSearchAdapter.DisplaySmsTag.IF_NOT_REGISTERED,
displayPhoneNumber = ContactSearchAdapter.DisplayPhoneNumber.NEVER, displaySecondaryInformation = ContactSearchAdapter.DisplaySecondaryInformation.NEVER,
mapStateToConfiguration = { getConfiguration() }, mapStateToConfiguration = { getConfiguration() },
performSafetyNumberChecks = false performSafetyNumberChecks = false
) )