diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/events/EventHandler.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/events/EventHandler.kt index 45fa3fe..d5813a0 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/events/EventHandler.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/events/EventHandler.kt @@ -37,6 +37,7 @@ class EventHandler(dispatcher: CoroutineDispatcher) : EventObserver, EventsPubli sharedFlow.collect { when (it) { is OpenFeatureEvents.ProviderReady -> isProviderReady.value = true + is OpenFeatureEvents.ProviderStale -> isProviderReady.value = false is OpenFeatureEvents.ProviderShutDown -> { isProviderReady.value = false job.cancelChildren() diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/events/OpenFeatureEvents.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/events/OpenFeatureEvents.kt index e6d0e79..90a1a8c 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/events/OpenFeatureEvents.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/events/OpenFeatureEvents.kt @@ -2,7 +2,6 @@ package dev.openfeature.sdk.events sealed class OpenFeatureEvents { object ProviderReady : OpenFeatureEvents() - object ProviderConfigurationChanged : OpenFeatureEvents() data class ProviderError(val error: Throwable) : OpenFeatureEvents() object ProviderStale : OpenFeatureEvents() object ProviderShutDown : OpenFeatureEvents() diff --git a/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt b/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt index 4b42af0..e019bc1 100644 --- a/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt +++ b/OpenFeature/src/test/java/dev/openfeature/sdk/EventsHandlerTest.kt @@ -151,6 +151,27 @@ class EventsHandlerTest { Assert.assertTrue(isProviderReady) } + @Test + fun the_provider_becomes_stale() = runTest { + val eventPublisher = EventHandler.eventsPublisher() + var isProviderStale = false + + val job = backgroundScope.launch(UnconfinedTestDispatcher(testScheduler)) { + EventHandler.eventsObserver() + .observe() + .take(1) + .collect { + isProviderStale = true + } + } + + eventPublisher.publish(OpenFeatureEvents.ProviderReady) + eventPublisher.publish(OpenFeatureEvents.ProviderStale) + job.join() + + Assert.assertTrue(isProviderStale) + } + @Test fun observe_string_value_from_client_works() = runTest { val testDispatcher = UnconfinedTestDispatcher(testScheduler)