Respond to CR.

pull/1/head
Matthew Chen 6 years ago
parent 95387dd220
commit 39f1be65f3

@ -13,17 +13,13 @@ import SignalServiceKit
@objc @objc
public class AccountManager: NSObject { public class AccountManager: NSObject {
let textSecureAccountManager: TSAccountManager
var pushManager: PushManager { var pushManager: PushManager {
// dependency injection hack since PushManager has *alot* of dependencies, and would induce a cycle. // dependency injection hack since PushManager has *alot* of dependencies, and would induce a cycle.
return PushManager.shared() return PushManager.shared()
} }
@objc @objc
public required init(textSecureAccountManager: TSAccountManager) { public required override init() {
self.textSecureAccountManager = textSecureAccountManager
super.init() super.init()
SwiftSingletons.register(self) SwiftSingletons.register(self)
@ -39,6 +35,10 @@ public class AccountManager: NSObject {
return Environment.shared.preferences return Environment.shared.preferences
} }
private var tsAccountManager: TSAccountManager {
return TSAccountManager.sharedInstance()
}
// MARK: registration // MARK: registration
@objc func register(verificationCode: String, @objc func register(verificationCode: String,
@ -83,7 +83,7 @@ public class AccountManager: NSObject {
private func registerForTextSecure(verificationCode: String, private func registerForTextSecure(verificationCode: String,
pin: String?) -> Promise<Void> { pin: String?) -> Promise<Void> {
return Promise { fulfill, reject in return Promise { fulfill, reject in
self.textSecureAccountManager.verifyAccount(withCode: verificationCode, tsAccountManager.verifyAccount(withCode: verificationCode,
pin: pin, pin: pin,
success: fulfill, success: fulfill,
failure: reject) failure: reject)
@ -99,14 +99,14 @@ public class AccountManager: NSObject {
private func completeRegistration() { private func completeRegistration() {
Logger.info("") Logger.info("")
self.textSecureAccountManager.didRegister() tsAccountManager.didRegister()
} }
// MARK: Message Delivery // MARK: Message Delivery
func updatePushTokens(pushToken: String, voipToken: String) -> Promise<Void> { func updatePushTokens(pushToken: String, voipToken: String) -> Promise<Void> {
return Promise { fulfill, reject in return Promise { fulfill, reject in
self.textSecureAccountManager.registerForPushNotifications(pushToken: pushToken, tsAccountManager.registerForPushNotifications(pushToken: pushToken,
voipToken: voipToken, voipToken: voipToken,
success: fulfill, success: fulfill,
failure: reject) failure: reject)
@ -114,7 +114,7 @@ public class AccountManager: NSObject {
} }
func enableManualMessageFetching() -> Promise<Void> { func enableManualMessageFetching() -> Promise<Void> {
TSAccountManager.sharedInstance().setIsManualMessageFetchEnabled(true) tsAccountManager.setIsManualMessageFetchEnabled(true)
// Try to update the account attributes to reflect this change. // Try to update the account attributes to reflect this change.
let request = OWSRequestFactory.updateAttributesRequest() let request = OWSRequestFactory.updateAttributesRequest()

@ -63,7 +63,7 @@ NS_ASSUME_NONNULL_BEGIN
OWSAssertDebug(SSKEnvironment.shared.networkManager); OWSAssertDebug(SSKEnvironment.shared.networkManager);
OWSAssertDebug(SSKEnvironment.shared.contactsUpdater); OWSAssertDebug(SSKEnvironment.shared.contactsUpdater);
_accountManager = [[AccountManager alloc] initWithTextSecureAccountManager:[TSAccountManager sharedInstance]]; _accountManager = [[AccountManager alloc] init];
_notificationsManager = [NotificationsManager new]; _notificationsManager = [NotificationsManager new];
SSKEnvironment.shared.notificationsManager = self.notificationsManager; SSKEnvironment.shared.notificationsManager = self.notificationsManager;

@ -72,8 +72,9 @@ extern NSString *const kNSNotificationName_LocalNumberDidChange;
* @return registrationID; * @return registrationID;
*/ */
+ (uint32_t)getOrGenerateRegistrationId;
+ (uint32_t)getOrGenerateRegistrationId:(YapDatabaseReadWriteTransaction *)transaction; + (uint32_t)getOrGenerateRegistrationId:(YapDatabaseReadWriteTransaction *)transaction;
- (uint32_t)getOrGenerateRegistrationId;
- (uint32_t)getOrGenerateRegistrationId:(YapDatabaseReadWriteTransaction *)transaction;
#pragma mark - Register with phone number #pragma mark - Register with phone number

@ -192,11 +192,6 @@ NSString *const TSAccountManager_ManualMessageFetchKey = @"TSAccountManager_Manu
} }
} }
+ (uint32_t)getOrGenerateRegistrationId
{
return [[self sharedInstance] getOrGenerateRegistrationId];
}
+ (uint32_t)getOrGenerateRegistrationId:(YapDatabaseReadWriteTransaction *)transaction + (uint32_t)getOrGenerateRegistrationId:(YapDatabaseReadWriteTransaction *)transaction
{ {
return [[self sharedInstance] getOrGenerateRegistrationId:transaction]; return [[self sharedInstance] getOrGenerateRegistrationId:transaction];

@ -35,9 +35,9 @@ public enum OWSUDError: Error {
// MARK: - Unrestricted Access // MARK: - Unrestricted Access
@objc func allowUnrestrictedAccess() -> Bool @objc func shouldAllowUnrestrictedAccess() -> Bool
@objc func setAllowUnrestrictedAccess(_ value: Bool) @objc func setShouldAllowUnrestrictedAccess(_ value: Bool)
} }
// MARK: - // MARK: -
@ -179,12 +179,12 @@ public class OWSUDManagerImpl: NSObject, OWSUDManager {
// MARK: - Unrestricted Access // MARK: - Unrestricted Access
@objc @objc
public func allowUnrestrictedAccess() -> Bool { public func shouldAllowUnrestrictedAccess() -> Bool {
return dbConnection.bool(forKey: kUDUnrestrictedAccessKey, inCollection: kUDRecipientModeCollection, defaultValue: false) return dbConnection.bool(forKey: kUDUnrestrictedAccessKey, inCollection: kUDRecipientModeCollection, defaultValue: false)
} }
@objc @objc
public func setAllowUnrestrictedAccess(_ value: Bool) { public func setShouldAllowUnrestrictedAccess(_ value: Bool) {
dbConnection.setBool(value, forKey: kUDUnrestrictedAccessKey, inCollection: kUDRecipientModeCollection) dbConnection.setBool(value, forKey: kUDUnrestrictedAccessKey, inCollection: kUDRecipientModeCollection)
} }
} }

@ -22,6 +22,30 @@ NS_ASSUME_NONNULL_BEGIN
@implementation OWSRequestFactory @implementation OWSRequestFactory
#pragma mark - Dependencies
+ (TSAccountManager *)tsAccountManager
{
return TSAccountManager.sharedInstance;
}
+ (OWS2FAManager *)ows2FAManager
{
return OWS2FAManager.sharedManager;
}
+ (id<ProfileManagerProtocol>)profileManager
{
return SSKEnvironment.shared.profileManager;
}
+ (id<OWSUDManager>)udManager
{
return SSKEnvironment.shared.udManager;
}
#pragma mark -
+ (TSRequest *)enable2FARequestWithPin:(NSString *)pin + (TSRequest *)enable2FARequestWithPin:(NSString *)pin
{ {
OWSAssertDebug(pin.length > 0); OWSAssertDebug(pin.length > 0);
@ -174,11 +198,11 @@ NS_ASSUME_NONNULL_BEGIN
{ {
NSString *path = [textSecureAccountsAPI stringByAppendingString:textSecureAttributesAPI]; NSString *path = [textSecureAccountsAPI stringByAppendingString:textSecureAttributesAPI];
NSString *signalingKey = TSAccountManager.signalingKey; NSString *signalingKey = self.tsAccountManager.signalingKey;
OWSAssertDebug(signalingKey.length > 0); OWSAssertDebug(signalingKey.length > 0);
NSString *authKey = TSAccountManager.serverAuthToken; NSString *authKey = self.tsAccountManager.serverAuthToken;
OWSAssertDebug(authKey.length > 0); OWSAssertDebug(authKey.length > 0);
NSString *_Nullable pin = [OWS2FAManager.sharedManager pinCode]; NSString *_Nullable pin = [self.ows2FAManager pinCode];
NSDictionary<NSString *, id> *accountAttributes = NSDictionary<NSString *, id> *accountAttributes =
[self accountAttributesWithPin:pin signalingKey:signalingKey authKey:authKey]; [self accountAttributesWithPin:pin signalingKey:signalingKey authKey:authKey];
@ -246,17 +270,18 @@ NS_ASSUME_NONNULL_BEGIN
{ {
OWSAssertDebug(signalingKey.length > 0); OWSAssertDebug(signalingKey.length > 0);
OWSAssertDebug(authKey.length > 0); OWSAssertDebug(authKey.length > 0);
uint32_t registrationId = [TSAccountManager getOrGenerateRegistrationId]; uint32_t registrationId = [self.tsAccountManager getOrGenerateRegistrationId];
BOOL isManualMessageFetchEnabled = TSAccountManager.sharedInstance.isManualMessageFetchEnabled; BOOL isManualMessageFetchEnabled = self.tsAccountManager.isManualMessageFetchEnabled;
OWSAES256Key *profileKey = [SSKEnvironment.shared.profileManager localProfileKey]; OWSAES256Key *profileKey = [self.profileManager localProfileKey];
NSError *error; NSError *error;
SMKUDAccessKey *_Nullable udAccessKey = [[SMKUDAccessKey alloc] initWithProfileKey:profileKey.keyData error:&error]; SMKUDAccessKey *_Nullable udAccessKey = [[SMKUDAccessKey alloc] initWithProfileKey:profileKey.keyData error:&error];
if (error || !udAccessKey) { if (error || udAccessKey.keyData.length < 1) {
OWSLogError(@"Could not determine UD access key: %@.", error); // Crash app if UD cannot be enabled.
OWSFail(@"Could not determine UD access key: %@.", error);
} }
BOOL allowUnrestrictedUD = [SSKEnvironment.shared.udManager allowUnrestrictedAccess] && udAccessKey != nil; BOOL allowUnrestrictedUD = [self.udManager shouldAllowUnrestrictedAccess] && udAccessKey != nil;
NSMutableDictionary *accountAttributes = [@{ NSMutableDictionary *accountAttributes = [@{
@"signalingKey" : signalingKey, @"signalingKey" : signalingKey,
@ -266,14 +291,14 @@ NS_ASSUME_NONNULL_BEGIN
@"fetchesMessages" : @(isManualMessageFetchEnabled), // devices that don't support push must tell the server @"fetchesMessages" : @(isManualMessageFetchEnabled), // devices that don't support push must tell the server
// they fetch messages manually // they fetch messages manually
@"registrationId" : [NSString stringWithFormat:@"%i", registrationId], @"registrationId" : [NSString stringWithFormat:@"%i", registrationId],
@"unidentifiedAccessKey" : udAccessKey.keyData.base64EncodedString,
@"unrestrictedUnidentifiedAccess" : @(allowUnrestrictedUD),
} mutableCopy]; } mutableCopy];
if (pin.length > 0) { if (pin.length > 0) {
accountAttributes[@"pin"] = pin; accountAttributes[@"pin"] = pin;
} }
if (udAccessKey.keyData.length > 0) {
accountAttributes[@"unidentifiedAccessKey"] = udAccessKey.keyData.base64EncodedString;
accountAttributes[@"unrestrictedUnidentifiedAccess"] = @(allowUnrestrictedUD);
}
return [accountAttributes copy]; return [accountAttributes copy];
} }

@ -46,16 +46,16 @@ public class OWSFakeUDManager: NSObject, OWSUDManager {
// MARK: - Unrestricted Access // MARK: - Unrestricted Access
private var _allowUnrestrictedAccess = false private var _shouldAllowUnrestrictedAccess = false
@objc @objc
public func allowUnrestrictedAccess() -> Bool { public func shouldAllowUnrestrictedAccess() -> Bool {
return _allowUnrestrictedAccess return _shouldAllowUnrestrictedAccess
} }
@objc @objc
public func setAllowUnrestrictedAccess(_ value: Bool) { public func setShouldAllowUnrestrictedAccess(_ value: Bool) {
_allowUnrestrictedAccess = value _shouldAllowUnrestrictedAccess = value
} }
} }

Loading…
Cancel
Save