apply disappearing message config to sync messages

pull/941/head
ryanzhao 2 years ago
parent f855e71d61
commit 387b5f953b

@ -155,6 +155,7 @@
7BC01A42241F40AB00BC7C55 /* SessionNotificationServiceExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 7BC01A3B241F40AB00BC7C55 /* SessionNotificationServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
7BC707F227290ACB002817AD /* SessionCallManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BC707F127290ACB002817AD /* SessionCallManager.swift */; };
7BCD116C27016062006330F1 /* WebRTCSession+DataChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BCD116B27016062006330F1 /* WebRTCSession+DataChannel.swift */; };
7BD01B122921BDDF00E7D9E6 /* MessageSender+TTL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BD01B112921BDDF00E7D9E6 /* MessageSender+TTL.swift */; };
7BD477A827EC39F5004E2822 /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BD477A727EC39F5004E2822 /* Atomic.swift */; };
7BDCFC08242186E700641C39 /* NotificationServiceExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BDCFC07242186E700641C39 /* NotificationServiceExtensionContext.swift */; };
7BDCFC0B2421EB7600641C39 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = B6F509951AA53F760068F56A /* Localizable.strings */; };
@ -1225,6 +1226,7 @@
7BC01A3F241F40AB00BC7C55 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
7BC707F127290ACB002817AD /* SessionCallManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCallManager.swift; sourceTree = "<group>"; };
7BCD116B27016062006330F1 /* WebRTCSession+DataChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WebRTCSession+DataChannel.swift"; sourceTree = "<group>"; };
7BD01B112921BDDF00E7D9E6 /* MessageSender+TTL.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MessageSender+TTL.swift"; sourceTree = "<group>"; };
7BD477A727EC39F5004E2822 /* Atomic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Atomic.swift; sourceTree = "<group>"; };
7BD477A927F15F24004E2822 /* OpenGroupServerIdLookup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenGroupServerIdLookup.swift; sourceTree = "<group>"; };
7BDCFC0424206E7300641C39 /* SessionNotificationServiceExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SessionNotificationServiceExtension.entitlements; sourceTree = "<group>"; };
@ -2669,6 +2671,7 @@
FD7728A1284F0DF50018502F /* Message Handling */,
B8D0A25825E367AC00C1835E /* Notification+MessageReceiver.swift */,
C300A5F12554B09800555489 /* MessageSender.swift */,
7BD01B112921BDDF00E7D9E6 /* MessageSender+TTL.swift */,
FDF0B75B2807F41D004C14C5 /* MessageSender+Convenience.swift */,
C3471ECA2555356A00297E91 /* MessageSender+Encryption.swift */,
C300A5FB2554B0A000555489 /* MessageReceiver.swift */,
@ -5415,6 +5418,7 @@
C300A5F22554B09800555489 /* MessageSender.swift in Sources */,
B8B558FF26C4E05E00693325 /* WebRTCSession+MessageHandling.swift in Sources */,
C3C2A74D2553A39700C340D1 /* VisibleMessage.swift in Sources */,
7BD01B122921BDDF00E7D9E6 /* MessageSender+TTL.swift in Sources */,
FD09B7E7288670FD00ED0B66 /* Reaction.swift in Sources */,
FD245C58285065F700B966DD /* OpenGroupServerIdLookup.swift in Sources */,
FD245C5A2850660100B966DD /* LinkPreviewDraft.swift in Sources */,

@ -0,0 +1,32 @@
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
import GRDB
import SessionUtilitiesKit
extension MessageSender {
public static func getSpecifiedTTL(_ db: Database, message: Message, isSyncMessage: Bool) -> UInt64? {
let threadId: String = {
if let threadId = message.threadId {
return threadId
}
if let visibleMessage = message as? VisibleMessage, isSyncMessage, let syncTarget = visibleMessage.syncTarget {
return syncTarget
}
return message.recipient!
}()
guard
let disappearingMessagesConfiguration = try? DisappearingMessagesConfiguration.fetchOne(db, id: threadId),
disappearingMessagesConfiguration.isEnabled
else {
return nil
}
guard disappearingMessagesConfiguration.type == .disappearAfterSend || isSyncMessage else {
return nil
}
return UInt64(disappearingMessagesConfiguration.durationSeconds) * 1000
}
}

@ -201,7 +201,7 @@ public final class MessageSender {
let snodeMessage = SnodeMessage(
recipient: message.recipient!,
data: base64EncodedData,
ttl: message.ttl,
ttl: getSpecifiedTTL(db, message: message, isSyncMessage: isSyncMessage) ?? message.ttl,
timestampMs: UInt64(messageSendTimestamp + SnodeAPI.clockOffset.wrappedValue)
)

Loading…
Cancel
Save