diff --git a/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift b/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift index 0607071c8..7373e91d6 100644 --- a/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift +++ b/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift @@ -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( diff --git a/SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift b/SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift index ccdfb5e26..61aa8ae21 100644 --- a/SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift +++ b/SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift @@ -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