37 lines
794 B
Swift
37 lines
794 B
Swift
import Combine
|
|
import MPAKX
|
|
|
|
extension BusUI {
|
|
public final class ManyButton: ObservableObject {
|
|
let key: String
|
|
public let v = PassthroughSubject<Void, Never>()
|
|
@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
|
|
)
|
|
}
|
|
}
|
|
}
|