Refine contact merging.

pull/1/head
Matthew Chen 6 years ago
parent 8eef940baa
commit 8337c3bd68

@ -345,16 +345,28 @@ NS_ASSUME_NONNULL_BEGIN
mergedCNContact.familyName = newCNContact.familyName.ows_stripped;
mergedCNContact.nameSuffix = newCNContact.nameSuffix.ows_stripped;
}
if (mergedCNContact.organizationName.ows_stripped.length < 1) {
mergedCNContact.organizationName = newCNContact.organizationName.ows_stripped;
}
// Phone Numbers
NSSet<PhoneNumber *> *existingPhoneNumberSet = [NSSet setWithArray:self.parsedPhoneNumbers];
NSMutableSet<PhoneNumber *> *existingPhoneNumberSet = [NSMutableSet setWithArray:self.parsedPhoneNumbers];
[existingPhoneNumberSet addObjectsFromArray:self.userTextPhoneNumbers];
NSMutableArray<CNLabeledValue<CNPhoneNumber *> *> *mergedPhoneNumbers = [mergedCNContact.phoneNumbers mutableCopy];
for (CNLabeledValue<CNPhoneNumber *> *labeledPhoneNumber in newCNContact.phoneNumbers) {
NSString *_Nullable unparsedPhoneNumber = labeledPhoneNumber.value.stringValue;
if ([existingPhoneNumberSet containsObject:unparsedPhoneNumber]) {
// Skip phone number if "unparsed" form is a duplicate.
continue;
}
PhoneNumber *_Nullable parsedPhoneNumber = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:labeledPhoneNumber.value.stringValue];
if (parsedPhoneNumber && ![existingPhoneNumberSet containsObject:parsedPhoneNumber]) {
[mergedPhoneNumbers addObject:labeledPhoneNumber];
if (parsedPhoneNumber && [existingPhoneNumberSet containsObject:parsedPhoneNumber]) {
// Skip phone number if "parsed" form is a duplicate.
continue;
}
[mergedPhoneNumbers addObject:labeledPhoneNumber];
}
mergedCNContact.phoneNumbers = mergedPhoneNumbers;

Loading…
Cancel
Save