diff --git a/SessionMessagingKit/Database/Models/Interaction.swift b/SessionMessagingKit/Database/Models/Interaction.swift index 98b4374bd..504632386 100644 --- a/SessionMessagingKit/Database/Models/Interaction.swift +++ b/SessionMessagingKit/Database/Models/Interaction.swift @@ -373,6 +373,23 @@ public struct Interaction: Codable, Identifiable, Equatable, FetchableRecord, Mu // Automatically mark interactions which can't be unread as read so the unread count // isn't impacted self.wasRead = (self.wasRead || !self.variant.canBeUnread) + + + // Automatically add disapeparing messages configuration + if self.variant.shouldFollowDisappearingMessagesConfiguration, + self.expiresInSeconds == nil, + self.expiresStartedAtMs == nil + { + guard + let disappearingMessagesConfiguration = try? DisappearingMessagesConfiguration.fetchOne(db, id: self.threadId), + disappearingMessagesConfiguration.isEnabled + else { + self.expiresInSeconds = 0 + return + } + + self.expiresInSeconds = disappearingMessagesConfiguration.durationSeconds + } } public func aroundInsert(_ db: Database, insert: () throws -> InsertionSuccess) throws { diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender+Convenience.swift b/SessionMessagingKit/Sending & Receiving/MessageSender+Convenience.swift index d30c4372b..9892fa027 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender+Convenience.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender+Convenience.swift @@ -196,24 +196,20 @@ extension MessageSender { // MARK: - Convenience internal static func getSpecifiedTTL( + _ db: Database, + threadId: String, message: Message, isSyncMessage: Bool ) -> UInt64? { - guard let expiresInSeconds = message.expiresInSeconds else { return nil } - - // Sync message - if isSyncMessage { - return UInt64(expiresInSeconds * 1000) - } - - // Disappear after send - if let expiresStartedAtMs = message.expiresStartedAtMs, - let sentTimestamp = message.sentTimestamp, - UInt64(expiresStartedAtMs) == sentTimestamp - { - return UInt64(expiresInSeconds * 1000) - } + guard + let disappearingMessagesConfiguration = try? DisappearingMessagesConfiguration.fetchOne(db, id: threadId), + disappearingMessagesConfiguration.isEnabled, + ( + disappearingMessagesConfiguration.type == .disappearAfterSend || + isSyncMessage + ) + else { return nil } - return nil + return UInt64(disappearingMessagesConfiguration.durationSeconds * 1000) } } diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender.swift b/SessionMessagingKit/Sending & Receiving/MessageSender.swift index fa80e6450..4fc8b0fab 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender.swift @@ -349,7 +349,7 @@ public final class MessageSender { recipient: message.recipient!, data: base64EncodedData, ttl: MessageSender - .getSpecifiedTTL(message: message, isSyncMessage: isSyncMessage) + .getSpecifiedTTL(db, threadId: threadId, message: message, isSyncMessage: isSyncMessage) .defaulting(to: message.ttl), timestampMs: UInt64(messageSendTimestamp) )