mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
cf66edb723
Added migrations for contacts and started working through thread migration (have contact and closed group threads migrating) Deprecated usage of ECKeyPair in the migrations (want to be able to remove Curve25519Kit in the future)
61 lines
2.8 KiB
Swift
61 lines
2.8 KiB
Swift
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
import SessionUtilitiesKit
|
|
|
|
@objc public extension TSOutgoingMessage {
|
|
|
|
@objc(from:associatedWith:)
|
|
static func from(_ visibleMessage: VisibleMessage, associatedWith thread: TSThread) -> TSOutgoingMessage {
|
|
return from(visibleMessage, associatedWith: thread, using: nil)
|
|
}
|
|
|
|
static func from(_ visibleMessage: VisibleMessage, associatedWith thread: TSThread, using transaction: YapDatabaseReadWriteTransaction? = nil) -> TSOutgoingMessage {
|
|
var expiration: UInt32 = 0
|
|
let disappearingMessagesConfigurationOrNil: Legacy.DisappearingMessagesConfiguration?
|
|
if let transaction = transaction {
|
|
disappearingMessagesConfigurationOrNil = Legacy.DisappearingMessagesConfiguration.fetch(uniqueId: thread.uniqueId!, transaction: transaction)
|
|
} else {
|
|
disappearingMessagesConfigurationOrNil = Legacy.DisappearingMessagesConfiguration.fetch(uniqueId: thread.uniqueId!)
|
|
}
|
|
if let disappearingMessagesConfiguration = disappearingMessagesConfigurationOrNil {
|
|
expiration = disappearingMessagesConfiguration.isEnabled ? disappearingMessagesConfiguration.durationSeconds : 0
|
|
}
|
|
return TSOutgoingMessage(
|
|
outgoingMessageWithTimestamp: visibleMessage.sentTimestamp!,
|
|
in: thread,
|
|
messageBody: visibleMessage.text,
|
|
attachmentIds: NSMutableArray(array: visibleMessage.attachmentIDs),
|
|
expiresInSeconds: expiration,
|
|
expireStartedAt: 0,
|
|
isVoiceMessage: false,
|
|
groupMetaMessage: .unspecified,
|
|
quotedMessage: TSQuotedMessage.from(visibleMessage.quote),
|
|
linkPreview: OWSLinkPreview.from(visibleMessage.linkPreview),
|
|
openGroupInvitationName: visibleMessage.openGroupInvitation?.name,
|
|
openGroupInvitationURL: visibleMessage.openGroupInvitation?.url,
|
|
serverHash: visibleMessage.serverHash
|
|
)
|
|
}
|
|
}
|
|
|
|
@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
|
|
if let thread = tsMessage.thread as? TSGroupThread, thread.isClosedGroup {
|
|
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
|
|
}
|
|
}
|