mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
73 lines
1.6 KiB
Swift
73 lines
1.6 KiB
Swift
import Foundation
|
|
|
|
public protocol MediaResourceId {
|
|
var uniqueId: String { get }
|
|
var hashValue: Int { get }
|
|
func isEqual(to: MediaResourceId) -> Bool
|
|
}
|
|
|
|
public struct WrappedMediaResourceId: Hashable {
|
|
public let id: MediaResourceId
|
|
|
|
public init(_ id: MediaResourceId) {
|
|
self.id = id
|
|
}
|
|
|
|
public static func ==(lhs: WrappedMediaResourceId, rhs: WrappedMediaResourceId) -> Bool {
|
|
return lhs.id.isEqual(to: rhs.id)
|
|
}
|
|
|
|
public var hashValue: Int {
|
|
return self.id.hashValue
|
|
}
|
|
}
|
|
|
|
public func anyHashableFromMediaResourceId(_ id: MediaResourceId) -> AnyHashable {
|
|
return AnyHashable(WrappedMediaResourceId(id))
|
|
}
|
|
|
|
public protocol MediaResource {
|
|
var id: MediaResourceId { get }
|
|
var size: Int? { get }
|
|
var streamable: Bool { get }
|
|
var headerSize: Int32 { get }
|
|
|
|
func isEqual(to: MediaResource) -> Bool
|
|
}
|
|
|
|
public extension MediaResource {
|
|
var size: Int? {
|
|
return nil
|
|
}
|
|
|
|
var streamable: Bool {
|
|
return false
|
|
}
|
|
|
|
var headerSize: Int32 {
|
|
return 0
|
|
}
|
|
}
|
|
|
|
public protocol CachedMediaResourceRepresentation {
|
|
var uniqueId: String { get }
|
|
var keepDuration: CachedMediaRepresentationKeepDuration { get }
|
|
func isEqual(to: CachedMediaResourceRepresentation) -> Bool
|
|
}
|
|
|
|
public protocol MediaResourceFetchTag {
|
|
}
|
|
|
|
public protocol MediaResourceFetchInfo {
|
|
}
|
|
|
|
public struct MediaResourceFetchParameters {
|
|
public let tag: MediaResourceFetchTag?
|
|
public let info: MediaResourceFetchInfo?
|
|
|
|
public init(tag: MediaResourceFetchTag?, info: MediaResourceFetchInfo?) {
|
|
self.tag = tag
|
|
self.info = info
|
|
}
|
|
}
|