import Foundation final class MutableCachedPeerDataView: MutablePostboxView { let peerId: PeerId var cachedPeerData: CachedPeerData? init(postbox: PostboxImpl, peerId: PeerId) { self.peerId = peerId self.cachedPeerData = postbox.cachedPeerDataTable.get(peerId) } func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool { if let cachedPeerData = transaction.currentUpdatedCachedPeerData[self.peerId] { self.cachedPeerData = cachedPeerData return true } else { return false } } func refreshDueToExternalTransaction(postbox: PostboxImpl) -> Bool { return false } func immutableView() -> PostboxView { return CachedPeerDataView(self) } } public final class CachedPeerDataView: PostboxView { public let peerId: PeerId public let cachedPeerData: CachedPeerData? init(_ view: MutableCachedPeerDataView) { self.peerId = view.peerId self.cachedPeerData = view.cachedPeerData } }