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.
		
		
		
		
		
			
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Objective-C
		
	
| //
 | |
| //  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | |
| //
 | |
| 
 | |
| #import "OWSUserProfile.h"
 | |
| #import <PromiseKit/AnyPromise.h>
 | |
| #import <SessionMessagingKit/OWSPrimaryStorage.h>
 | |
| #import <SessionMessagingKit/SSKEnvironment.h>
 | |
| #import <SessionMessagingKit/TSAccountManager.h>
 | |
| #import <SessionUtilitiesKit/SessionUtilitiesKit.h>
 | |
| #import <SignalCoreKit/Cryptography.h>
 | |
| #import <SignalCoreKit/NSObject+OWS.h>
 | |
| #import <SignalCoreKit/NSString+OWS.h>
 | |
| #import <YapDatabase/YapDatabaseConnection.h>
 | |
| #import <YapDatabase/YapDatabaseTransaction.h>
 | |
| #import <Curve25519Kit/Curve25519.h>
 | |
| #import <SessionMessagingKit/SessionMessagingKit-Swift.h>
 | |
| 
 | |
| NS_ASSUME_NONNULL_BEGIN
 | |
| 
 | |
| NSString *const kNSNotificationName_LocalProfileDidChange = @"kNSNotificationName_LocalProfileDidChange";
 | |
| NSString *const kNSNotificationName_OtherUsersProfileDidChange = @"kNSNotificationName_OtherUsersProfileDidChange";
 | |
| NSString *const kNSNotificationKey_ProfileRecipientId = @"kNSNotificationKey_ProfileRecipientId";
 | |
| 
 | |
| @interface OWSUserProfile ()
 | |
| 
 | |
| @end
 | |
| 
 | |
| @implementation OWSUserProfile
 | |
| 
 | |
| + (NSString *)profileAvatarFilepathWithFilename:(NSString *)filename
 | |
| {
 | |
|     if (filename.length <= 0) { return @""; };
 | |
| 
 | |
|     return [self.profileAvatarsDirPath stringByAppendingPathComponent:filename];
 | |
| }
 | |
| 
 | |
| + (NSString *)legacyProfileAvatarsDirPath
 | |
| {
 | |
|     return [[OWSFileSystem appDocumentDirectoryPath] stringByAppendingPathComponent:@"ProfileAvatars"];
 | |
| }
 | |
| 
 | |
| + (NSString *)sharedDataProfileAvatarsDirPath
 | |
| {
 | |
|     return [[OWSFileSystem appSharedDataDirectoryPath] stringByAppendingPathComponent:@"ProfileAvatars"];
 | |
| }
 | |
| 
 | |
| + (nullable NSError *)migrateToSharedData
 | |
| {
 | |
|     return [OWSFileSystem moveAppFilePath:self.legacyProfileAvatarsDirPath
 | |
|                        sharedDataFilePath:self.sharedDataProfileAvatarsDirPath];
 | |
| }
 | |
| 
 | |
| + (NSString *)profileAvatarsDirPath
 | |
| {
 | |
|     static NSString *profileAvatarsDirPath = nil;
 | |
|     static dispatch_once_t onceToken;
 | |
|     dispatch_once(&onceToken, ^{
 | |
|         profileAvatarsDirPath = self.sharedDataProfileAvatarsDirPath;
 | |
| 
 | |
|         [OWSFileSystem ensureDirectoryExists:profileAvatarsDirPath];
 | |
|     });
 | |
|     return profileAvatarsDirPath;
 | |
| }
 | |
| 
 | |
| + (void)resetProfileStorage
 | |
| {
 | |
|     NSError *error;
 | |
|     [[NSFileManager defaultManager] removeItemAtPath:[self profileAvatarsDirPath] error:&error];
 | |
| }
 | |
| 
 | |
| + (NSSet<NSString *> *)allProfileAvatarFilePaths
 | |
| {
 | |
|     NSString *profileAvatarsDirPath = self.profileAvatarsDirPath;
 | |
|     NSMutableSet<NSString *> *profileAvatarFilePaths = [NSMutableSet new];
 | |
| 
 | |
|     NSSet<SNContact *> *allContacts = [LKStorage.shared getAllContacts];
 | |
|     
 | |
|     for (SNContact *contact in allContacts) {
 | |
|         if (contact.profilePictureFileName == nil) { continue; }
 | |
|         NSString *filePath = [profileAvatarsDirPath stringByAppendingPathComponent:contact.profilePictureFileName];
 | |
|         [profileAvatarFilePaths addObject:filePath];
 | |
|     }
 | |
|     
 | |
|     return [profileAvatarFilePaths copy];
 | |
| }
 | |
| 
 | |
| @end
 | |
| 
 | |
| NS_ASSUME_NONNULL_END
 |