|
|
@ -192,6 +192,7 @@ 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 isInitialSync: Bool = (!UserDefaults.standard[.hasSyncedInitialConfiguration])
|
|
|
|
let messageSentTimestamp: TimeInterval = TimeInterval((message.sentTimestamp ?? 0) / 1000) // `sentTimestamp` is in ms
|
|
|
|
let messageSentTimestamp: TimeInterval = TimeInterval((message.sentTimestamp ?? 0) / 1000) // `sentTimestamp` is in ms
|
|
|
|
let lastConfigTimestamp: TimeInterval = (UserDefaults.standard[.lastConfigurationSync]?.timeIntervalSince1970 ?? Date(timeIntervalSince1970: 0).timeIntervalSince1970)
|
|
|
|
let lastConfigTimestamp: TimeInterval = (UserDefaults.standard[.lastConfigurationSync]?.timeIntervalSince1970 ?? Date(timeIntervalSince1970: 0).timeIntervalSince1970)
|
|
|
|
|
|
|
|
|
|
|
@ -201,8 +202,8 @@ extension MessageReceiver {
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
|
if !UserDefaults.standard[.hasSyncedInitialConfiguration] || messageSentTimestamp > lastConfigTimestamp {
|
|
|
|
if isInitialSync || messageSentTimestamp > lastConfigTimestamp {
|
|
|
|
if !UserDefaults.standard[.hasSyncedInitialConfiguration] {
|
|
|
|
if isInitialSync {
|
|
|
|
UserDefaults.standard[.hasSyncedInitialConfiguration] = true
|
|
|
|
UserDefaults.standard[.hasSyncedInitialConfiguration] = true
|
|
|
|
NotificationCenter.default.post(name: .initialConfigurationMessageReceived, object: nil)
|
|
|
|
NotificationCenter.default.post(name: .initialConfigurationMessageReceived, object: nil)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -259,13 +260,21 @@ extension MessageReceiver {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Closed groups
|
|
|
|
// Closed groups
|
|
|
|
let allClosedGroupPublicKeys = storage.getUserClosedGroupPublicKeys()
|
|
|
|
//
|
|
|
|
for closedGroup in message.closedGroups {
|
|
|
|
// Note: Only want to add these for initial sync to avoid re-adding closed groups the user
|
|
|
|
guard !allClosedGroupPublicKeys.contains(closedGroup.publicKey) else { continue }
|
|
|
|
// intentionally left (any closed groups joined since the first processed sync message should
|
|
|
|
handleNewClosedGroup(groupPublicKey: closedGroup.publicKey, name: closedGroup.name, encryptionKeyPair: closedGroup.encryptionKeyPair,
|
|
|
|
// get added via the 'handleNewClosedGroup' method anyway as they will have come through in the
|
|
|
|
members: [String](closedGroup.members), admins: [String](closedGroup.admins), expirationTimer: closedGroup.expirationTimer,
|
|
|
|
// past two weeks)
|
|
|
|
messageSentTimestamp: message.sentTimestamp!, using: transaction)
|
|
|
|
if isInitialSync {
|
|
|
|
|
|
|
|
let allClosedGroupPublicKeys = storage.getUserClosedGroupPublicKeys()
|
|
|
|
|
|
|
|
for closedGroup in message.closedGroups {
|
|
|
|
|
|
|
|
guard !allClosedGroupPublicKeys.contains(closedGroup.publicKey) else { continue }
|
|
|
|
|
|
|
|
handleNewClosedGroup(groupPublicKey: closedGroup.publicKey, name: closedGroup.name, encryptionKeyPair: closedGroup.encryptionKeyPair,
|
|
|
|
|
|
|
|
members: [String](closedGroup.members), admins: [String](closedGroup.admins), expirationTimer: closedGroup.expirationTimer,
|
|
|
|
|
|
|
|
messageSentTimestamp: message.sentTimestamp!, using: transaction)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Open groups
|
|
|
|
// Open groups
|
|
|
|
for openGroupURL in message.openGroups {
|
|
|
|
for openGroupURL in message.openGroups {
|
|
|
|
if let (room, server, publicKey) = OpenGroupManagerV2.parseV2OpenGroup(from: openGroupURL) {
|
|
|
|
if let (room, server, publicKey) = OpenGroupManagerV2.parseV2OpenGroup(from: openGroupURL) {
|
|
|
|