Sort contacts without names after contacts with names.

This commit is contained in:
Alan Evans 2020-06-07 23:04:41 -03:00 committed by Greyson Parrelli
parent dc70bfabaf
commit a3aed96757
2 changed files with 17 additions and 6 deletions

View File

@ -29,9 +29,11 @@ public final class LiveGroup {
private static final Comparator<GroupMemberEntry.FullMember> LOCAL_FIRST = (m1, m2) -> Boolean.compare(m2.getMember().isLocalNumber(), m1.getMember().isLocalNumber()); private static final Comparator<GroupMemberEntry.FullMember> LOCAL_FIRST = (m1, m2) -> Boolean.compare(m2.getMember().isLocalNumber(), m1.getMember().isLocalNumber());
private static final Comparator<GroupMemberEntry.FullMember> ADMIN_FIRST = (m1, m2) -> Boolean.compare(m2.isAdmin(), m1.isAdmin()); private static final Comparator<GroupMemberEntry.FullMember> ADMIN_FIRST = (m1, m2) -> Boolean.compare(m2.isAdmin(), m1.isAdmin());
private static final Comparator<GroupMemberEntry.FullMember> HAS_DISPLAY_NAME = (m1, m2) -> Boolean.compare(m2.getMember().hasAUserSetDisplayName(ApplicationDependencies.getApplication()), m1.getMember().hasAUserSetDisplayName(ApplicationDependencies.getApplication()));
private static final Comparator<GroupMemberEntry.FullMember> ALPHABETICAL = (m1, m2) -> m1.getMember().getDisplayName(ApplicationDependencies.getApplication()).compareToIgnoreCase(m2.getMember().getDisplayName(ApplicationDependencies.getApplication())); private static final Comparator<GroupMemberEntry.FullMember> ALPHABETICAL = (m1, m2) -> m1.getMember().getDisplayName(ApplicationDependencies.getApplication()).compareToIgnoreCase(m2.getMember().getDisplayName(ApplicationDependencies.getApplication()));
private static final Comparator<? super GroupMemberEntry.FullMember> MEMBER_ORDER = ComparatorCompat.chain(LOCAL_FIRST) private static final Comparator<? super GroupMemberEntry.FullMember> MEMBER_ORDER = ComparatorCompat.chain(LOCAL_FIRST)
.thenComparing(ADMIN_FIRST) .thenComparing(ADMIN_FIRST)
.thenComparing(HAS_DISPLAY_NAME)
.thenComparing(ALPHABETICAL); .thenComparing(ALPHABETICAL);
private final GroupDatabase groupDatabase; private final GroupDatabase groupDatabase;

View File

@ -418,6 +418,15 @@ public class Recipient {
else return Optional.fromNullable(getName(context)).or(getSmsAddress()).or(""); else return Optional.fromNullable(getName(context)).or(getSmsAddress()).or("");
} }
/**
* False iff it {@link #getDisplayName} would fall back to e164, email or unknown.
*/
public boolean hasAUserSetDisplayName(@NonNull Context context) {
return !TextUtils.isEmpty(getName(context)) ||
!TextUtils.isEmpty(getProfileName().toString()) ||
!TextUtils.isEmpty(getDisplayUsername());
}
public @NonNull String getDisplayName(@NonNull Context context) { public @NonNull String getDisplayName(@NonNull Context context) {
return Util.getFirstNonEmpty(getName(context), return Util.getFirstNonEmpty(getName(context),
getProfileName().toString(), getProfileName().toString(),