Swiftgram/Postbox/MessageOfInterestHolesView.swift

67 lines
2.0 KiB
Swift

import Foundation
public struct HolesViewMedia: Comparable {
public let media: Media
public let peer: Peer
public let authorIsContact: Bool
public let index: MessageIndex
public static func ==(lhs: HolesViewMedia, rhs: HolesViewMedia) -> Bool {
return lhs.index == rhs.index && (lhs.media === rhs.media || lhs.media.isEqual(to: rhs.media)) && lhs.peer.isEqual(rhs.peer) && lhs.authorIsContact == rhs.authorIsContact
}
public static func <(lhs: HolesViewMedia, rhs: HolesViewMedia) -> Bool {
return lhs.index < rhs.index
}
}
public struct MessageOfInterestHole: Hashable, Equatable {
public let hole: MessageHistoryViewHole
public let direction: MessageHistoryViewRelativeHoleDirection
}
public enum MessageOfInterestViewLocation: Hashable {
case peer(PeerId)
public static func ==(lhs: MessageOfInterestViewLocation, rhs: MessageOfInterestViewLocation) -> Bool {
switch lhs {
case let .peer(value):
if case .peer(value) = rhs {
return true
} else {
return false
}
}
}
public var hashValue: Int {
switch self {
case let .peer(id):
return id.hashValue
}
}
}
final class MutableMessageOfInterestHolesView: MutablePostboxView {
init(postbox: Postbox, location: MessageOfInterestViewLocation, namespace: MessageId.Namespace, count: Int) {
}
func replay(postbox: Postbox, transaction: PostboxTransaction) -> Bool {
return false
}
func immutableView() -> PostboxView {
return MessageOfInterestHolesView(self)
}
}
public final class MessageOfInterestHolesView: PostboxView {
public let closestHole: MessageOfInterestHole?
public let closestLaterMedia: [HolesViewMedia]
init(_ view: MutableMessageOfInterestHolesView) {
self.closestHole = nil
self.closestLaterMedia = []
}
}