Skip to content

Commit 228f397

Browse files
committed
Update ConfigCatProvider.kt
1 parent 8663344 commit 228f397

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

src/main/kotlin/com/configcat/ConfigCatProvider.kt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)