diff --git a/Classes/Contact.m b/Classes/Contact.m index 5b1b79e41..8ee7bbf82 100644 --- a/Classes/Contact.m +++ b/Classes/Contact.m @@ -236,10 +236,8 @@ normSip = sip; CNInstantMessageAddress *cNSipMsgAddr; if ([normSip containsString:@"@"]) - cNSipMsgAddr = [[CNInstantMessageAddress alloc] - initWithUsername:[normSip componentsSeparatedByString:@"@"][0] - service:[normSip - componentsSeparatedByString:@"@"][1]]; + cNSipMsgAddr = [[CNInstantMessageAddress alloc] + initWithUsername:normSip service:[normSip componentsSeparatedByString:@"@"][1]]; else cNSipMsgAddr = [[CNInstantMessageAddress alloc] initWithUsername:normSip @@ -253,15 +251,14 @@ forKey:CNContactInstantMessageAddressesKey]; ret = TRUE; _sipAddresses[index] = normSip; - //_sipAddresses[index] = [sip substringFromIndex:1]; } else { normSip = sip; CNInstantMessageAddress *cNSipMsgAddr; - if ([normSip containsString:@"@"]) - cNSipMsgAddr = [[CNInstantMessageAddress alloc] - initWithUsername:[normSip componentsSeparatedByString:@"@"][0] - service:[normSip - componentsSeparatedByString:@"@"][1]]; + if ([[FastAddressBook normalizeSipURI:normSip] containsString:@"@"]) + cNSipMsgAddr = [[CNInstantMessageAddress alloc] + initWithUsername:sip + service:[[FastAddressBook normalizeSipURI:normSip] + componentsSeparatedByString:@"@"][1]]; else cNSipMsgAddr = [[CNInstantMessageAddress alloc] initWithUsername:normSip @@ -281,7 +278,7 @@ } if (ret) { - _sipAddresses[index] = [FastAddressBook normalizeSipURI:sip]; + _sipAddresses[index] = sip; } return ret; } @@ -401,7 +398,7 @@ if ([sip hasPrefix:@" "]) [_sipAddresses addObject:[sip substringFromIndex:1]]; else - [_sipAddresses addObject:[FastAddressBook normalizeSipURI:sip]]; + [_sipAddresses addObject:sip]; } return ret; } diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index ba59c388d..eb1dbf93b 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -52,17 +52,12 @@ } + (Contact *)getContact:(NSString *)address { - - for (id key in LinphoneManager.instance.fastAddressBook.addressBookMap) { - Contact *contact = - (Contact *)[LinphoneManager.instance.fastAddressBook.addressBookMap - objectForKey:key]; - if ([contact.sipAddresses count]) { - if ([contact.sipAddresses containsObject:address]) - return contact; - } - } - return nil; + if (LinphoneManager.instance.fastAddressBook != nil) { + @synchronized(LinphoneManager.instance.fastAddressBook.addressBookMap) { + return [LinphoneManager.instance.fastAddressBook.addressBookMap objectForKey:address]; + } + } + return nil; } + (Contact *)getContactWithAddress:(const LinphoneAddress *)address { @@ -415,12 +410,12 @@ void sync_address_book(ABAddressBookRef addressBook, CFDictionaryRef info, void @try { NSLog(@"Success %d", [store executeSaveRequest:saveRequest error:&saveError]); - [_addressBookMap setObject:contact forKey:cNContact]; } @catch (NSException *exception) { NSLog(@"=====>>>>> CNContact SaveRequest failed : description = %@", [exception description]); return FALSE; } + [self reloadAllContacts]; return TRUE; }