Swiftgram/submodules/SyncCore/Sources/RecentMediaItem.swift
2019-11-01 17:11:12 +04:00

47 lines
1.5 KiB
Swift

import Foundation
import Postbox
public struct RecentMediaItemId {
public let rawValue: MemoryBuffer
public let mediaId: MediaId
public init(_ rawValue: MemoryBuffer) {
self.rawValue = rawValue
assert(rawValue.length == 4 + 8)
var mediaIdNamespace: Int32 = 0
var mediaIdId: Int64 = 0
memcpy(&mediaIdNamespace, rawValue.memory, 4)
memcpy(&mediaIdId, rawValue.memory.advanced(by: 4), 8)
self.mediaId = MediaId(namespace: mediaIdNamespace, id: mediaIdId)
}
public init(_ mediaId: MediaId) {
self.mediaId = mediaId
var mediaIdNamespace: Int32 = mediaId.namespace
var mediaIdId: Int64 = mediaId.id
self.rawValue = MemoryBuffer(memory: malloc(4 + 8)!, capacity: 4 + 8, length: 4 + 8, freeWhenDone: true)
memcpy(self.rawValue.memory, &mediaIdNamespace, 4)
memcpy(self.rawValue.memory.advanced(by: 4), &mediaIdId, 8)
}
}
public final class RecentMediaItem: OrderedItemListEntryContents, Equatable {
public let media: Media
public init(_ media: Media) {
self.media = media
}
public init(decoder: PostboxDecoder) {
self.media = decoder.decodeObjectForKey("m") as! Media
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeObject(self.media, forKey: "m")
}
public static func ==(lhs: RecentMediaItem, rhs: RecentMediaItem) -> Bool {
return lhs.media.isEqual(to: rhs.media)
}
}