Михаил Капелько 10 months ago
parent
commit
e032918bf3
2 changed files with 44 additions and 14 deletions
  1. +2
    -14
      Modules/BusX/BusUI/src/BusUI.ManyTextField.swift
  2. +42
    -0
      Modules/BusX/BusUI/src/BusUI.ManyValue.swift

+ 2
- 14
Modules/BusX/BusUI/src/BusUI.ManyTextField.swift View File

@@ -8,13 +8,8 @@ extension BusUI {
let textUI: String let textUI: String
@Published public var id: String? @Published public var id: String?
@Published public var v = "a:" @Published public var v = "a:"
{
didSet {
/**/print("ИГР BusUMTF.v didSet: '\(v)'")
}
}
var subscriptions = [AnyCancellable]()
var sub = [AnyCancellable]() var sub = [AnyCancellable]()
var subscriptions = [AnyCancellable]()
public init( public init(
_ textApp: String, _ textApp: String,
@@ -22,17 +17,13 @@ extension BusUI {
) { ) {
self.textApp = textApp self.textApp = textApp
self.textUI = textUI self.textUI = textUI
/**///print("ИГР BusUTF(\(Unmanaged.passUnretained(self).toOpaque())).init textA/textU: '\(textApp)'/'\(textUI)'")


$id $id
.sink { [weak self] v in self?.setup(v) }
.sink { [weak self] id in self?.setup(id) }
.store(in: &sub) .store(in: &sub)
} }


private func setup(_ id: String?) { private func setup(_ id: String?) {
/**/print("ИГР BusUTF(\(Unmanaged.passUnretained(self).toOpaque())).setup id: '\(id)'")

subscriptions = [] subscriptions = []


Bus.sendSync( Bus.sendSync(
@@ -57,7 +48,6 @@ extension BusUI {
Bus.receiveSync( Bus.receiveSync(
[textApp], [textApp],
{ [weak self] (_, m: MPAK.Many<String>) in { [weak self] (_, m: MPAK.Many<String>) in
/**/print("ИГР BusUMTF.receiveS-1 id: '\(id)'")
guard guard
let id, let id,
m.keys.contains(id), m.keys.contains(id),
@@ -65,8 +55,6 @@ extension BusUI {
else { else {
return return
} }
/**/print("ИГР BusUMTF.receiveS-2 id: '\(id)'")

self?.v = "a:\(text)" self?.v = "a:\(text)"
}, },
&subscriptions &subscriptions


+ 42
- 0
Modules/BusX/BusUI/src/BusUI.ManyValue.swift 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
)
}
}
}

Loading…
Cancel
Save