mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
48 lines
2.0 KiB
Swift
48 lines
2.0 KiB
Swift
import Foundation
|
|
import Postbox
|
|
|
|
public class ReplyMessageAttribute: MessageAttribute {
|
|
public let messageId: MessageId
|
|
public let threadMessageId: MessageId?
|
|
|
|
public var associatedMessageIds: [MessageId] {
|
|
return [self.messageId]
|
|
}
|
|
|
|
public init(messageId: MessageId, threadMessageId: MessageId?) {
|
|
self.messageId = messageId
|
|
self.threadMessageId = threadMessageId
|
|
}
|
|
|
|
required public init(decoder: PostboxDecoder) {
|
|
let namespaceAndId: Int64 = decoder.decodeInt64ForKey("i", orElse: 0)
|
|
self.messageId = MessageId(peerId: PeerId(decoder.decodeInt64ForKey("p", orElse: 0)), namespace: Int32(namespaceAndId & 0xffffffff), id: Int32((namespaceAndId >> 32) & 0xffffffff))
|
|
|
|
if let threadNamespaceAndId = decoder.decodeOptionalInt64ForKey("ti"), let threadPeerId = decoder.decodeOptionalInt64ForKey("tp") {
|
|
self.threadMessageId = MessageId(peerId: PeerId(threadPeerId), namespace: Int32(threadNamespaceAndId & 0xffffffff), id: Int32((threadNamespaceAndId >> 32) & 0xffffffff))
|
|
} else {
|
|
self.threadMessageId = nil
|
|
}
|
|
}
|
|
|
|
public func encode(_ encoder: PostboxEncoder) {
|
|
let namespaceAndId = Int64(self.messageId.namespace) | (Int64(self.messageId.id) << 32)
|
|
encoder.encodeInt64(namespaceAndId, forKey: "i")
|
|
encoder.encodeInt64(self.messageId.peerId.toInt64(), forKey: "p")
|
|
if let threadMessageId = self.threadMessageId {
|
|
let threadNamespaceAndId = Int64(threadMessageId.namespace) | (Int64(threadMessageId.id) << 32)
|
|
encoder.encodeInt64(threadNamespaceAndId, forKey: "ti")
|
|
encoder.encodeInt64(threadMessageId.peerId.toInt64(), forKey: "tp")
|
|
}
|
|
}
|
|
}
|
|
|
|
public extension Message {
|
|
var effectiveReplyThreadMessageId: MessageId? {
|
|
if let threadId = self.threadId {
|
|
return makeThreadIdMessageId(peerId: self.id.peerId, threadId: threadId)
|
|
}
|
|
return nil
|
|
}
|
|
}
|