From 39d32192384405cc6b443b08b498487ea3c815b4 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 10 Apr 2019 09:41:49 -0600 Subject: [PATCH 1/2] Add option to manually disable circumvention. --- .../AdvancedSettingsTableViewController.m | 42 ++++++++---- .../translations/en.lproj/Localizable.strings | 6 +- .../src/Network/OWSCensorshipConfiguration.h | 1 + .../src/Network/OWSCensorshipConfiguration.m | 30 +++++---- .../src/Network/OWSSignalService.h | 1 + .../src/Network/OWSSignalService.m | 66 ++++++++++++++----- 6 files changed, 99 insertions(+), 47 deletions(-) diff --git a/Signal/src/ViewControllers/AppSettings/AdvancedSettingsTableViewController.m b/Signal/src/ViewControllers/AppSettings/AdvancedSettingsTableViewController.m index 8c7654ac2..f5a5fbda7 100644 --- a/Signal/src/ViewControllers/AppSettings/AdvancedSettingsTableViewController.m +++ b/Signal/src/ViewControllers/AppSettings/AdvancedSettingsTableViewController.m @@ -138,10 +138,17 @@ NS_ASSUME_NONNULL_BEGIN @"Table header for the 'censorship circumvention' section."); BOOL isAnySocketOpen = TSSocketManager.shared.highestSocketState == OWSWebSocketStateOpen; if (OWSSignalService.sharedInstance.hasCensoredPhoneNumber) { - censorshipSection.footerTitle - = NSLocalizedString(@"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_AUTO_ENABLED", + if (OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyDisabled) { + censorshipSection.footerTitle + = NSLocalizedString(@"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_MANUALLY_DISABLED", + @"Table footer for the 'censorship circumvention' section shown when censorship circumvention has " + @"been manually disabled."); + } else { + censorshipSection.footerTitle = NSLocalizedString( + @"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_AUTO_ENABLED", @"Table footer for the 'censorship circumvention' section shown when censorship circumvention has been " @"auto-enabled based on local phone number."); + } } else if (isAnySocketOpen) { censorshipSection.footerTitle = NSLocalizedString(@"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_WEBSOCKET_CONNECTED", @@ -170,20 +177,22 @@ NS_ASSUME_NONNULL_BEGIN // censorship circumvention unnecessarily, e.g. if they just don't have a valid // internet connection. OWSTableSwitchBlock isCensorshipCircumventionOnBlock = ^{ - if (OWSSignalService.sharedInstance.hasCensoredPhoneNumber) { - return YES; - } else { - return OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated; - } + return OWSSignalService.sharedInstance.isCensorshipCircumventionActive; }; Reachability *reachability = self.reachability; OWSTableSwitchBlock isManualCensorshipCircumventionOnEnabledBlock = ^{ - BOOL isAnySocketOpen = TSSocketManager.shared.highestSocketState == OWSWebSocketStateOpen; - BOOL value = (OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated - || (!OWSSignalService.sharedInstance.hasCensoredPhoneNumber && !isAnySocketOpen - && reachability.isReachable)); - return value; + OWSSignalService *service = OWSSignalService.sharedInstance; + if (service.isCensorshipCircumventionActive) { + return YES; + } else if (service.hasCensoredPhoneNumber && service.isCensorshipCircumventionManuallyDisabled) { + return YES; + } else if (TSSocketManager.shared.highestSocketState == OWSWebSocketStateOpen) { + return NO; + } else { + return reachability.isReachable; + } }; + [censorshipSection addItem:[OWSTableItem switchItemWithText:NSLocalizedString(@"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION", @"Label for the 'manual censorship circumvention' switch.") @@ -286,7 +295,14 @@ NS_ASSUME_NONNULL_BEGIN - (void)didToggleEnableCensorshipCircumventionSwitch:(UISwitch *)sender { - OWSSignalService.sharedInstance.isCensorshipCircumventionManuallyActivated = sender.isOn; + OWSSignalService *service = OWSSignalService.sharedInstance; + if (sender.isOn) { + service.isCensorshipCircumventionManuallyDisabled = NO; + service.isCensorshipCircumventionManuallyActivated = YES; + } else { + service.isCensorshipCircumventionManuallyDisabled = YES; + service.isCensorshipCircumventionManuallyActivated = NO; + } [self updateTableContents]; } diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index 3066ce983..509b5e69a 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -2033,6 +2033,9 @@ /* Table footer for the 'censorship circumvention' section shown when censorship circumvention has been auto-enabled based on local phone number. */ "SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_AUTO_ENABLED" = "Censorship circumvention has been activated based on your account's phone number."; +/* Table footer for the 'censorship circumvention' section shown when censorship circumvention has been manually disabled. */ +"SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_MANUALLY_DISABLED" = "You have manually disabled censorship circumvention."; + /* Table footer for the 'censorship circumvention' section shown when the app is not connected to the internet. */ "SETTINGS_ADVANCED_CENSORSHIP_CIRCUMVENTION_FOOTER_NO_CONNECTION" = "Censorship circumvention can only be activated when connected to the internet."; @@ -2390,9 +2393,6 @@ /* Pressing this button moves an archived thread from the archive back to the inbox */ "UNARCHIVE_ACTION" = "Unarchive"; -/* In Inbox view, last message label for thread with corrupted attachment. */ -"UNKNOWN_ATTACHMENT_LABEL" = "Unknown attachment"; - /* Message shown in conversation view that offers to block an unknown user. */ "UNKNOWN_CONTACT_BLOCK_OFFER" = "User not in your contacts. Would you like to block this user?"; diff --git a/SignalServiceKit/src/Network/OWSCensorshipConfiguration.h b/SignalServiceKit/src/Network/OWSCensorshipConfiguration.h index 1f16ac63f..5b0a16193 100644 --- a/SignalServiceKit/src/Network/OWSCensorshipConfiguration.h +++ b/SignalServiceKit/src/Network/OWSCensorshipConfiguration.h @@ -19,6 +19,7 @@ extern NSString *const OWSFrontingHost_GoogleQatar; // returns best censorship configuration for country code. Will return a default if one hasn't // been specifically configured. + (instancetype)censorshipConfigurationWithCountryCode:(NSString *)countryCode; ++ (instancetype)defaultConfiguration; + (BOOL)isCensoredPhoneNumber:(NSString *)e164PhoneNumber; diff --git a/SignalServiceKit/src/Network/OWSCensorshipConfiguration.m b/SignalServiceKit/src/Network/OWSCensorshipConfiguration.m index fd55f80a5..95bc3d279 100644 --- a/SignalServiceKit/src/Network/OWSCensorshipConfiguration.m +++ b/SignalServiceKit/src/Network/OWSCensorshipConfiguration.m @@ -38,22 +38,27 @@ NSString *const OWSFrontingHost_Default = @"www.google.com"; OWSAssertDebug(countryMetadadata); NSString *_Nullable specifiedDomain = countryMetadadata.frontingDomain; - - NSURL *baseURL; - AFSecurityPolicy *securityPolicy; - if (specifiedDomain.length > 0) { - NSString *frontingURLString = [NSString stringWithFormat:@"https://%@", specifiedDomain]; - baseURL = [NSURL URLWithString:frontingURLString]; - securityPolicy = [self securityPolicyForDomain:(NSString *)specifiedDomain]; - } else { - NSString *frontingURLString = [NSString stringWithFormat:@"https://%@", OWSFrontingHost_Default]; - baseURL = [NSURL URLWithString:frontingURLString]; - securityPolicy = [self securityPolicyForDomain:OWSFrontingHost_Default]; + if (specifiedDomain.length == 0) { + return self.defaultConfiguration; } - OWSAssertDebug(baseURL); + NSString *frontingURLString = [NSString stringWithFormat:@"https://%@", specifiedDomain]; + NSURL *_Nullable baseURL = [NSURL URLWithString:frontingURLString]; + if (baseURL == nil) { + OWSFailDebug(@"baseURL was unexpectedly nil with specifiedDomain: %@", specifiedDomain); + return self.defaultConfiguration; + } + AFSecurityPolicy *securityPolicy = [self securityPolicyForDomain:specifiedDomain]; OWSAssertDebug(securityPolicy); + return [[OWSCensorshipConfiguration alloc] initWithDomainFrontBaseURL:baseURL securityPolicy:securityPolicy]; +} + ++ (instancetype)defaultConfiguration +{ + NSString *frontingURLString = [NSString stringWithFormat:@"https://%@", OWSFrontingHost_Default]; + NSURL *baseURL = [NSURL URLWithString:frontingURLString]; + AFSecurityPolicy *securityPolicy = [self securityPolicyForDomain:OWSFrontingHost_Default]; return [[OWSCensorshipConfiguration alloc] initWithDomainFrontBaseURL:baseURL securityPolicy:securityPolicy]; } @@ -107,7 +112,6 @@ NSString *const OWSFrontingHost_Default = @"www.google.com"; }; } -// Returns nil if the phone number is not known to be censored + (BOOL)isCensoredPhoneNumber:(NSString *)e164PhoneNumber; { return [self censoredCountryCodeWithPhoneNumber:e164PhoneNumber].length > 0; diff --git a/SignalServiceKit/src/Network/OWSSignalService.h b/SignalServiceKit/src/Network/OWSSignalService.h index d209a40bd..0c1621b25 100644 --- a/SignalServiceKit/src/Network/OWSSignalService.h +++ b/SignalServiceKit/src/Network/OWSSignalService.h @@ -24,6 +24,7 @@ extern NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidCha @property (atomic, readonly) BOOL isCensorshipCircumventionActive; @property (atomic, readonly) BOOL hasCensoredPhoneNumber; @property (atomic) BOOL isCensorshipCircumventionManuallyActivated; +@property (atomic) BOOL isCensorshipCircumventionManuallyDisabled; @property (atomic, nullable) NSString *manualCensorshipCircumventionCountryCode; /// For interacting with the Signal Service diff --git a/SignalServiceKit/src/Network/OWSSignalService.m b/SignalServiceKit/src/Network/OWSSignalService.m index 75571d2d3..0e4d16e75 100644 --- a/SignalServiceKit/src/Network/OWSSignalService.m +++ b/SignalServiceKit/src/Network/OWSSignalService.m @@ -18,6 +18,8 @@ NS_ASSUME_NONNULL_BEGIN NSString *const kOWSPrimaryStorage_OWSSignalService = @"kTSStorageManager_OWSSignalService"; NSString *const kOWSPrimaryStorage_isCensorshipCircumventionManuallyActivated = @"kTSStorageManager_isCensorshipCircumventionManuallyActivated"; +NSString *const kOWSPrimaryStorage_isCensorshipCircumventionManuallyDisabled + = @"kTSStorageManager_isCensorshipCircumventionManuallyDisabled"; NSString *const kOWSPrimaryStorage_ManualCensorshipCircumventionDomain = @"kTSStorageManager_ManualCensorshipCircumventionDomain"; NSString *const kOWSPrimaryStorage_ManualCensorshipCircumventionCountryCode @@ -28,8 +30,6 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = @interface OWSSignalService () -@property (nonatomic, nullable, readonly) OWSCensorshipConfiguration *censorshipConfiguration; - @property (atomic) BOOL hasCensoredPhoneNumber; @property (atomic) BOOL isCensorshipCircumventionActive; @@ -116,10 +116,33 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = [self updateIsCensorshipCircumventionActive]; } +- (BOOL)isCensorshipCircumventionManuallyDisabled +{ + return [[OWSPrimaryStorage dbReadConnection] boolForKey:kOWSPrimaryStorage_isCensorshipCircumventionManuallyDisabled + inCollection:kOWSPrimaryStorage_OWSSignalService]; +} + +- (void)setIsCensorshipCircumventionManuallyDisabled:(BOOL)value +{ + [[OWSPrimaryStorage dbReadWriteConnection] setObject:@(value) + forKey:kOWSPrimaryStorage_isCensorshipCircumventionManuallyDisabled + inCollection:kOWSPrimaryStorage_OWSSignalService]; + + [self updateIsCensorshipCircumventionActive]; +} + + - (void)updateIsCensorshipCircumventionActive { - self.isCensorshipCircumventionActive - = (self.isCensorshipCircumventionManuallyActivated || self.hasCensoredPhoneNumber); + if (self.isCensorshipCircumventionManuallyDisabled) { + self.isCensorshipCircumventionActive = NO; + } else if (self.isCensorshipCircumventionManuallyActivated) { + self.isCensorshipCircumventionActive = YES; + } else if (self.hasCensoredPhoneNumber) { + self.isCensorshipCircumventionActive = YES; + } else { + self.isCensorshipCircumventionActive = NO; + } } - (void)setIsCensorshipCircumventionActive:(BOOL)isCensorshipCircumventionActive @@ -150,8 +173,9 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = - (AFHTTPSessionManager *)buildSignalServiceSessionManager { if (self.isCensorshipCircumventionActive) { - OWSLogInfo(@"using reflector HTTPSessionManager via: %@", self.censorshipConfiguration.domainFrontBaseURL); - return self.reflectorSignalServiceSessionManager; + OWSCensorshipConfiguration *censorshipConfiguration = [self buildCensorshipConfiguration]; + OWSLogInfo(@"using reflector HTTPSessionManager via: %@", censorshipConfiguration.domainFrontBaseURL); + return [self reflectorSignalServiceSessionManagerWithCensorshipConfiguration:censorshipConfiguration]; } else { return self.defaultSignalServiceSessionManager; } @@ -174,10 +198,9 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = return sessionManager; } -- (AFHTTPSessionManager *)reflectorSignalServiceSessionManager +- (AFHTTPSessionManager *)reflectorSignalServiceSessionManagerWithCensorshipConfiguration: + (OWSCensorshipConfiguration *)censorshipConfiguration { - OWSCensorshipConfiguration *censorshipConfiguration = self.censorshipConfiguration; - NSURLSessionConfiguration *sessionConf = NSURLSessionConfiguration.ephemeralSessionConfiguration; AFHTTPSessionManager *sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:censorshipConfiguration.domainFrontBaseURL @@ -186,7 +209,8 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = sessionManager.securityPolicy = censorshipConfiguration.domainFrontSecurityPolicy; sessionManager.requestSerializer = [AFJSONRequestSerializer serializer]; - [sessionManager.requestSerializer setValue:self.censorshipConfiguration.signalServiceReflectorHost forHTTPHeaderField:@"Host"]; + [sessionManager.requestSerializer setValue:censorshipConfiguration.signalServiceReflectorHost + forHTTPHeaderField:@"Host"]; sessionManager.responseSerializer = [AFJSONResponseSerializer serializer]; // Disable default cookie handling for all requests. sessionManager.requestSerializer.HTTPShouldHandleCookies = NO; @@ -199,8 +223,9 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = - (AFHTTPSessionManager *)CDNSessionManager { if (self.isCensorshipCircumventionActive) { - OWSLogInfo(@"using reflector CDNSessionManager via: %@", self.censorshipConfiguration.domainFrontBaseURL); - return self.reflectorCDNSessionManager; + OWSCensorshipConfiguration *censorshipConfiguration = [self buildCensorshipConfiguration]; + OWSLogInfo(@"using reflector CDNSessionManager via: %@", censorshipConfiguration.domainFrontBaseURL); + return [self reflectorCDNSessionManagerWithCensorshipConfiguration:censorshipConfiguration]; } else { return self.defaultCDNSessionManager; } @@ -223,12 +248,11 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = return sessionManager; } -- (AFHTTPSessionManager *)reflectorCDNSessionManager +- (AFHTTPSessionManager *)reflectorCDNSessionManagerWithCensorshipConfiguration: + (OWSCensorshipConfiguration *)censorshipConfiguration { NSURLSessionConfiguration *sessionConf = NSURLSessionConfiguration.ephemeralSessionConfiguration; - OWSCensorshipConfiguration *censorshipConfiguration = self.censorshipConfiguration; - AFHTTPSessionManager *sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:censorshipConfiguration.domainFrontBaseURL sessionConfiguration:sessionConf]; @@ -257,8 +281,10 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = #pragma mark - Manual Censorship Circumvention -- (nullable OWSCensorshipConfiguration *)censorshipConfiguration +- (OWSCensorshipConfiguration *)buildCensorshipConfiguration { + OWSAssertDebug(self.isCensorshipCircumventionActive); + if (self.isCensorshipCircumventionManuallyActivated) { NSString *countryCode = self.manualCensorshipCircumventionCountryCode; if (countryCode.length == 0) { @@ -272,9 +298,13 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = return configuration; } - OWSCensorshipConfiguration *configuration = + OWSCensorshipConfiguration *_Nullable configuration = [OWSCensorshipConfiguration censorshipConfigurationWithPhoneNumber:TSAccountManager.localNumber]; - return configuration; + if (configuration != nil) { + return configuration; + } + + return OWSCensorshipConfiguration.defaultConfiguration; } - (nullable NSString *)manualCensorshipCircumventionCountryCode From 21cffdfb5e5129abbfdfdbe429efb757a7aba283 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 10 Apr 2019 14:32:36 -0600 Subject: [PATCH 2/2] always specify default when accessing bool preference --- .../src/Messages/OWSReadReceiptManager.m | 19 +++---------------- .../src/Network/OWSSignalService.m | 6 ++++-- .../src/Storage/YapDatabaseConnection+OWS.h | 3 +-- .../src/Storage/YapDatabaseConnection+OWS.m | 5 ----- .../src/Storage/YapDatabaseTransaction+OWS.h | 1 - .../src/Storage/YapDatabaseTransaction+OWS.m | 8 -------- 6 files changed, 8 insertions(+), 34 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSReadReceiptManager.m b/SignalServiceKit/src/Messages/OWSReadReceiptManager.m index 8f703ca13..e08fe371f 100644 --- a/SignalServiceKit/src/Messages/OWSReadReceiptManager.m +++ b/SignalServiceKit/src/Messages/OWSReadReceiptManager.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "OWSReadReceiptManager.h" @@ -524,22 +524,9 @@ NSString *const OWSReadReceiptManagerAreReadReceiptsEnabled = @"areReadReceiptsE { // We don't need to worry about races around this cached value. if (!self.areReadReceiptsEnabledCached) { - // Default to NO. self.areReadReceiptsEnabledCached = @([self.dbConnection boolForKey:OWSReadReceiptManagerAreReadReceiptsEnabled - inCollection:OWSReadReceiptManagerCollection]); - } - - return [self.areReadReceiptsEnabledCached boolValue]; -} - -- (BOOL)areReadReceiptsEnabledWithTransaction:(YapDatabaseReadTransaction *)transaction -{ - if (!self.areReadReceiptsEnabledCached) { - [self.dbConnection readWithBlock:^(YapDatabaseReadTransaction *_Nonnull transaction) { - // Default to NO. - self.areReadReceiptsEnabledCached = [transaction objectForKey:OWSReadReceiptManagerAreReadReceiptsEnabled - inCollection:OWSReadReceiptManagerCollection]; - }]; + inCollection:OWSReadReceiptManagerCollection + defaultValue:NO]); } return [self.areReadReceiptsEnabledCached boolValue]; diff --git a/SignalServiceKit/src/Network/OWSSignalService.m b/SignalServiceKit/src/Network/OWSSignalService.m index 0e4d16e75..4784d21ce 100644 --- a/SignalServiceKit/src/Network/OWSSignalService.m +++ b/SignalServiceKit/src/Network/OWSSignalService.m @@ -104,7 +104,8 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = { return [[OWSPrimaryStorage dbReadConnection] boolForKey:kOWSPrimaryStorage_isCensorshipCircumventionManuallyActivated - inCollection:kOWSPrimaryStorage_OWSSignalService]; + inCollection:kOWSPrimaryStorage_OWSSignalService + defaultValue:NO]; } - (void)setIsCensorshipCircumventionManuallyActivated:(BOOL)value @@ -119,7 +120,8 @@ NSString *const kNSNotificationName_IsCensorshipCircumventionActiveDidChange = - (BOOL)isCensorshipCircumventionManuallyDisabled { return [[OWSPrimaryStorage dbReadConnection] boolForKey:kOWSPrimaryStorage_isCensorshipCircumventionManuallyDisabled - inCollection:kOWSPrimaryStorage_OWSSignalService]; + inCollection:kOWSPrimaryStorage_OWSSignalService + defaultValue:NO]; } - (void)setIsCensorshipCircumventionManuallyDisabled:(BOOL)value diff --git a/SignalServiceKit/src/Storage/YapDatabaseConnection+OWS.h b/SignalServiceKit/src/Storage/YapDatabaseConnection+OWS.h index bbbdffabb..1b9e3afab 100644 --- a/SignalServiceKit/src/Storage/YapDatabaseConnection+OWS.h +++ b/SignalServiceKit/src/Storage/YapDatabaseConnection+OWS.h @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import @@ -13,7 +13,6 @@ NS_ASSUME_NONNULL_BEGIN @interface YapDatabaseConnection (OWS) - (BOOL)hasObjectForKey:(NSString *)key inCollection:(NSString *)collection; -- (BOOL)boolForKey:(NSString *)key inCollection:(NSString *)collection; - (BOOL)boolForKey:(NSString *)key inCollection:(NSString *)collection defaultValue:(BOOL)defaultValue; - (double)doubleForKey:(NSString *)key inCollection:(NSString *)collection defaultValue:(double)defaultValue; - (int)intForKey:(NSString *)key inCollection:(NSString *)collection; diff --git a/SignalServiceKit/src/Storage/YapDatabaseConnection+OWS.m b/SignalServiceKit/src/Storage/YapDatabaseConnection+OWS.m index 12d47b08e..f21372f80 100644 --- a/SignalServiceKit/src/Storage/YapDatabaseConnection+OWS.m +++ b/SignalServiceKit/src/Storage/YapDatabaseConnection+OWS.m @@ -51,11 +51,6 @@ NS_ASSUME_NONNULL_BEGIN return [self objectForKey:key inCollection:collection ofExpectedType:[NSString class]]; } -- (BOOL)boolForKey:(NSString *)key inCollection:(NSString *)collection -{ - return [self boolForKey:key inCollection:collection defaultValue:NO]; -} - - (BOOL)boolForKey:(NSString *)key inCollection:(NSString *)collection defaultValue:(BOOL)defaultValue { NSNumber *_Nullable value = [self objectForKey:key inCollection:collection ofExpectedType:[NSNumber class]]; diff --git a/SignalServiceKit/src/Storage/YapDatabaseTransaction+OWS.h b/SignalServiceKit/src/Storage/YapDatabaseTransaction+OWS.h index d4326e8da..b533e367f 100644 --- a/SignalServiceKit/src/Storage/YapDatabaseTransaction+OWS.h +++ b/SignalServiceKit/src/Storage/YapDatabaseTransaction+OWS.h @@ -12,7 +12,6 @@ NS_ASSUME_NONNULL_BEGIN @interface YapDatabaseReadTransaction (OWS) -- (BOOL)boolForKey:(NSString *)key inCollection:(NSString *)collection; - (BOOL)boolForKey:(NSString *)key inCollection:(NSString *)collection defaultValue:(BOOL)defaultValue; - (int)intForKey:(NSString *)key inCollection:(NSString *)collection; - (nullable NSDate *)dateForKey:(NSString *)key inCollection:(NSString *)collection; diff --git a/SignalServiceKit/src/Storage/YapDatabaseTransaction+OWS.m b/SignalServiceKit/src/Storage/YapDatabaseTransaction+OWS.m index 626472aad..255663255 100644 --- a/SignalServiceKit/src/Storage/YapDatabaseTransaction+OWS.m +++ b/SignalServiceKit/src/Storage/YapDatabaseTransaction+OWS.m @@ -36,14 +36,6 @@ NS_ASSUME_NONNULL_BEGIN return [self objectForKey:key inCollection:collection ofExpectedType:[NSString class]]; } -- (BOOL)boolForKey:(NSString *)key inCollection:(NSString *)collection -{ - OWSAssertDebug(key.length > 0); - OWSAssertDebug(collection.length > 0); - - return [self boolForKey:key inCollection:collection defaultValue:NO]; -} - - (BOOL)boolForKey:(NSString *)key inCollection:(NSString *)collection defaultValue:(BOOL)defaultValue { OWSAssertDebug(key.length > 0);