|  |  |  | @ -95,6 +95,11 @@ NSString *const kOWSPrimaryStorageOWSContactsSyncingLastMessageKey | 
		
	
		
			
				|  |  |  |  |     [self sendSyncContactsMessageIfPossible]; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | - (YapDatabaseConnection *)editingDatabaseConnection | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     return OWSPrimaryStorage.sharedManager.dbReadWriteConnection; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | #pragma mark - Methods | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | - (void)sendSyncContactsMessageIfNecessary | 
		
	
	
		
			
				
					|  |  |  | @ -119,11 +124,13 @@ NSString *const kOWSPrimaryStorageOWSContactsSyncingLastMessageKey | 
		
	
		
			
				|  |  |  |  |                                                    identityManager:self.identityManager | 
		
	
		
			
				|  |  |  |  |                                                     profileManager:self.profileManager]; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         NSData *messageData = [syncContactsMessage buildPlainTextAttachmentData]; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         NSData *lastMessageData = | 
		
	
		
			
				|  |  |  |  |             [OWSPrimaryStorage.dbReadConnection objectForKey:kOWSPrimaryStorageOWSContactsSyncingLastMessageKey | 
		
	
		
			
				|  |  |  |  |                                                 inCollection:kOWSPrimaryStorageOWSContactsSyncingCollection]; | 
		
	
		
			
				|  |  |  |  |         __block NSData *messageData; | 
		
	
		
			
				|  |  |  |  |         __block NSData *lastMessageData; | 
		
	
		
			
				|  |  |  |  |         [self.editingDatabaseConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) { | 
		
	
		
			
				|  |  |  |  |             messageData = [syncContactsMessage buildPlainTextAttachmentDataWithTransaction:transaction]; | 
		
	
		
			
				|  |  |  |  |             lastMessageData = [transaction objectForKey:kOWSPrimaryStorageOWSContactsSyncingLastMessageKey | 
		
	
		
			
				|  |  |  |  |                                            inCollection:kOWSPrimaryStorageOWSContactsSyncingCollection]; | 
		
	
		
			
				|  |  |  |  |         }]; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         if (lastMessageData && [lastMessageData isEqual:messageData]) { | 
		
	
		
			
				|  |  |  |  |             // Ignore redundant contacts sync message. | 
		
	
	
		
			
				
					|  |  |  | @ -132,17 +139,16 @@ NSString *const kOWSPrimaryStorageOWSContactsSyncingLastMessageKey | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         self.isRequestInFlight = YES; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         DataSource *dataSource = | 
		
	
		
			
				|  |  |  |  |             [DataSourceValue dataSourceWithSyncMessage:[syncContactsMessage buildPlainTextAttachmentData]]; | 
		
	
		
			
				|  |  |  |  |         DataSource *dataSource = [DataSourceValue dataSourceWithSyncMessageData:messageData]; | 
		
	
		
			
				|  |  |  |  |         [self.messageSender enqueueTemporaryAttachment:dataSource | 
		
	
		
			
				|  |  |  |  |             contentType:OWSMimeTypeApplicationOctetStream | 
		
	
		
			
				|  |  |  |  |             inMessage:syncContactsMessage | 
		
	
		
			
				|  |  |  |  |             success:^{ | 
		
	
		
			
				|  |  |  |  |                 DDLogInfo(@"%@ Successfully sent contacts sync message.", self.logTag); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 [OWSPrimaryStorage.dbReadWriteConnection setObject:messageData | 
		
	
		
			
				|  |  |  |  |                                                             forKey:kOWSPrimaryStorageOWSContactsSyncingLastMessageKey | 
		
	
		
			
				|  |  |  |  |                                                       inCollection:kOWSPrimaryStorageOWSContactsSyncingCollection]; | 
		
	
		
			
				|  |  |  |  |                 [self.editingDatabaseConnection setObject:messageData | 
		
	
		
			
				|  |  |  |  |                                                    forKey:kOWSPrimaryStorageOWSContactsSyncingLastMessageKey | 
		
	
		
			
				|  |  |  |  |                                              inCollection:kOWSPrimaryStorageOWSContactsSyncingCollection]; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |                 dispatch_async(self.serialQueue, ^{ | 
		
	
		
			
				|  |  |  |  |                     self.isRequestInFlight = NO; | 
		
	
	
		
			
				
					|  |  |  | 
 |