Fix multi device display name updating issue

pull/364/head
Niels Andriesse 4 years ago
parent 105b54d84e
commit ea43d68c72

@ -177,16 +177,20 @@ extension MessageReceiver {
// MARK: - Configuration Messages // MARK: - Configuration Messages
private static func handleConfigurationMessage(_ message: ConfigurationMessage, using transaction: Any) { private static func handleConfigurationMessage(_ message: ConfigurationMessage, using transaction: Any) {
guard message.sender == getUserHexEncodedPublicKey() else { return } let userPublicKey = getUserHexEncodedPublicKey()
guard message.sender == userPublicKey else { return }
SNLog("Configuration message received.")
let storage = SNMessagingKitConfiguration.shared.storage let storage = SNMessagingKitConfiguration.shared.storage
let transaction = transaction as! YapDatabaseReadWriteTransaction let transaction = transaction as! YapDatabaseReadWriteTransaction
let userDefaults = UserDefaults.standard let userDefaults = UserDefaults.standard
// Profile // Profile
let userProfile = storage.getUserProfile(using: transaction) let userProfile = storage.getUserProfile(using: transaction)
if let displayName = message.displayName { let user = storage.getUser() ?? Contact(sessionID: userPublicKey)
if let name = message.displayName {
let shouldUpdate = given(userDefaults[.lastDisplayNameUpdate]) { message.sentTimestamp! > UInt64($0.timeIntervalSince1970 * 1000) } ?? true let shouldUpdate = given(userDefaults[.lastDisplayNameUpdate]) { message.sentTimestamp! > UInt64($0.timeIntervalSince1970 * 1000) } ?? true
if shouldUpdate { if shouldUpdate {
userProfile.profileName = displayName userProfile.profileName = name
user.name = name
userDefaults[.lastDisplayNameUpdate] = Date(timeIntervalSince1970: TimeInterval(message.sentTimestamp! / 1000)) userDefaults[.lastDisplayNameUpdate] = Date(timeIntervalSince1970: TimeInterval(message.sentTimestamp! / 1000))
} }
} }
@ -194,11 +198,14 @@ extension MessageReceiver {
let shouldUpdate = given(userDefaults[.lastProfilePictureUpdate]) { message.sentTimestamp! > UInt64($0.timeIntervalSince1970 * 1000) } ?? true let shouldUpdate = given(userDefaults[.lastProfilePictureUpdate]) { message.sentTimestamp! > UInt64($0.timeIntervalSince1970 * 1000) } ?? true
if shouldUpdate { if shouldUpdate {
userProfile.avatarUrlPath = profilePictureURL userProfile.avatarUrlPath = profilePictureURL
user.profilePictureURL = profilePictureURL
userProfile.profileKey = OWSAES256Key(data: profileKeyAsData) userProfile.profileKey = OWSAES256Key(data: profileKeyAsData)
user.profilePictureEncryptionKey = OWSAES256Key(data: profileKeyAsData)
userDefaults[.lastProfilePictureUpdate] = Date(timeIntervalSince1970: TimeInterval(message.sentTimestamp! / 1000)) userDefaults[.lastProfilePictureUpdate] = Date(timeIntervalSince1970: TimeInterval(message.sentTimestamp! / 1000))
} }
} }
userProfile.save(with: transaction) userProfile.save(with: transaction)
Storage.shared.setContact(user, using: transaction)
transaction.addCompletionQueue(DispatchQueue.main) { transaction.addCompletionQueue(DispatchQueue.main) {
SSKEnvironment.shared.profileManager.downloadAvatar(for: userProfile) SSKEnvironment.shared.profileManager.downloadAvatar(for: userProfile)
} }

Loading…
Cancel
Save