mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Refactor SyncCore
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import Postbox
|
||||
|
||||
public enum SecretChatIncomingEncryptedOperationType: Int32 {
|
||||
case message
|
||||
case service
|
||||
|
||||
public init(_ value: Int32) {
|
||||
if value == 0 {
|
||||
self = .message
|
||||
} else {
|
||||
self = .service
|
||||
}
|
||||
}
|
||||
|
||||
public var value: Int32 {
|
||||
switch self {
|
||||
case .message:
|
||||
return 0
|
||||
case .service:
|
||||
return 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final class SecretChatIncomingEncryptedOperation: PostboxCoding {
|
||||
public let peerId: PeerId
|
||||
public let globallyUniqueId: Int64
|
||||
public let timestamp: Int32
|
||||
public let type: SecretChatIncomingEncryptedOperationType
|
||||
public let keyFingerprint: Int64
|
||||
public let contents: MemoryBuffer
|
||||
public let mediaFileReference: SecretChatFileReference?
|
||||
|
||||
public init(peerId: PeerId, globallyUniqueId: Int64, timestamp: Int32, type: SecretChatIncomingEncryptedOperationType, keyFingerprint: Int64, contents: MemoryBuffer, mediaFileReference: SecretChatFileReference?) {
|
||||
self.peerId = peerId
|
||||
self.globallyUniqueId = globallyUniqueId
|
||||
self.timestamp = timestamp
|
||||
self.type = type
|
||||
self.keyFingerprint = keyFingerprint
|
||||
self.contents = contents
|
||||
self.mediaFileReference = mediaFileReference
|
||||
}
|
||||
|
||||
public init(decoder: PostboxDecoder) {
|
||||
self.peerId = PeerId(decoder.decodeInt64ForKey("p", orElse: 0))
|
||||
self.globallyUniqueId = decoder.decodeInt64ForKey("u", orElse: 0)
|
||||
self.timestamp = decoder.decodeInt32ForKey("t", orElse: 0)
|
||||
self.type = SecretChatIncomingEncryptedOperationType(decoder.decodeInt32ForKey("k", orElse: 0))
|
||||
self.keyFingerprint = decoder.decodeInt64ForKey("f", orElse: 0)
|
||||
self.contents = decoder.decodeBytesForKey("c")!
|
||||
self.mediaFileReference = decoder.decodeObjectForKey("m", decoder: { SecretChatFileReference(decoder: $0) }) as? SecretChatFileReference
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeInt64(self.peerId.toInt64(), forKey: "p")
|
||||
encoder.encodeInt64(self.globallyUniqueId, forKey: "u")
|
||||
encoder.encodeInt32(self.timestamp, forKey: "t")
|
||||
encoder.encodeInt32(self.type.value, forKey: "k")
|
||||
encoder.encodeInt64(self.keyFingerprint, forKey: "f")
|
||||
encoder.encodeBytes(self.contents, forKey: "c")
|
||||
if let mediaFileReference = self.mediaFileReference {
|
||||
encoder.encodeObject(mediaFileReference, forKey: "m")
|
||||
} else {
|
||||
encoder.encodeNil(forKey: "m")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user