Swiftgram/submodules/Postbox/Sources/ChatInterfaceStateView.swift
2024-02-02 14:32:13 +01:00

49 lines
1.3 KiB
Swift

import Foundation
final class MutableChatInterfaceStateView: MutablePostboxView {
fileprivate let peerId: PeerId
fileprivate var value: StoredPeerChatInterfaceState?
init(postbox: PostboxImpl, peerId: PeerId) {
self.peerId = peerId
self.reload(postbox: postbox)
}
private func reload(postbox: PostboxImpl) {
self.value = postbox.peerChatInterfaceStateTable.get(self.peerId)
}
func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool {
var updated = false
if transaction.currentUpdatedPeerChatListEmbeddedStates.contains(self.peerId) {
let previousValue = self.value
self.reload(postbox: postbox)
if previousValue != self.value {
updated = true
}
}
return updated
}
func refreshDueToExternalTransaction(postbox: PostboxImpl) -> Bool {
self.reload(postbox: postbox)
return true
}
func immutableView() -> PostboxView {
return ChatInterfaceStateView(self)
}
}
public final class ChatInterfaceStateView: PostboxView {
public let value: StoredPeerChatInterfaceState?
init(_ view: MutableChatInterfaceStateView) {
self.value = view.value
}
}