mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			171 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C
		
	
		
		
			
		
	
	
			171 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C
		
	
| 
								 
											5 years ago
										 
									 | 
							
								//
							 | 
						||
| 
								 | 
							
								//  Copyright (c) 2019 Open Whisper Systems. All rights reserved.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								#import <Foundation/Foundation.h>
							 | 
						||
| 
								 
											5 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								NS_ASSUME_NONNULL_BEGIN
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								extern NSString *const TSRegistrationErrorDomain;
							 | 
						||
| 
								 | 
							
								extern NSString *const TSRegistrationErrorUserInfoHTTPStatus;
							 | 
						||
| 
								 | 
							
								extern NSString *const RegistrationStateDidChangeNotification;
							 | 
						||
| 
								 | 
							
								extern NSString *const kNSNotificationName_LocalNumberDidChange;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@class AnyPromise;
							 | 
						||
| 
								 | 
							
								@class OWSPrimaryStorage;
							 | 
						||
| 
								 | 
							
								@class TSNetworkManager;
							 | 
						||
| 
								 | 
							
								@class YapDatabaseReadTransaction;
							 | 
						||
| 
								 | 
							
								@class YapDatabaseReadWriteTransaction;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef NS_ENUM(NSUInteger, OWSRegistrationState) {
							 | 
						||
| 
								 | 
							
								    OWSRegistrationState_Unregistered,
							 | 
						||
| 
								 | 
							
								    OWSRegistrationState_PendingBackupRestore,
							 | 
						||
| 
								 | 
							
								    OWSRegistrationState_Registered,
							 | 
						||
| 
								 | 
							
								    OWSRegistrationState_Deregistered,
							 | 
						||
| 
								 | 
							
								    OWSRegistrationState_Reregistering,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@interface TSAccountManager : NSObject
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@property (nonatomic, nullable) NSString *phoneNumberAwaitingVerification;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma mark - Initializers
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (instancetype)init NS_UNAVAILABLE;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (instancetype)initWithPrimaryStorage:(OWSPrimaryStorage *)primaryStorage NS_DESIGNATED_INITIALIZER;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								+ (instancetype)sharedInstance;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (OWSRegistrationState)registrationState;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *  Returns if a user is registered or not
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  @return registered or not
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (BOOL)isRegistered;
							 | 
						||
| 
								 | 
							
								- (BOOL)isRegisteredAndReady;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *  Returns current phone number for this device, which may not yet have been registered.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  @return E164 formatted phone number
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (nullable NSString *)localNumber;
							 | 
						||
| 
								 | 
							
								- (nullable NSString *)localNumber;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// A variant of localNumber that never opens a "sneaky" transaction.
							 | 
						||
| 
								 | 
							
								- (nullable NSString *)storedOrCachedLocalNumber:(YapDatabaseReadTransaction *)transaction;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *  Symmetric key that's used to encrypt message payloads from the server,
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  @return signaling key
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (nullable NSString *)signalingKey;
							 | 
						||
| 
								 | 
							
								- (nullable NSString *)signalingKey;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *  The server auth token allows the Signal client to connect to the Signal server
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  @return server authentication token
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								+ (nullable NSString *)serverAuthToken;
							 | 
						||
| 
								 | 
							
								- (nullable NSString *)serverAuthToken;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *  The registration ID is unique to an installation of TextSecure, it allows to know if the app was reinstalled
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  @return registrationID;
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								+ (uint32_t)getOrGenerateRegistrationId:(YapDatabaseReadWriteTransaction *)transaction;
							 | 
						||
| 
								 | 
							
								- (uint32_t)getOrGenerateRegistrationId;
							 | 
						||
| 
								 | 
							
								- (uint32_t)getOrGenerateRegistrationId:(YapDatabaseReadWriteTransaction *)transaction;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma mark - Register with phone number
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)registerWithPhoneNumber:(NSString *)phoneNumber
							 | 
						||
| 
								 | 
							
								                   captchaToken:(nullable NSString *)captchaToken
							 | 
						||
| 
								 | 
							
								                        success:(void (^)(void))successBlock
							 | 
						||
| 
								 | 
							
								                        failure:(void (^)(NSError *error))failureBlock
							 | 
						||
| 
								 | 
							
								                smsVerification:(BOOL)isSMS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)rerequestSMSWithCaptchaToken:(nullable NSString *)captchaToken
							 | 
						||
| 
								 | 
							
								                             success:(void (^)(void))successBlock
							 | 
						||
| 
								 | 
							
								                             failure:(void (^)(NSError *error))failureBlock;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)rerequestVoiceWithCaptchaToken:(nullable NSString *)captchaToken
							 | 
						||
| 
								 | 
							
								                               success:(void (^)(void))successBlock
							 | 
						||
| 
								 | 
							
								                               failure:(void (^)(NSError *error))failureBlock;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)verifyAccountWithCode:(NSString *)verificationCode
							 | 
						||
| 
								 | 
							
								                          pin:(nullable NSString *)pin
							 | 
						||
| 
								 | 
							
								                      success:(void (^)(void))successBlock
							 | 
						||
| 
								 | 
							
								                      failure:(void (^)(NSError *error))failureBlock;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Called once registration is complete - meaning the following have succeeded:
							 | 
						||
| 
								 | 
							
								// - obtained signal server credentials
							 | 
						||
| 
								 | 
							
								// - uploaded pre-keys
							 | 
						||
| 
								 | 
							
								// - uploaded push tokens
							 | 
						||
| 
								 | 
							
								- (void)didRegister;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if TARGET_OS_IPHONE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *  Register's the device's push notification token with the server
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  @param pushToken Apple's Push Token
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								- (void)registerForPushNotificationsWithPushToken:(NSString *)pushToken
							 | 
						||
| 
								 | 
							
								                                        voipToken:(NSString *)voipToken
							 | 
						||
| 
								 | 
							
								                                   isForcedUpdate:(BOOL)isForcedUpdate
							 | 
						||
| 
								 | 
							
								                                          success:(void (^)(void))successHandler
							 | 
						||
| 
								 | 
							
								                                          failure:(void (^)(NSError *error))failureHandler
							 | 
						||
| 
								 | 
							
								    NS_SWIFT_NAME(registerForPushNotifications(pushToken:voipToken:isForcedUpdate:success:failure:));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								+ (void)unregisterTextSecureWithSuccess:(void (^)(void))success failure:(void (^)(NSError *error))failureBlock;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma mark - De-Registration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// De-registration reflects whether or not the "last known contact"
							 | 
						||
| 
								 | 
							
								// with the service was:
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// * A 403 from the service, indicating de-registration.
							 | 
						||
| 
								 | 
							
								// * A successful auth'd request _or_ websocket connection indicating
							 | 
						||
| 
								 | 
							
								//   valid registration.
							 | 
						||
| 
								 | 
							
								- (BOOL)isDeregistered;
							 | 
						||
| 
								 | 
							
								- (void)setIsDeregistered:(BOOL)isDeregistered;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (BOOL)hasPendingBackupRestoreDecision;
							 | 
						||
| 
								 | 
							
								- (void)setHasPendingBackupRestoreDecision:(BOOL)value;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma mark - Re-registration
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Re-registration is the process of re-registering _with the same phone number_.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Returns YES on success.
							 | 
						||
| 
								 | 
							
								- (nullable NSString *)reregisterationPhoneNumber;
							 | 
						||
| 
								 | 
							
								- (BOOL)isReregistering;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma mark - Manual Message Fetch
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (BOOL)isManualMessageFetchEnabled;
							 | 
						||
| 
								 | 
							
								- (AnyPromise *)setIsManualMessageFetchEnabled:(BOOL)value __attribute__((warn_unused_result));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef DEBUG
							 | 
						||
| 
								 | 
							
								- (void)registerForTestsWithLocalNumber:(NSString *)localNumber;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (AnyPromise *)updateAccountAttributes __attribute__((warn_unused_result));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// This should only be used during the registration process.
							 | 
						||
| 
								 | 
							
								- (AnyPromise *)performUpdateAccountAttributes __attribute__((warn_unused_result));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NS_ASSUME_NONNULL_END
							 |