@@ -13,14 +13,14 @@ public final class ObservableViewModelPublisher: Publisher {
13
13
public typealias Output = Void
14
14
public typealias Failure = Never
15
15
16
- internal weak var viewModelScope : ViewModelScope ?
16
+ internal weak var viewModel : ( any KMMViewModel ) ?
17
17
18
18
private let publisher = ObservableObjectPublisher ( )
19
19
private var objectWillChangeCancellable : AnyCancellable ? = nil
20
20
21
- internal init ( _ viewModelScope : ViewModelScope , _ objectWillChange: ObservableObjectPublisher ) {
22
- self . viewModelScope = viewModelScope
23
- viewModelScope. setSendObjectWillChange { [ weak self] in
21
+ internal init ( _ viewModel : any KMMViewModel , _ objectWillChange: ObservableObjectPublisher ) {
22
+ self . viewModel = viewModel
23
+ viewModel . viewModelScope. setSendObjectWillChange { [ weak self] in
24
24
self ? . publisher. send ( )
25
25
}
26
26
objectWillChangeCancellable = objectWillChange. sink { [ weak self] _ in
@@ -29,12 +29,16 @@ public final class ObservableViewModelPublisher: Publisher {
29
29
}
30
30
31
31
public func receive< S> ( subscriber: S ) where S : Subscriber , Never == S . Failure , Void == S . Input {
32
- viewModelScope ? . increaseSubscriptionCount ( )
32
+ viewModel ? . viewModelScope . increaseSubscriptionCount ( )
33
33
publisher. receive ( subscriber: ObservableViewModelSubscriber ( self , subscriber) )
34
34
}
35
35
36
36
deinit {
37
- viewModelScope? . cancel ( )
37
+ guard let viewModel else { return }
38
+ if let cancellable = viewModel as? Cancellable {
39
+ cancellable. cancel ( )
40
+ }
41
+ viewModel. viewModelScope. cancel ( )
38
42
}
39
43
}
40
44
@@ -85,6 +89,6 @@ private class ObservableViewModelSubscription: Subscription {
85
89
subscription. cancel ( )
86
90
guard !cancelled else { return }
87
91
cancelled = true
88
- publisher. viewModelScope ? . decreaseSubscriptionCount ( )
92
+ publisher. viewModel ? . viewModelScope . decreaseSubscriptionCount ( )
89
93
}
90
94
}
0 commit comments