@@ -55,8 +55,10 @@ class ConfigCatProvider(
5555 options.hooks.addOnConfigChanged {
5656 val sn = client.snapshot()
5757 snapshot.value = sn
58- if (! initialized.value && sn.cacheState != ClientCacheState .NO_FLAG_DATA ) {
59- setInitialized()
58+ if (sn.cacheState != ClientCacheState .NO_FLAG_DATA && initialized.compareAndSet(expect = false , update = true )) {
59+ if (! events.tryEmit(OpenFeatureProviderEvents .ProviderReady )) {
60+ initialized.value = false
61+ }
6062 }
6163 }
6264 client = ConfigCatClient (sdkKey, options)
@@ -66,8 +68,8 @@ class ConfigCatProvider(
6668 val initialUser = initialContext?.toConfigCatUser()
6769 user.value = initialUser
6870 val state = client.waitForReady()
69- if (! initialized.value && state != ClientCacheState . NO_FLAG_DATA ) {
70- setInitialized( )
71+ if (state != ClientCacheState . NO_FLAG_DATA && initialized.compareAndSet(expect = false , update = true ) ) {
72+ events.emit( OpenFeatureProviderEvents . ProviderReady )
7173 }
7274 }
7375
@@ -144,14 +146,6 @@ class ConfigCatProvider(
144146
145147 override fun observe (): Flow <OpenFeatureProviderEvents > = events
146148
147- private fun setInitialized () {
148- if (initialized.compareAndSet(expect = false , update = true )) {
149- if (! events.tryEmit(OpenFeatureProviderEvents .ProviderReady )) {
150- initialized.value = false
151- }
152- }
153- }
154-
155149 private inline fun <reified T > eval (
156150 key : String ,
157151 defaultValue : T ,
0 commit comments