Fixed an issue where only the first sync config message would be processed
This commit is contained in:
parent
56bdee3919
commit
d490cf7d19
|
@ -14,7 +14,12 @@ extension AppDelegate {
|
||||||
let job = MessageSendJob(message: configurationMessage, destination: destination)
|
let job = MessageSendJob(message: configurationMessage, destination: destination)
|
||||||
JobQueue.shared.add(job, using: transaction)
|
JobQueue.shared.add(job, using: transaction)
|
||||||
}
|
}
|
||||||
userDefaults[.lastConfigurationSync] = Date()
|
|
||||||
|
// Only update the 'lastConfigurationSync' timestamp if we have done the first sync (Don't want
|
||||||
|
// a new device config sync to override config syncs from other devices)
|
||||||
|
if userDefaults[.hasSyncedInitialConfiguration] {
|
||||||
|
userDefaults[.lastConfigurationSync] = Date()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func forceSyncConfigurationNowIfNeeded() -> Promise<Void> {
|
func forceSyncConfigurationNowIfNeeded() -> Promise<Void> {
|
||||||
|
|
|
@ -190,15 +190,23 @@ extension MessageReceiver {
|
||||||
SNLog("Configuration message received.")
|
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 messageSentTimestamp: TimeInterval = TimeInterval((message.sentTimestamp ?? 0) / 1000) // `sentTimestamp` is in ms
|
||||||
|
let lastConfigTimestamp: TimeInterval = (UserDefaults.standard[.lastConfigurationSync]?.timeIntervalSince1970 ?? Date(timeIntervalSince1970: 0).timeIntervalSince1970)
|
||||||
|
|
||||||
// Profile
|
// Profile
|
||||||
var userProfileKey: OWSAES256Key? = nil
|
var userProfileKey: OWSAES256Key? = nil
|
||||||
if let profileKey = message.profileKey { userProfileKey = OWSAES256Key(data: profileKey) }
|
if let profileKey = message.profileKey { userProfileKey = OWSAES256Key(data: profileKey) }
|
||||||
updateProfileIfNeeded(publicKey: userPublicKey, name: message.displayName, profilePictureURL: message.profilePictureURL,
|
updateProfileIfNeeded(publicKey: userPublicKey, name: message.displayName, profilePictureURL: message.profilePictureURL,
|
||||||
profileKey: userProfileKey, sentTimestamp: message.sentTimestamp!, transaction: transaction)
|
profileKey: userProfileKey, sentTimestamp: message.sentTimestamp!, transaction: transaction)
|
||||||
// Initial configuration sync
|
|
||||||
if !UserDefaults.standard[.hasSyncedInitialConfiguration] {
|
if !UserDefaults.standard[.hasSyncedInitialConfiguration] || messageSentTimestamp > lastConfigTimestamp {
|
||||||
UserDefaults.standard[.hasSyncedInitialConfiguration] = true
|
if !UserDefaults.standard[.hasSyncedInitialConfiguration] {
|
||||||
NotificationCenter.default.post(name: .initialConfigurationMessageReceived, object: nil)
|
UserDefaults.standard[.hasSyncedInitialConfiguration] = true
|
||||||
|
NotificationCenter.default.post(name: .initialConfigurationMessageReceived, object: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
UserDefaults.standard[.lastConfigurationSync] = Date(timeIntervalSince1970: messageSentTimestamp)
|
||||||
|
|
||||||
// Contacts
|
// Contacts
|
||||||
for contactInfo in message.contacts {
|
for contactInfo in message.contacts {
|
||||||
let sessionID = contactInfo.publicKey!
|
let sessionID = contactInfo.publicKey!
|
||||||
|
|
Loading…
Reference in New Issue