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
 |