Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions android/src/main/java/dev/openfeature/sdk/OpenFeatureAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import kotlinx.coroutines.flow.flatMapLatest

@Suppress("TooManyFunctions")
object OpenFeatureAPI {
private var provider: FeatureProvider? = null
private val NOOP_PROVIDER = NoOpProvider()
private var provider: FeatureProvider = NOOP_PROVIDER
private var context: EvaluationContext? = null
private val providersFlow: MutableSharedFlow<FeatureProvider> = MutableSharedFlow(replay = 1)
internal val sharedProvidersFlow: SharedFlow<FeatureProvider> get() = providersFlow
Expand Down Expand Up @@ -40,26 +41,26 @@ object OpenFeatureAPI {
provider.awaitReadyOrError(dispatcher)
}

fun getProvider(): FeatureProvider? {
fun getProvider(): FeatureProvider {
return provider
}

fun clearProvider() {
provider = null
provider = NOOP_PROVIDER
}

fun setEvaluationContext(evaluationContext: EvaluationContext) {
val oldContext = context
context = evaluationContext
getProvider()?.onContextSet(oldContext, evaluationContext)
getProvider().onContextSet(oldContext, evaluationContext)
}

fun getEvaluationContext(): EvaluationContext? {
return context
}

fun getProviderMetadata(): ProviderMetadata? {
return provider?.metadata
return provider.metadata
}

fun getClient(name: String? = null, version: String? = null): Client {
Expand All @@ -75,7 +76,7 @@ object OpenFeatureAPI {
}

fun shutdown() {
provider?.shutdown()
provider.shutdown()
}

/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ class OpenFeatureClient(
val options = optionsIn ?: FlagEvaluationOptions(listOf(), mapOf())
val hints = options.hookHints
var details = FlagEvaluationDetails(key, defaultValue)
val provider = openFeatureAPI.getProvider() ?: NoOpProvider()
val provider = openFeatureAPI.getProvider()
val mergedHooks: List<Hook<*>> =
provider.hooks + options.hooks + hooks + openFeatureAPI.hooks
val context = openFeatureAPI.getEvaluationContext()
Expand Down