diff --git a/SessionMessagingKit/Database/Models/DisappearingMessageConfiguration.swift b/SessionMessagingKit/Database/Models/DisappearingMessageConfiguration.swift index 9221a8d15..e18d793b1 100644 --- a/SessionMessagingKit/Database/Models/DisappearingMessageConfiguration.swift +++ b/SessionMessagingKit/Database/Models/DisappearingMessageConfiguration.swift @@ -20,6 +20,24 @@ public struct DisappearingMessagesConfiguration: Codable, Identifiable, Equatabl public enum DisappearingMessageType: Int, Codable, Hashable, DatabaseValueConvertible { case disappearAfterRead case disappearAfterSend + + init(protoType: SNProtoContent.SNProtoContentExpirationType) { + switch protoType { + case .deleteAfterSend: + self = .disappearAfterSend + case .deleteAfterRead: + self = .disappearAfterRead + } + } + + func toProto() -> SNProtoContent.SNProtoContentExpirationType { + switch self { + case .disappearAfterRead: + return .deleteAfterRead + case .disappearAfterSend: + return .deleteAfterSend + } + } } public var id: String { threadId } // Identifiable diff --git a/SessionMessagingKit/Messages/Visible Messages/VisibleMessage.swift b/SessionMessagingKit/Messages/Visible Messages/VisibleMessage.swift index 726ebdf47..88cbaa3c2 100644 --- a/SessionMessagingKit/Messages/Visible Messages/VisibleMessage.swift +++ b/SessionMessagingKit/Messages/Visible Messages/VisibleMessage.swift @@ -183,6 +183,19 @@ public final class VisibleMessage: Message { dataMessage.setReaction(reactionProto) } + // DisappearingMessagesConfiguration + if let threadId = self.threadId, + let disappearingMessagesConfiguration = try? DisappearingMessagesConfiguration.fetchOne(db, id: threadId) + { + proto.setExpirationTimer(UInt32(disappearingMessagesConfiguration.durationSeconds)) + + if disappearingMessagesConfiguration.isEnabled, + let type = disappearingMessagesConfiguration.type + { + proto.setExpirationType(type.toProto()) + } + } + // Group context do { try setGroupContextIfNeeded(db, on: dataMessage)