import Foundation import Postbox import SwiftSignalKit final class CachedStickerAJpegRepresentation: CachedMediaResourceRepresentation { let size: CGSize? var uniqueId: String { if let size = self.size { return "sticker-ajpeg-\(Int(size.width))x\(Int(size.height))" } else { return "sticker-ajpeg" } } init(size: CGSize?) { self.size = size } func isEqual(to: CachedMediaResourceRepresentation) -> Bool { if let to = to as? CachedStickerAJpegRepresentation { return self.size == to.size } else { return false } } } final class CachedScaledImageRepresentation: CachedMediaResourceRepresentation { let size: CGSize var uniqueId: String { return "scaled-image-\(Int(self.size.width))x\(Int(self.size.height))" } init(size: CGSize) { self.size = size } func isEqual(to: CachedMediaResourceRepresentation) -> Bool { if let to = to as? CachedScaledImageRepresentation { return self.size == to.size } else { return false } } } final class CachedVideoFirstFrameRepresentation: CachedMediaResourceRepresentation { var uniqueId: String { return "first-frame" } func isEqual(to: CachedMediaResourceRepresentation) -> Bool { if to is CachedVideoFirstFrameRepresentation { return true } else { return false } } } final class CachedScaledVideoFirstFrameRepresentation: CachedMediaResourceRepresentation { let size: CGSize var uniqueId: String { return "scaled-frame-\(Int(self.size.width))x\(Int(self.size.height))" } init(size: CGSize) { self.size = size } func isEqual(to: CachedMediaResourceRepresentation) -> Bool { if let to = to as? CachedScaledVideoFirstFrameRepresentation { return self.size == to.size } else { return false } } }