File tree 1 file changed +15
-4
lines changed
1 file changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -3,12 +3,21 @@ import Combine
3
3
4
4
/// A global singleton which holds base configuration for the OpenFeature library.
5
5
/// Configuration here will be shared across all ``Client``s.
6
- public class OpenFeatureAPI : GlobalEventPublisher {
7
- private var _provider : FeatureProvider ?
6
+ public class OpenFeatureAPI {
7
+ private var _provider : FeatureProvider ? {
8
+ set {
9
+ providerSubject. send ( newValue)
10
+ }
11
+
12
+ get {
13
+ providerSubject. value
14
+ }
15
+ }
8
16
private var _context : EvaluationContext ?
9
17
private( set) var hooks : [ any Hook ] = [ ]
10
18
private var providerObserver : AnyCancellable ?
11
19
private var globalEventState = PassthroughSubject < ProviderEvent , Never > ( )
20
+ private var providerSubject = CurrentValueSubject < FeatureProvider ? , Never > ( nil )
12
21
13
22
/// The ``OpenFeatureAPI`` singleton
14
23
static public let shared = OpenFeatureAPI ( )
@@ -70,8 +79,10 @@ public class OpenFeatureAPI: GlobalEventPublisher {
70
79
self . hooks. removeAll ( )
71
80
}
72
81
73
- public func observe( ) -> PassthroughSubject < ProviderEvent , Never > {
74
- return globalEventState
82
+ public func observe( ) -> any Publisher < ProviderEvent , Never > {
83
+ return providerSubject
84
+ . filter ( { provider in provider != nil } )
85
+ . flatMap ( { provider in provider!. observe ( ) } )
75
86
}
76
87
77
88
struct Handler {
You can’t perform that action at this time.
0 commit comments