fix disappearing messages config not sync when linking a new device

pull/941/head
Ryan Zhao 1 year ago
parent 9dfaa09a95
commit dca70058e3

@ -180,7 +180,7 @@ public extension DisappearingMessagesJob {
let userPublicKey: String = getUserHexEncodedPublicKey(db)
let updateExpiryPublishers: [AnyPublisher<[String: UpdateExpiryResponseResult], Error>] = interactionExpirationInfosByExpiresInSeconds
.map { expiresInSeconds, expirationInfos -> AnyPublisher<[String: UpdateExpiryResponseResult], Error> in
let expirationTimestampMs: Int64 = Int64(ceil(startedAtMs + expiresInSeconds * 1000))
let expirationTimestampMs: Int64 = Int64(startedAtMs + expiresInSeconds * 1000)
return SnodeAPI
.updateExpiry(

@ -187,24 +187,6 @@ internal extension SessionUtil {
)
}
// Update disappearing messages configuration if needed
let localConfig: DisappearingMessagesConfiguration = try DisappearingMessagesConfiguration
.fetchOne(db, id: sessionId)
.defaulting(to: DisappearingMessagesConfiguration.defaultWith(sessionId))
if
let remoteLastChangeTimestampMs = data.config.lastChangeTimestampMs,
let localLastChangeTimestampMs = localConfig.lastChangeTimestampMs,
remoteLastChangeTimestampMs > localLastChangeTimestampMs
{
_ = try localConfig.with(
isEnabled: data.config.isEnabled,
durationSeconds: data.config.durationSeconds,
type: data.config.type,
lastChangeTimestampMs: data.config.lastChangeTimestampMs
).save(db)
}
/// If the contact's `hidden` flag doesn't match the visibility of their conversation then create/delete the
/// associated contact conversation accordingly
let threadInfo: PriorityVisibilityInfo? = try? SessionThread
@ -256,6 +238,24 @@ internal extension SessionUtil {
case (false, false): break
}
// Update disappearing messages configuration if needed
let localConfig: DisappearingMessagesConfiguration = try DisappearingMessagesConfiguration
.fetchOne(db, id: sessionId)
.defaulting(to: DisappearingMessagesConfiguration.defaultWith(sessionId))
if
let remoteLastChangeTimestampMs = data.config.lastChangeTimestampMs,
let localLastChangeTimestampMs = localConfig.lastChangeTimestampMs,
remoteLastChangeTimestampMs > localLastChangeTimestampMs
{
_ = try localConfig.with(
isEnabled: data.config.isEnabled,
durationSeconds: data.config.durationSeconds,
type: data.config.type,
lastChangeTimestampMs: data.config.lastChangeTimestampMs
).save(db)
}
}
/// Delete any contact/thread records which aren't in the config message

Loading…
Cancel
Save