From f6ced550030b38307442f1a3ad5bbd527ed5fe13 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 23 Feb 2021 10:56:16 +1100 Subject: [PATCH] Debug --- Session/Device Linking/LinkDeviceVC.swift | 27 ++++++++++++++----- .../MessageReceiver+Handling.swift | 16 ++--------- SessionMessagingKit/To Do/OWSUserProfile.h | 6 ++--- SessionMessagingKit/To Do/OWSUserProfile.m | 3 --- .../ConfigurationMessage+Convenience.swift | 2 +- SignalUtilitiesKit/To Do/OWSProfileManager.h | 4 +++ 6 files changed, 31 insertions(+), 27 deletions(-) diff --git a/Session/Device Linking/LinkDeviceVC.swift b/Session/Device Linking/LinkDeviceVC.swift index a26958dde..ccd016526 100644 --- a/Session/Device Linking/LinkDeviceVC.swift +++ b/Session/Device Linking/LinkDeviceVC.swift @@ -134,14 +134,29 @@ final class LinkDeviceVC : BaseVC, UIPageViewControllerDataSource, UIPageViewCon } } - @objc private func handleConfigurationMessageReceived() { + @objc private func handleConfigurationMessageReceived(_ notification: Notification) { + guard let profile = notification.object as? [String:Any?], let displayName = profile["displayName"] as? String else { return } + let profilePictureURL = profile["profilePictureURL"] as? String + let profileKeyAsData = profile["profileKey"] as? NSData + let profileKey = given(profileKeyAsData) { OWSAES256Key(data: $0 as Data)! } TSAccountManager.sharedInstance().phoneNumberAwaitingVerification = OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey - DispatchQueue.main.async { - self.navigationController!.dismiss(animated: true) { - let pnModeVC = PNModeVC() - self.navigationController!.setViewControllers([ pnModeVC ], animated: true) + let profileManager = OWSProfileManager.shared() + var userProfile: OWSUserProfile! + Storage.write(with: { transaction in + userProfile = profileManager.getLocalUserProfile(with: transaction) + userProfile.profileName = displayName + userProfile.avatarUrlPath = profilePictureURL + userProfile.profileKey = profileKey + userProfile.save(with: transaction) + }, completion: { + profileManager.downloadAvatar(for: userProfile) + DispatchQueue.main.async { + self.navigationController!.dismiss(animated: true) { + let pnModeVC = PNModeVC() + self.navigationController!.setViewControllers([ pnModeVC ], animated: true) + } } - } + }) } } diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index 15dff96e5..2bfd7dc60 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -145,22 +145,10 @@ extension MessageReceiver { private static func handleConfigurationMessage(_ message: ConfigurationMessage, using transaction: Any) { guard message.sender == getUserHexEncodedPublicKey(), !UserDefaults.standard[.hasSyncedConfiguration] else { return } let storage = SNMessagingKitConfiguration.shared.storage - let profileManager = SSKEnvironment.shared.profileManager - // Profile - let sessionID = getUserHexEncodedPublicKey() - let contact = Storage.shared.getContact(with: sessionID) ?? Contact(sessionID: sessionID) - if let displayName = message.displayName { - profileManager.updateProfileForContact(withID: sessionID, displayName: displayName, with: transaction as! YapDatabaseReadWriteTransaction) - contact.displayName = displayName - } - if let profileKey = message.profileKey, let profilePictureURL = message.profilePictureURL, profileKey.count == kAES256_KeyByteLength { - profileManager.setProfileKeyData(profileKey, forRecipientId: sessionID, avatarURL: profilePictureURL) - contact.profilePictureURL = profilePictureURL - contact.profilePictureEncryptionKey = OWSAES256Key(data: profileKey) - } // Notification UserDefaults.standard[.hasSyncedConfiguration] = true - NotificationCenter.default.post(name: .configurationMessageReceived, object: nil) + let profile: [String:Any?] = [ "displayName" : message.displayName, "profilePictureURL" : message.profilePictureURL, "profileKey" : message.profileKey ] + NotificationCenter.default.post(name: .configurationMessageReceived, object: profile) // Closed groups let allClosedGroupPublicKeys = storage.getUserClosedGroupPublicKeys() for closedGroup in message.closedGroups { diff --git a/SessionMessagingKit/To Do/OWSUserProfile.h b/SessionMessagingKit/To Do/OWSUserProfile.h index 5e8d2a283..9d2592aa8 100644 --- a/SessionMessagingKit/To Do/OWSUserProfile.h +++ b/SessionMessagingKit/To Do/OWSUserProfile.h @@ -26,9 +26,9 @@ extern NSString *const kLocalProfileUniqueId; @interface OWSUserProfile : TSYapDatabaseObject @property (atomic, readonly) NSString *recipientId; -@property (atomic, readonly, nullable) OWSAES256Key *profileKey; -@property (atomic, readonly, nullable) NSString *profileName; -@property (atomic, readonly, nullable) NSString *avatarUrlPath; +@property (atomic, nullable) OWSAES256Key *profileKey; +@property (atomic, nullable) NSString *profileName; +@property (atomic, nullable) NSString *avatarUrlPath; // This filename is relative to OWSProfileManager.profileAvatarsDirPath. @property (atomic, readonly, nullable) NSString *avatarFileName; diff --git a/SessionMessagingKit/To Do/OWSUserProfile.m b/SessionMessagingKit/To Do/OWSUserProfile.m index c36e33624..f9b5d6c9c 100644 --- a/SessionMessagingKit/To Do/OWSUserProfile.m +++ b/SessionMessagingKit/To Do/OWSUserProfile.m @@ -29,9 +29,6 @@ NSString *const kLocalProfileUniqueId = @"kLocalProfileUniqueId"; @interface OWSUserProfile () -@property (atomic, nullable) OWSAES256Key *profileKey; -@property (atomic, nullable) NSString *profileName; -@property (atomic, nullable) NSString *avatarUrlPath; @property (atomic, nullable) NSString *avatarFileName; @end diff --git a/SignalUtilitiesKit/Messaging/ConfigurationMessage+Convenience.swift b/SignalUtilitiesKit/Messaging/ConfigurationMessage+Convenience.swift index 8894ad52c..38fb3a3a0 100644 --- a/SignalUtilitiesKit/Messaging/ConfigurationMessage+Convenience.swift +++ b/SignalUtilitiesKit/Messaging/ConfigurationMessage+Convenience.swift @@ -4,7 +4,7 @@ extension ConfigurationMessage { public static func getCurrent() -> ConfigurationMessage { let storage = Storage.shared let displayName = storage.getUserDisplayName()! - let profilePictureURL = storage.getUserProfilePictureURL() + let profilePictureURL = SSKEnvironment.shared.profileManager.profilePictureURL() let profileKey = storage.getUserProfileKey() var closedGroups: Set = [] var openGroups: Set = [] diff --git a/SignalUtilitiesKit/To Do/OWSProfileManager.h b/SignalUtilitiesKit/To Do/OWSProfileManager.h index b8ecdc656..d32435a3d 100644 --- a/SignalUtilitiesKit/To Do/OWSProfileManager.h +++ b/SignalUtilitiesKit/To Do/OWSProfileManager.h @@ -93,6 +93,10 @@ extern const NSUInteger kOWSProfileManager_MaxAvatarDiameter; fromViewController:(UIViewController *)fromViewController success:(void (^)(void))successHandler; +#pragma mark - Other + +- (void)downloadAvatarForUserProfile:(OWSUserProfile *)userProfile; + @end NS_ASSUME_NONNULL_END