From 027fa10730d6521aceb1d55581d4f2c7ec9d1cd7 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Mon, 7 Nov 2016 09:39:32 -0500 Subject: [PATCH] Only dispatch async at top level. Previously each method was dispatching it's callbacks async. This is a waste of code, processing, and makes crash logs impenetrable. // FREEBIE --- SignalServiceKit.podspec | 2 +- src/Contacts/ContactsUpdater.h | 4 ++ src/Contacts/ContactsUpdater.m | 75 ++++++++++++++------------ src/Contacts/Threads/TSContactThread.m | 2 +- 4 files changed, 48 insertions(+), 35 deletions(-) diff --git a/SignalServiceKit.podspec b/SignalServiceKit.podspec index 0238ded82..7c40071e2 100644 --- a/SignalServiceKit.podspec +++ b/SignalServiceKit.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = "SignalServiceKit" - s.version = "0.5.0" + s.version = "0.5.1" s.summary = "An Objective-C library for communicating with the Signal messaging service." s.description = <<-DESC diff --git a/src/Contacts/ContactsUpdater.h b/src/Contacts/ContactsUpdater.h index cacdbf75a..d5e9dffbb 100644 --- a/src/Contacts/ContactsUpdater.h +++ b/src/Contacts/ContactsUpdater.h @@ -3,6 +3,8 @@ #import "SignalRecipient.h" +NS_ASSUME_NONNULL_BEGIN + @class Contact; @interface ContactsUpdater : NSObject @@ -21,3 +23,5 @@ success:(void (^)())success failure:(void (^)(NSError *error))failure; @end + +NS_ASSUME_NONNULL_END diff --git a/src/Contacts/ContactsUpdater.m b/src/Contacts/ContactsUpdater.m index 7d3cf997f..ec9639503 100644 --- a/src/Contacts/ContactsUpdater.m +++ b/src/Contacts/ContactsUpdater.m @@ -11,6 +11,8 @@ #import "TSNetworkManager.h" #import "TSStorageManager.h" +NS_ASSUME_NONNULL_BEGIN + @implementation ContactsUpdater + (instancetype)sharedUpdater { @@ -50,20 +52,12 @@ success:(void (^)(NSSet *matchedIds))success failure:(void (^)(NSError *error))failure { - if(!identifier) { - NSError *error - = OWSErrorWithCodeDescription(OWSErrorCodeInvalidMethodParameters, @"Cannot lookup nil identifier"); - BLOCK_SAFE_RUN(failure, error); + if (!identifier) { + failure(OWSErrorWithCodeDescription(OWSErrorCodeInvalidMethodParameters, @"Cannot lookup nil identifier")); return; } - [self contactIntersectionWithSet:[NSSet setWithObject:identifier] - success:^(NSSet *matchedIds) { - BLOCK_SAFE_RUN(success, matchedIds); - } - failure:^(NSError *error) { - BLOCK_SAFE_RUN(failure, error); - }]; + [self contactIntersectionWithSet:[NSSet setWithObject:identifier] success:success failure:failure]; } - (void)updateSignalContactIntersectionWithABContacts:(NSArray *)abContacts @@ -77,7 +71,7 @@ } } - __block NSMutableSet *recipientIds = [NSMutableSet set]; + NSMutableSet *recipientIds = [NSMutableSet set]; [[TSStorageManager sharedManager] .dbConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) { NSArray *allRecipientKeys = [transaction allKeysInCollection:[SignalRecipient collection]]; @@ -87,24 +81,25 @@ NSMutableSet *allContacts = [[abPhoneNumbers setByAddingObjectsFromSet:recipientIds] mutableCopy]; [self contactIntersectionWithSet:allContacts - success:^(NSSet *matchedIds) { - [recipientIds minusSet:matchedIds]; - - // Cleaning up unregistered identifiers - [[TSStorageManager sharedManager] - .dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) { - for (NSString *identifier in recipientIds) { - SignalRecipient *recipient = - [SignalRecipient fetchObjectWithUniqueID:identifier transaction:transaction]; - [recipient removeWithTransaction:transaction]; - } - }]; - - BLOCK_SAFE_RUN(success); - } - failure:^(NSError *error) { - BLOCK_SAFE_RUN(failure, error); - }]; + success:^(NSSet *matchedIds) { + [recipientIds minusSet:matchedIds]; + + // Cleaning up unregistered identifiers + [[TSStorageManager sharedManager].dbConnection + readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { + for (NSString *identifier in recipientIds) { + SignalRecipient *recipient = + [SignalRecipient fetchObjectWithUniqueID:identifier + transaction:transaction]; + + [recipient removeWithTransaction:transaction]; + } + }]; + + DDLogInfo(@"%@ successfully intersected contacts.", self.tag); + success(); + } + failure:failure]; } - (void)contactIntersectionWithSet:(NSSet *)idSet @@ -131,7 +126,7 @@ NSString *identifier = [phoneNumbersByHashes objectForKey:hash]; if (!identifier) { - DDLogWarn(@"An interesecting hash wasn't found in the mapping."); + DDLogWarn(@"%@ An interesecting hash wasn't found in the mapping.", self.tag); break; } @@ -170,12 +165,26 @@ } }]; - BLOCK_SAFE_RUN(success, [NSSet setWithArray:attributesForIdentifier.allKeys]); + success([NSSet setWithArray:attributesForIdentifier.allKeys]); } failure:^(NSURLSessionDataTask *task, NSError *error) { - BLOCK_SAFE_RUN(failure, error); + failure(error); }]; }); } +#pragma mark - Logging + ++ (NSString *)tag +{ + return [NSString stringWithFormat:@"[%@]", self.class]; +} + +- (NSString *)tag +{ + return self.class.tag; +} + @end + +NS_ASSUME_NONNULL_END diff --git a/src/Contacts/Threads/TSContactThread.m b/src/Contacts/Threads/TSContactThread.m index 0e2004fda..f4e97c9af 100644 --- a/src/Contacts/Threads/TSContactThread.m +++ b/src/Contacts/Threads/TSContactThread.m @@ -35,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN success:^(NSSet *matchedIds) { } failure:^(NSError *error) { - DDLogInfo(@"Failed to retreive call status. Will be retreived on next contact intersection."); + DDLogWarn(@"Failed to lookup contact with error:%@", error); }]; [recipient saveWithTransaction:transaction]; }