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.
		
		
		
		
		
			
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Objective-C
		
	
//
 | 
						|
//  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | 
						|
//
 | 
						|
 | 
						|
#import <SignalServiceKit/ProfileManagerProtocol.h>
 | 
						|
 | 
						|
NS_ASSUME_NONNULL_BEGIN
 | 
						|
 | 
						|
extern NSString *const kNSNotificationName_ProfileWhitelistDidChange;
 | 
						|
 | 
						|
extern const NSUInteger kOWSProfileManager_NameDataLength;
 | 
						|
extern const NSUInteger kOWSProfileManager_MaxAvatarDiameter;
 | 
						|
 | 
						|
@class OWSAES256Key;
 | 
						|
@class OWSMessageSender;
 | 
						|
@class TSThread;
 | 
						|
 | 
						|
// This class can be safely accessed and used from any thread.
 | 
						|
@interface OWSProfileManager : NSObject <ProfileManagerProtocol>
 | 
						|
 | 
						|
- (instancetype)init NS_UNAVAILABLE;
 | 
						|
 | 
						|
+ (instancetype)sharedManager;
 | 
						|
 | 
						|
- (void)resetProfileStorage;
 | 
						|
 | 
						|
+ (nullable NSError *)migrateToSharedData;
 | 
						|
 | 
						|
#pragma mark - Local Profile
 | 
						|
 | 
						|
// These two methods should only be called from the main thread.
 | 
						|
- (OWSAES256Key *)localProfileKey;
 | 
						|
// localUserProfileExists is true if there is _ANY_ local profile.
 | 
						|
- (BOOL)localProfileExists;
 | 
						|
// hasLocalProfile is true if there is a local profile with a name or avatar.
 | 
						|
- (BOOL)hasLocalProfile;
 | 
						|
- (nullable NSString *)localProfileName;
 | 
						|
- (nullable UIImage *)localProfileAvatarImage;
 | 
						|
- (void)ensureLocalProfileCached;
 | 
						|
 | 
						|
// This method is used to update the "local profile" state on the client
 | 
						|
// and the service.  Client state is only updated if service state is
 | 
						|
// successfully updated.
 | 
						|
//
 | 
						|
// This method should only be called from the main thread.
 | 
						|
- (void)updateLocalProfileName:(nullable NSString *)profileName
 | 
						|
                   avatarImage:(nullable UIImage *)avatarImage
 | 
						|
                       success:(void (^)(void))successBlock
 | 
						|
                       failure:(void (^)(void))failureBlock;
 | 
						|
 | 
						|
- (BOOL)isProfileNameTooLong:(nullable NSString *)profileName;
 | 
						|
 | 
						|
// The local profile state can fall out of sync with the service
 | 
						|
// (e.g. due to a botched profile update, for example).
 | 
						|
- (void)fetchLocalUsersProfile;
 | 
						|
 | 
						|
#pragma mark - Profile Whitelist
 | 
						|
 | 
						|
// These methods are for debugging.
 | 
						|
- (void)clearProfileWhitelist;
 | 
						|
- (void)logProfileWhitelist;
 | 
						|
- (void)regenerateLocalProfile;
 | 
						|
 | 
						|
- (void)addThreadToProfileWhitelist:(TSThread *)thread;
 | 
						|
 | 
						|
- (void)setContactRecipientIds:(NSArray<NSString *> *)contactRecipientIds;
 | 
						|
 | 
						|
#pragma mark - Other User's Profiles
 | 
						|
 | 
						|
// This method is for debugging.
 | 
						|
- (void)logUserProfiles;
 | 
						|
 | 
						|
- (nullable OWSAES256Key *)profileKeyForRecipientId:(NSString *)recipientId;
 | 
						|
 | 
						|
- (nullable NSString *)profileNameForRecipientId:(NSString *)recipientId;
 | 
						|
 | 
						|
- (nullable UIImage *)profileAvatarForRecipientId:(NSString *)recipientId;
 | 
						|
 | 
						|
- (void)updateProfileForRecipientId:(NSString *)recipientId
 | 
						|
               profileNameEncrypted:(nullable NSData *)profileNameEncrypted
 | 
						|
                      avatarUrlPath:(nullable NSString *)avatarUrlPath;
 | 
						|
 | 
						|
#pragma mark - User Interface
 | 
						|
 | 
						|
- (void)presentAddThreadToProfileWhitelist:(TSThread *)thread
 | 
						|
                        fromViewController:(UIViewController *)fromViewController
 | 
						|
                                   success:(void (^)(void))successHandler;
 | 
						|
 | 
						|
@end
 | 
						|
 | 
						|
NS_ASSUME_NONNULL_END
 |