mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Syntax highlight
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import Foundation
|
||||
import Postbox
|
||||
|
||||
public class DerivedDataMessageAttribute: MessageAttribute {
|
||||
private struct EntryData: PostboxCoding {
|
||||
var data: CodableEntry
|
||||
|
||||
init(data: CodableEntry) {
|
||||
self.data = data
|
||||
}
|
||||
|
||||
init(decoder: PostboxDecoder) {
|
||||
self.data = CodableEntry(data: decoder.decodeDataForKey("d") ?? Data())
|
||||
}
|
||||
|
||||
func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeData(self.data.data, forKey: "d")
|
||||
}
|
||||
}
|
||||
|
||||
public let data: [String: CodableEntry]
|
||||
|
||||
public init(data: [String: CodableEntry]) {
|
||||
self.data = data
|
||||
}
|
||||
|
||||
required public init(decoder: PostboxDecoder) {
|
||||
let data = decoder.decodeObjectDictionaryForKey("d", keyDecoder: { key in
|
||||
return key.decodeStringForKey("k", orElse: "")
|
||||
}, valueDecoder: { value in
|
||||
return EntryData(data: CodableEntry(data: value.decodeDataForKey("d") ?? Data()))
|
||||
})
|
||||
self.data = data.mapValues(\.data)
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
encoder.encodeObjectDictionary(self.data.mapValues(EntryData.init(data:)), forKey: "d", keyEncoder: { k, e in
|
||||
e.encodeString(k, forKey: "k")
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user