@ -6,10 +6,12 @@
#import "ContactsManagerProtocol . h "
#import "FunctionalUtil . h "
#import "Util . h "
#import < libPhoneNumber - iOS / NBPhoneNumber . h >
@ interface PhoneNumberUtil ( )
@ property ( nonatomic , readonly ) NSMutableDictionary * countryCodesFromCallingCodeCache ;
@ property ( nonatomic , readonly ) NSCache * parsedPhoneNumberCache ;
@ end
@ -32,6 +34,7 @@
if ( self ) {
_nbPhoneNumberUtil = [ [ NBPhoneNumberUtil alloc ] init ] ;
_countryCodesFromCallingCodeCache = [ NSMutableDictionary new ] ;
_parsedPhoneNumberCache = [ NSCache new ] ;
OWSSingletonAssert ( ) ;
}
@ -39,6 +42,37 @@
return self ;
}
- ( nullable NBPhoneNumber * ) parse : ( NSString * ) numberToParse
defaultRegion : ( NSString * ) defaultRegion
error : ( NSError * * ) error
{
NSString * hashKey = [ NSString stringWithFormat : @ "numberToParse : %@defaultRegion:%@", numberToParse, defaultRegion];
NBPhoneNumber * result = [ self . parsedPhoneNumberCache objectForKey : hashKey ] ;
if ( !result ) {
result = [ self . nbPhoneNumberUtil parse : numberToParse defaultRegion : defaultRegion error : error ] ;
if ( result ) {
[ self . parsedPhoneNumberCache setObject : result forKey : hashKey ] ;
} else {
[ self . parsedPhoneNumberCache setObject : [ NSNull null ] forKey : hashKey ] ;
}
}
if ( [ result class ] == [ NSNull class ] ) {
return nil ;
} else {
return result ;
}
}
- ( NSString * ) format : ( NBPhoneNumber * ) phoneNumber
numberFormat : ( NBEPhoneNumberFormat ) numberFormat
error : ( NSError * * ) error
{
return [ self . nbPhoneNumberUtil format : phoneNumber numberFormat : numberFormat error : error ] ;
}
/ / country code - > country name
+ ( NSString * ) countryNameFromCountryCode : ( NSString * ) countryCode {
NSDictionary * countryCodeComponent = @ { NSLocaleCountryCode : countryCode } ;