Swiftgram/submodules/Postbox/Sources/ChatListIndexView.swift
2022-05-28 18:26:23 +04:00

55 lines
1.8 KiB
Swift

import Foundation
final class MutableChatListIndexView: MutablePostboxView {
fileprivate let id: PeerId
fileprivate var chatListIndex: ChatListIndex?
fileprivate var inclusion: PeerChatListInclusion
init(postbox: PostboxImpl, id: PeerId) {
self.id = id
self.chatListIndex = postbox.chatListIndexTable.get(peerId: id).includedIndex(peerId: self.id)?.1
self.inclusion = postbox.chatListIndexTable.get(peerId: id).inclusion
}
func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool {
var updated = false
if transaction.currentUpdatedChatListInclusions[self.id] != nil || transaction.currentOperationsByPeerId[self.id] != nil {
updated = true
}
if updated {
let chatListIndex = postbox.chatListIndexTable.get(peerId: id).includedIndex(peerId: self.id)?.1
let inclusion = postbox.chatListIndexTable.get(peerId: id).inclusion
if self.chatListIndex != chatListIndex || self.inclusion != inclusion {
self.chatListIndex = chatListIndex
self.inclusion = inclusion
return true
} else {
return false
}
} else {
return false
}
}
func refreshDueToExternalTransaction(postbox: PostboxImpl) -> Bool {
return false
}
func immutableView() -> PostboxView {
return ChatListIndexView(self)
}
}
public final class ChatListIndexView: PostboxView {
public let chatListIndex: ChatListIndex?
public let inclusion: PeerChatListInclusion
init(_ view: MutableChatListIndexView) {
self.chatListIndex = view.chatListIndex
self.inclusion = view.inclusion
}
}