mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
53 lines
1.5 KiB
Swift
53 lines
1.5 KiB
Swift
import Foundation
|
|
|
|
final class MutableMultiplePeersView {
|
|
let peerIds: Set<PeerId>
|
|
|
|
var peers: [PeerId: Peer] = [:]
|
|
var presences: [PeerId: PeerPresence] = [:]
|
|
|
|
init(peerIds: [PeerId], getPeer: (PeerId) -> Peer?, getPeerPresence: (PeerId) -> PeerPresence?) {
|
|
self.peerIds = Set(peerIds)
|
|
|
|
for peerId in self.peerIds {
|
|
if let peer = getPeer(peerId) {
|
|
self.peers[peerId] = peer
|
|
}
|
|
if let presence = getPeerPresence(peerId) {
|
|
self.presences[peerId] = presence
|
|
}
|
|
}
|
|
}
|
|
|
|
func replay(updatedPeers: [PeerId: Peer], updatedPeerPresences: [PeerId: PeerPresence]) -> Bool {
|
|
if updatedPeers.isEmpty && updatedPeerPresences.isEmpty {
|
|
return false
|
|
}
|
|
|
|
var updated = false
|
|
|
|
for peerId in self.peerIds {
|
|
if let peer = updatedPeers[peerId] {
|
|
self.peers[peerId] = peer
|
|
updated = true
|
|
}
|
|
if let presence = updatedPeerPresences[peerId] {
|
|
self.presences[peerId] = presence
|
|
updated = true
|
|
}
|
|
}
|
|
|
|
return updated
|
|
}
|
|
}
|
|
|
|
public final class MultiplePeersView {
|
|
public let peers: [PeerId: Peer]
|
|
public let presences: [PeerId: PeerPresence]
|
|
|
|
init(_ view: MutableMultiplePeersView) {
|
|
self.peers = view.peers
|
|
self.presences = view.presences
|
|
}
|
|
}
|