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

62 lines
1.8 KiB
Swift

import Postbox
public struct MessageReaction: Equatable, PostboxCoding {
public var value: String
public var count: Int32
public var isSelected: Bool
public init(value: String, count: Int32, isSelected: Bool) {
self.value = value
self.count = count
self.isSelected = isSelected
}
public init(decoder: PostboxDecoder) {
self.value = decoder.decodeStringForKey("v", orElse: "")
self.count = decoder.decodeInt32ForKey("c", orElse: 0)
self.isSelected = decoder.decodeInt32ForKey("s", orElse: 0) != 0
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeString(self.value, forKey: "v")
encoder.encodeInt32(self.count, forKey: "c")
encoder.encodeInt32(self.isSelected ? 1 : 0, forKey: "s")
}
}
public final class ReactionsMessageAttribute: MessageAttribute {
public let reactions: [MessageReaction]
public init(reactions: [MessageReaction]) {
self.reactions = reactions
}
required public init(decoder: PostboxDecoder) {
self.reactions = decoder.decodeObjectArrayWithDecoderForKey("r")
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeObjectArray(self.reactions, forKey: "r")
}
}
public final class PendingReactionsMessageAttribute: MessageAttribute {
public let value: String?
public init(value: String?) {
self.value = value
}
required public init(decoder: PostboxDecoder) {
self.value = decoder.decodeOptionalStringForKey("v")
}
public func encode(_ encoder: PostboxEncoder) {
if let value = self.value {
encoder.encodeString(value, forKey: "v")
} else {
encoder.encodeNil(forKey: "v")
}
}
}