session-ios/SessionMessagingKit/Messages/Signal/TSOutgoingMessage+Conversio...

57 lines
2.7 KiB
Swift
Raw Normal View History

2020-12-07 05:11:49 +01:00
import SessionUtilitiesKit
2020-11-19 01:16:23 +01:00
@objc public extension TSOutgoingMessage {
@objc(from:associatedWith:)
static func from(_ visibleMessage: VisibleMessage, associatedWith thread: TSThread) -> TSOutgoingMessage {
2021-01-14 04:57:32 +01:00
return from(visibleMessage, associatedWith: thread, using: nil)
}
static func from(_ visibleMessage: VisibleMessage, associatedWith thread: TSThread, using transaction: YapDatabaseReadWriteTransaction? = nil) -> TSOutgoingMessage {
2020-11-19 01:16:23 +01:00
var expiration: UInt32 = 0
2021-01-14 04:57:32 +01:00
let disappearingMessagesConfigurationOrNil: OWSDisappearingMessagesConfiguration?
if let transaction = transaction {
disappearingMessagesConfigurationOrNil = OWSDisappearingMessagesConfiguration.fetch(uniqueId: thread.uniqueId!, transaction: transaction)
} else {
disappearingMessagesConfigurationOrNil = OWSDisappearingMessagesConfiguration.fetch(uniqueId: thread.uniqueId!)
}
if let disappearingMessagesConfiguration = disappearingMessagesConfigurationOrNil {
2020-11-19 01:16:23 +01:00
expiration = disappearingMessagesConfiguration.isEnabled ? disappearingMessagesConfiguration.durationSeconds : 0
}
return TSOutgoingMessage(
2020-11-19 06:21:00 +01:00
outgoingMessageWithTimestamp: visibleMessage.sentTimestamp!,
2020-11-19 01:16:23 +01:00
in: thread,
messageBody: visibleMessage.text,
2021-01-25 04:46:47 +01:00
attachmentIds: NSMutableArray(array: visibleMessage.attachmentIDs),
2020-11-19 01:16:23 +01:00
expiresInSeconds: expiration,
2020-11-19 06:21:00 +01:00
expireStartedAt: 0,
isVoiceMessage: false,
groupMetaMessage: .unspecified,
quotedMessage: TSQuotedMessage.from(visibleMessage.quote),
2021-05-03 07:13:18 +02:00
linkPreview: OWSLinkPreview.from(visibleMessage.linkPreview),
openGroupInvitationName: visibleMessage.openGroupInvitation?.name,
openGroupInvitationURL: visibleMessage.openGroupInvitation?.url
2020-11-19 01:16:23 +01:00
)
}
}
2020-12-07 05:11:49 +01:00
@objc public extension VisibleMessage {
@objc(from:)
static func from(_ tsMessage: TSOutgoingMessage) -> VisibleMessage {
let result = VisibleMessage()
result.threadID = tsMessage.uniqueThreadId
result.sentTimestamp = tsMessage.timestamp
result.recipient = tsMessage.recipientIds().first
2021-01-11 04:12:07 +01:00
if let thread = tsMessage.thread as? TSGroupThread, thread.isClosedGroup {
2020-12-07 05:11:49 +01:00
let groupID = thread.groupModel.groupId
result.groupPublicKey = LKGroupUtilities.getDecodedGroupID(groupID)
}
result.text = tsMessage.body
result.attachmentIDs = tsMessage.attachmentIds.compactMap { $0 as? String }
result.quote = VisibleMessage.Quote.from(tsMessage.quotedMessage)
result.linkPreview = VisibleMessage.LinkPreview.from(tsMessage.linkPreview)
return result
}
}