diff --git a/Signal/src/contact/ContactsManager.m b/Signal/src/contact/ContactsManager.m index 6f1048afd..6357f1a68 100644 --- a/Signal/src/contact/ContactsManager.m +++ b/Signal/src/contact/ContactsManager.m @@ -181,9 +181,24 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in NSArray *sortedPeople = (__bridge_transfer NSArray *)allPeopleMutable; + NSPredicate* predicate = [NSPredicate predicateWithBlock: ^BOOL(id record, NSDictionary *bindings) { + ABMultiValueRef phoneNumbers = ABRecordCopyValue( (__bridge ABRecordRef)record, kABPersonPhoneProperty); + BOOL result = NO; + + for (CFIndex i = 0; i < ABMultiValueGetCount(phoneNumbers); i++) { + NSString* phoneNumber = (__bridge_transfer NSString*) ABMultiValueCopyValueAtIndex(phoneNumbers, i); + if ([phoneNumber length]>0) { + result = YES; + break; + } + } + CFRelease(phoneNumbers); + return result; + }]; CFRelease(allPeople); + NSArray* filteredContacts = [sortedPeople filteredArrayUsingPredicate:predicate]; - return [sortedPeople map:^id(id item) { + return [filteredContacts map:^id(id item) { return [self contactForRecord:(__bridge ABRecordRef)item]; }]; }