From ff9729f421176ed888a9365ce54b18ebfe0b1694 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 28 Sep 2016 12:09:37 -0400 Subject: [PATCH] Avoid blocking app launch // FREEBIE --- src/Account/TSAccountManager.h | 2 +- src/Account/TSAccountManager.m | 5 ++++ src/Storage/TSStorageManager+keyingMaterial.h | 2 +- src/Storage/TSStorageManager+keyingMaterial.m | 23 +++++++++++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/Account/TSAccountManager.h b/src/Account/TSAccountManager.h index ff7e6fade..4d5c192eb 100644 --- a/src/Account/TSAccountManager.h +++ b/src/Account/TSAccountManager.h @@ -21,8 +21,8 @@ typedef void (^failedBlock)(NSError *error); * * @return registered or not */ - + (BOOL)isRegistered; ++ (void)runIfRegistered:(void (^)())block; /** * Returns registered number diff --git a/src/Account/TSAccountManager.m b/src/Account/TSAccountManager.m index 28432c0f0..3b265940a 100644 --- a/src/Account/TSAccountManager.m +++ b/src/Account/TSAccountManager.m @@ -40,6 +40,11 @@ return [TSStorageManager localNumber] ? YES : NO; } ++ (void)runIfRegistered:(void (^)())block +{ + [[TSStorageManager sharedManager] runIfHasLocalNumber:block]; +} + + (void)didRegister { TSAccountManager *sharedManager = [self sharedInstance]; __strong NSString *phoneNumber = sharedManager.phoneNumberAwaitingVerification; diff --git a/src/Storage/TSStorageManager+keyingMaterial.h b/src/Storage/TSStorageManager+keyingMaterial.h index 822de6904..3a988662e 100644 --- a/src/Storage/TSStorageManager+keyingMaterial.h +++ b/src/Storage/TSStorageManager+keyingMaterial.h @@ -33,8 +33,8 @@ * * @return E164 string of the registered phone number */ - + (NSString *)localNumber; +- (void)runIfHasLocalNumber:(void (^)())block; + (void)storeServerToken:(NSString *)authToken signalingKey:(NSString *)signalingKey; diff --git a/src/Storage/TSStorageManager+keyingMaterial.m b/src/Storage/TSStorageManager+keyingMaterial.m index ab9436c83..0a8431400 100644 --- a/src/Storage/TSStorageManager+keyingMaterial.m +++ b/src/Storage/TSStorageManager+keyingMaterial.m @@ -14,6 +14,17 @@ return [[self sharedManager] stringForKey:TSStorageRegisteredNumberKey inCollection:TSStorageUserAccountCollection]; } +- (void)runIfHasLocalNumber:(void (^)())block +{ + [self.newDatabaseConnection asyncReadWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) { + if ([transaction objectForKey:TSStorageRegisteredNumberKey inCollection:TSStorageUserAccountCollection]) { + block(); + } else { + DDLogDebug(@"%@ Skipping block since no local number is registered", self.tag); + } + }]; +} + + (NSString *)signalingKey { return [[self sharedManager] stringForKey:TSStorageServerSignalingKey inCollection:TSStorageUserAccountCollection]; } @@ -44,4 +55,16 @@ }]; } +#pragma mark - Logging + ++ (NSString *)tag +{ + return [NSString stringWithFormat:@"[%@]", self.class]; +} + +- (NSString *)tag +{ + return self.class.tag; +} + @end