import Combine import MPAKX extension BusUI { public final class ManyButton: ObservableObject { let key: String public let v = PassthroughSubject() @Published public var id: String? var sub = [AnyCancellable]() var subscriptions = [AnyCancellable]() public init(_ key: String) { self.key = key $id .sink { [weak self] id in self?.setup(id) } .store(in: &sub) } private func setup(_ id: String?) { subscriptions = [] Bus.sendSync( key, v .compactMap { v -> Any? in guard let id else { return nil } var d = [String: Bool]() return MPAK.Many([id], d) } .eraseToAnyPublisher(), &subscriptions ) } } }