final class MutableFailedMessageIdsView { let peerId: PeerId var ids: Set init(peerId: PeerId, ids: [MessageId]) { self.peerId = peerId self.ids = Set(ids) } func replay(postbox: PostboxImpl, transaction: PostboxTransaction) -> Bool { let ids = transaction.updatedFailedMessageIds.filter { $0.peerId == self.peerId } let updated = ids != self.ids self.ids = ids return updated } func immutableView() -> FailedMessageIdsView { return FailedMessageIdsView(self.ids) } } public final class FailedMessageIdsView { public let ids: Set fileprivate init(_ ids: Set) { self.ids = ids } }