@@ -9,19 +9,11 @@ import KMPObservableViewModelCoreObjC
9
9
10
10
public extension ViewModel {
11
11
12
- private func setChildViewModelPublishers( _ keyPath: AnyKeyPath , _ publishers: AnyHashable ? ) {
13
- if let publishers = publishers {
14
- observableViewModelPublishers ( for: self ) . childPublishers [ keyPath] = publishers
15
- } else {
16
- observableViewModelPublishers ( for: self ) . childPublishers. removeValue ( forKey: keyPath)
17
- }
18
- }
19
-
20
12
private func setChildViewModel< VM: ViewModel > (
21
13
_ viewModel: VM ? ,
22
14
at keyPath: AnyKeyPath
23
15
) {
24
- setChildViewModelPublishers ( keyPath, observableViewModelPublishers ( for: viewModel) )
16
+ viewModelWillChange . cancellable . setChildCancellables ( keyPath, ViewModelCancellable . get ( for: viewModel) )
25
17
}
26
18
27
19
/// Stores a reference to the `ObservableObject` for the specified child `ViewModel`.
@@ -48,8 +40,8 @@ public extension ViewModel {
48
40
_ viewModels: [ VM ? ] ? ,
49
41
at keyPath: AnyKeyPath
50
42
) {
51
- setChildViewModelPublishers ( keyPath, viewModels? . map { viewModel in
52
- observableViewModelPublishers ( for: viewModel)
43
+ viewModelWillChange . cancellable . setChildCancellables ( keyPath, viewModels? . map { viewModel in
44
+ ViewModelCancellable . get ( for: viewModel)
53
45
} )
54
46
}
55
47
@@ -95,8 +87,8 @@ public extension ViewModel {
95
87
_ viewModels: Set < VM ? > ? ,
96
88
at keyPath: AnyKeyPath
97
89
) {
98
- setChildViewModelPublishers ( keyPath, viewModels? . map { viewModel in
99
- observableViewModelPublishers ( for: viewModel)
90
+ viewModelWillChange . cancellable . setChildCancellables ( keyPath, viewModels? . map { viewModel in
91
+ ViewModelCancellable . get ( for: viewModel)
100
92
} )
101
93
}
102
94
@@ -142,8 +134,8 @@ public extension ViewModel {
142
134
_ viewModels: [ Key : VM ? ] ? ,
143
135
at keyPath: AnyKeyPath
144
136
) {
145
- setChildViewModelPublishers ( keyPath, viewModels? . mapValues { viewModel in
146
- observableViewModelPublishers ( for: viewModel)
137
+ viewModelWillChange . cancellable . setChildCancellables ( keyPath, viewModels? . mapValues { viewModel in
138
+ ViewModelCancellable . get ( for: viewModel)
147
139
} )
148
140
}
149
141
0 commit comments