Compare both first and last names when sorting (#1487)

If two names have the same last name, ensure we fall back on the
first name when sorting them.

// FREEBIE
pull/1/head
Russ Shanahan 9 years ago committed by Michael Kirk
parent d6e9745956
commit 81e1ec4b9e

@ -132,7 +132,7 @@ EXTERNAL SOURCES:
CHECKOUT OPTIONS:
SignalServiceKit:
:commit: 3083e2929c7dcfe5c60e003dd77c310d26dab177
:commit: 34ffce89f59356ab23f290866b1c3437f03312ce
:git: https://github.com/WhisperSystems/SignalServiceKit.git
SocketRocket:
:commit: 41b57bb2fc292a814f758441a05243eb38457027

@ -385,46 +385,10 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
signalContacts[contact.textSecureIdentifiers.firstObject] = contact;
}
}
return [signalContacts.allValues sortedArrayUsingComparator:[[self class] contactComparator]];
}
+ (NSComparator)contactComparator {
return ^NSComparisonResult(id obj1, id obj2) {
Contact *contact1 = (Contact *)obj1;
Contact *contact2 = (Contact *)obj2;
BOOL firstNameOrdering = ABPersonGetSortOrdering() == kABPersonCompositeNameFormatFirstNameFirst ? YES : NO;
if (firstNameOrdering) {
if (contact1.firstName) {
if (contact2.firstName) {
return [contact1.firstName caseInsensitiveCompare:contact2.firstName];
} else {
return [contact1.firstName caseInsensitiveCompare:contact2.lastName];
}
} else {
if (contact2.firstName) {
return [contact1.lastName caseInsensitiveCompare:contact2.firstName];
} else {
return [contact1.lastName caseInsensitiveCompare:contact2.lastName];
}
}
} else {
if (contact1.lastName) {
if (contact2.lastName) {
return [contact1.lastName caseInsensitiveCompare:contact2.lastName];
} else {
return [contact1.lastName caseInsensitiveCompare:contact2.firstName];
}
} else {
if (contact2.lastName) {
return [contact1.firstName caseInsensitiveCompare:contact2.lastName];
} else {
return [contact1.firstName caseInsensitiveCompare:contact2.firstName];
}
}
};
};
NSComparator contactsComparator = [Contact comparatorSortingNamesByFirstThenLast:firstNameOrdering];
return [signalContacts.allValues sortedArrayUsingComparator:contactsComparator];
}
- (NSArray<Contact *> *)signalContacts {

Loading…
Cancel
Save