Swiftgram/submodules/Postbox/Postbox/MultiplePeersView.swift
Peter 4459dc5b47 Add 'submodules/Postbox/' from commit '534443c710e63ff4ea595b5dc7be94550c467734'
git-subtree-dir: submodules/Postbox
git-subtree-mainline: 373769682ef152a8d5ef41ccb064a8387b2ca6f0
git-subtree-split: 534443c710e63ff4ea595b5dc7be94550c467734
2019-06-11 18:56:39 +01:00

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
}
}