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) } }