final class MutablePendingPeerNotificationSettingsView: MutablePostboxView { var entries: [PeerId: PeerNotificationSettings] = [:] init(postbox: PostboxImpl) { for peerId in postbox.pendingPeerNotificationSettingsIndexTable.getAll() { if let value = postbox.peerNotificationSettingsTable.getPending(peerId) { self.entries[peerId] = value } else { assertionFailure() } } } func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool { var updated = false for peerId in transaction.currentUpdatedPendingPeerNotificationSettings { if let value = postbox.peerNotificationSettingsTable.getPending(peerId) { self.entries[peerId] = value updated = true } else if self.entries[peerId] != nil { self.entries.removeValue(forKey: peerId) updated = true } } return updated } func refreshDueToExternalTransaction(postbox: PostboxImpl) -> Bool { return false } func immutableView() -> PostboxView { return PendingPeerNotificationSettingsView(self) } } public final class PendingPeerNotificationSettingsView: PostboxView { public let entries: [PeerId: PeerNotificationSettings] init(_ view: MutablePendingPeerNotificationSettingsView) { self.entries = view.entries } }