|  |  | @ -74,6 +74,8 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan | 
			
		
	
		
		
			
				
					
					|  |  |  | - (void)addBlockedPhoneNumber:(NSString *)phoneNumber { |  |  |  | - (void)addBlockedPhoneNumber:(NSString *)phoneNumber { | 
			
		
	
		
		
			
				
					
					|  |  |  |     OWSAssert(phoneNumber.length > 0); |  |  |  |     OWSAssert(phoneNumber.length > 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     DDLogInfo(@"%@ addBlockedPhoneNumber: %@", self.tag, phoneNumber); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @synchronized (self) { |  |  |  |     @synchronized (self) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if ([_blockedPhoneNumberSet containsObject:phoneNumber]) { |  |  |  |         if ([_blockedPhoneNumberSet containsObject:phoneNumber]) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |             return; | 
			
		
	
	
		
		
			
				
					|  |  | @ -88,6 +90,8 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan | 
			
		
	
		
		
			
				
					
					|  |  |  | - (void)removeBlockedPhoneNumber:(NSString *)phoneNumber { |  |  |  | - (void)removeBlockedPhoneNumber:(NSString *)phoneNumber { | 
			
		
	
		
		
			
				
					
					|  |  |  |     OWSAssert(phoneNumber.length > 0); |  |  |  |     OWSAssert(phoneNumber.length > 0); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     DDLogInfo(@"%@ removeBlockedPhoneNumber: %@", self.tag, phoneNumber); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @synchronized (self) { |  |  |  |     @synchronized (self) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (![_blockedPhoneNumberSet containsObject:phoneNumber]) { |  |  |  |         if (![_blockedPhoneNumberSet containsObject:phoneNumber]) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |             return; | 
			
		
	
	
		
		
			
				
					|  |  | @ -103,6 +107,8 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     OWSAssert(blockedPhoneNumbers != nil); |  |  |  |     OWSAssert(blockedPhoneNumbers != nil); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     DDLogInfo(@"%@ setBlockedPhoneNumbers: %d", self.tag, (int)blockedPhoneNumbers.count); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @synchronized (self) { |  |  |  |     @synchronized (self) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         NSSet *newSet = [NSSet setWithArray:blockedPhoneNumbers]; |  |  |  |         NSSet *newSet = [NSSet setWithArray:blockedPhoneNumbers]; | 
			
		
	
		
		
			
				
					
					|  |  |  |         if ([_blockedPhoneNumberSet isEqualToSet:newSet]) { |  |  |  |         if ([_blockedPhoneNumberSet isEqualToSet:newSet]) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -157,6 +163,8 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     OWSAssert(blockedPhoneNumbers); |  |  |  |     OWSAssert(blockedPhoneNumbers); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     DDLogInfo(@"%@ saveBlockedPhoneNumbers", self.tag); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     [_storageManager setObject:blockedPhoneNumbers |  |  |  |     [_storageManager setObject:blockedPhoneNumbers | 
			
		
	
		
		
			
				
					
					|  |  |  |                         forKey:kTSStorageManager_BlockedPhoneNumbersKey |  |  |  |                         forKey:kTSStorageManager_BlockedPhoneNumbersKey | 
			
		
	
		
		
			
				
					
					|  |  |  |                   inCollection:kTSStorageManager_BlockedPhoneNumbersCollection]; |  |  |  |                   inCollection:kTSStorageManager_BlockedPhoneNumbersCollection]; | 
			
		
	
	
		
		
			
				
					|  |  | @ -176,6 +184,7 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan | 
			
		
	
		
		
			
				
					
					|  |  |  |                          inCollection:kTSStorageManager_BlockedPhoneNumbersCollection]; |  |  |  |                          inCollection:kTSStorageManager_BlockedPhoneNumbersCollection]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     NSSet *syncedBlockedPhoneNumberSet = [[NSSet alloc] initWithArray:(syncedBlockedPhoneNumbers ?: [NSArray new])]; |  |  |  |     NSSet *syncedBlockedPhoneNumberSet = [[NSSet alloc] initWithArray:(syncedBlockedPhoneNumbers ?: [NSArray new])]; | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (![_blockedPhoneNumberSet isEqualToSet:syncedBlockedPhoneNumberSet]) { |  |  |  |     if (![_blockedPhoneNumberSet isEqualToSet:syncedBlockedPhoneNumberSet]) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         DDLogInfo(@"%@ retrying sync of blocked phone numbers", self.tag); | 
			
		
	
		
		
			
				
					
					|  |  |  |         dispatch_async(dispatch_get_main_queue(), ^{ |  |  |  |         dispatch_async(dispatch_get_main_queue(), ^{ | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self sendBlockedPhoneNumbersMessage:blockedPhoneNumbers]; |  |  |  |             [self sendBlockedPhoneNumbersMessage:blockedPhoneNumbers]; | 
			
		
	
		
		
			
				
					
					|  |  |  |         }); |  |  |  |         }); | 
			
		
	
	
		
		
			
				
					|  |  | @ -191,13 +200,13 @@ NSString *const kTSStorageManager_SyncedBlockedPhoneNumbersKey = @"kTSStorageMan | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     [self.messageSender sendMessage:message |  |  |  |     [self.messageSender sendMessage:message | 
			
		
	
		
		
			
				
					
					|  |  |  |         success:^{ |  |  |  |         success:^{ | 
			
		
	
		
		
			
				
					
					|  |  |  |             DDLogInfo(@"%@ Successfully sent blocked phone numbers", self.tag); |  |  |  |             DDLogInfo(@"%@ Successfully sent blocked phone numbers sync message", self.tag); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             // Record the last set of "blocked phone numbers" which we successfully synced. |  |  |  |             // Record the last set of "blocked phone numbers" which we successfully synced. | 
			
		
	
		
		
			
				
					
					|  |  |  |             [self saveSyncedBlockedPhoneNumbers:blockedPhoneNumbers]; |  |  |  |             [self saveSyncedBlockedPhoneNumbers:blockedPhoneNumbers]; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         failure:^(NSError *error) { |  |  |  |         failure:^(NSError *error) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             DDLogError(@"%@ Failed to send blocked phone numbers with error: %@", self.tag, error); |  |  |  |             DDLogError(@"%@ Failed to send blocked phone numbers sync message with error: %@", self.tag, error); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             // TODO: We might want to retry more often than just app launch. |  |  |  |             // TODO: We might want to retry more often than just app launch. | 
			
		
	
		
		
			
				
					
					|  |  |  |         }]; |  |  |  |         }]; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |