Swiftgram/submodules/SyncCore/Sources/CachedStickerPack.swift
2019-10-21 16:58:00 +04:00

41 lines
1.4 KiB
Swift

import Postbox
public final class CachedStickerPack: PostboxCoding {
public let info: StickerPackCollectionInfo?
public let items: [StickerPackItem]
public let hash: Int32
public init(info: StickerPackCollectionInfo?, items: [StickerPackItem], hash: Int32) {
self.info = info
self.items = items
self.hash = hash
}
public init(decoder: PostboxDecoder) {
self.info = decoder.decodeObjectForKey("in", decoder: { StickerPackCollectionInfo(decoder: $0) }) as? StickerPackCollectionInfo
self.items = decoder.decodeObjectArrayForKey("it").map { $0 as! StickerPackItem }
self.hash = decoder.decodeInt32ForKey("h", orElse: 0)
}
public func encode(_ encoder: PostboxEncoder) {
if let info = self.info {
encoder.encodeObject(info, forKey: "in")
} else {
encoder.encodeNil(forKey: "in")
}
encoder.encodeObjectArray(self.items, forKey: "it")
encoder.encodeInt32(self.hash, forKey: "h")
}
public static func cacheKey(_ id: ItemCollectionId) -> ValueBoxKey {
let key = ValueBoxKey(length: 4 + 8)
key.setInt32(0, value: id.namespace)
key.setInt64(4, value: id.id)
return key
}
public static func cacheKey(shortName: String) -> ValueBoxKey {
return ValueBoxKey(shortName)
}
}