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
pull/1/head
Michael Kirk 9 years ago
parent b4c504f61d
commit 027fa10730

@ -8,7 +8,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = "SignalServiceKit" 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.summary = "An Objective-C library for communicating with the Signal messaging service."
s.description = <<-DESC s.description = <<-DESC

@ -3,6 +3,8 @@
#import "SignalRecipient.h" #import "SignalRecipient.h"
NS_ASSUME_NONNULL_BEGIN
@class Contact; @class Contact;
@interface ContactsUpdater : NSObject @interface ContactsUpdater : NSObject
@ -21,3 +23,5 @@
success:(void (^)())success success:(void (^)())success
failure:(void (^)(NSError *error))failure; failure:(void (^)(NSError *error))failure;
@end @end
NS_ASSUME_NONNULL_END

@ -11,6 +11,8 @@
#import "TSNetworkManager.h" #import "TSNetworkManager.h"
#import "TSStorageManager.h" #import "TSStorageManager.h"
NS_ASSUME_NONNULL_BEGIN
@implementation ContactsUpdater @implementation ContactsUpdater
+ (instancetype)sharedUpdater { + (instancetype)sharedUpdater {
@ -51,19 +53,11 @@
failure:(void (^)(NSError *error))failure failure:(void (^)(NSError *error))failure
{ {
if (!identifier) { if (!identifier) {
NSError *error failure(OWSErrorWithCodeDescription(OWSErrorCodeInvalidMethodParameters, @"Cannot lookup nil identifier"));
= OWSErrorWithCodeDescription(OWSErrorCodeInvalidMethodParameters, @"Cannot lookup nil identifier");
BLOCK_SAFE_RUN(failure, error);
return; return;
} }
[self contactIntersectionWithSet:[NSSet setWithObject:identifier] [self contactIntersectionWithSet:[NSSet setWithObject:identifier] success:success failure:failure];
success:^(NSSet<NSString *> *matchedIds) {
BLOCK_SAFE_RUN(success, matchedIds);
}
failure:^(NSError *error) {
BLOCK_SAFE_RUN(failure, error);
}];
} }
- (void)updateSignalContactIntersectionWithABContacts:(NSArray<Contact *> *)abContacts - (void)updateSignalContactIntersectionWithABContacts:(NSArray<Contact *> *)abContacts
@ -77,7 +71,7 @@
} }
} }
__block NSMutableSet *recipientIds = [NSMutableSet set]; NSMutableSet *recipientIds = [NSMutableSet set];
[[TSStorageManager sharedManager] [[TSStorageManager sharedManager]
.dbConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) { .dbConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) {
NSArray *allRecipientKeys = [transaction allKeysInCollection:[SignalRecipient collection]]; NSArray *allRecipientKeys = [transaction allKeysInCollection:[SignalRecipient collection]];
@ -91,20 +85,21 @@
[recipientIds minusSet:matchedIds]; [recipientIds minusSet:matchedIds];
// Cleaning up unregistered identifiers // Cleaning up unregistered identifiers
[[TSStorageManager sharedManager] [[TSStorageManager sharedManager].dbConnection
.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) { readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
for (NSString *identifier in recipientIds) { for (NSString *identifier in recipientIds) {
SignalRecipient *recipient = SignalRecipient *recipient =
[SignalRecipient fetchObjectWithUniqueID:identifier transaction:transaction]; [SignalRecipient fetchObjectWithUniqueID:identifier
transaction:transaction];
[recipient removeWithTransaction:transaction]; [recipient removeWithTransaction:transaction];
} }
}]; }];
BLOCK_SAFE_RUN(success); DDLogInfo(@"%@ successfully intersected contacts.", self.tag);
success();
} }
failure:^(NSError *error) { failure:failure];
BLOCK_SAFE_RUN(failure, error);
}];
} }
- (void)contactIntersectionWithSet:(NSSet<NSString *> *)idSet - (void)contactIntersectionWithSet:(NSSet<NSString *> *)idSet
@ -131,7 +126,7 @@
NSString *identifier = [phoneNumbersByHashes objectForKey:hash]; NSString *identifier = [phoneNumbersByHashes objectForKey:hash];
if (!identifier) { 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; break;
} }
@ -170,12 +165,26 @@
} }
}]; }];
BLOCK_SAFE_RUN(success, [NSSet setWithArray:attributesForIdentifier.allKeys]); success([NSSet setWithArray:attributesForIdentifier.allKeys]);
} }
failure:^(NSURLSessionDataTask *task, NSError *error) { 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 @end
NS_ASSUME_NONNULL_END

@ -35,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN
success:^(NSSet<NSString *> *matchedIds) { success:^(NSSet<NSString *> *matchedIds) {
} }
failure:^(NSError *error) { 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]; [recipient saveWithTransaction:transaction];
} }

Loading…
Cancel
Save