This commit is contained in:
Михаил Капелько
2024-01-08 18:06:11 +03:00
parent 00a9a25997
commit e032918bf3
2 changed files with 44 additions and 14 deletions

View File

@@ -0,0 +1,42 @@
import Combine
extension BusUI {
public final class Value<T>: ObservableObject {
let key: String
@Published public var id: String?
@Published public var v: T
var sub = [AnyCancellable]()
var subscriptions = [AnyCancellable]()
public init(
_ key: String,
_ defaultValue: T
) {
self.key = key
v = defaultValue
$id
.sink { [weak self] id in self?.setup(id) }
.store(in: &sub)
}
private func setup(_ id: String?) {
subscriptions = []
Bus.receiveSync(
[key],
{ [weak self] (_, m: MPAK.Many<T>) in
guard
let id,
m.keys.contains(id),
let v = m.dict[id]
else {
return
}
self?.v = v
},
&subscriptions
)
}
}
}