From 218679e3225b629b6fe97741064c2845ed738523 Mon Sep 17 00:00:00 2001 From: Tanmay Ranjan Date: Wed, 8 May 2024 14:53:46 +0530 Subject: [PATCH] adding onReady() function --- .../kotlin/com/featurevisor/sdk/Conditions.kt | 2 +- .../kotlin/com/featurevisor/sdk/Instance.kt | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/featurevisor/sdk/Conditions.kt b/src/main/kotlin/com/featurevisor/sdk/Conditions.kt index 2bda4ec..dbd774c 100644 --- a/src/main/kotlin/com/featurevisor/sdk/Conditions.kt +++ b/src/main/kotlin/com/featurevisor/sdk/Conditions.kt @@ -114,7 +114,7 @@ object Conditions { attributeValue is AttributeValue.StringValue && conditionValue is ConditionValue.ArrayValue -> { when (operator) { IN_ARRAY -> attributeValue.value in conditionValue.values - NOT_IN_ARRAY -> (attributeValue.value in conditionValue.values).not() + NOT_IN_ARRAY -> (attributeValue.value !in conditionValue.values) else -> false } } diff --git a/src/main/kotlin/com/featurevisor/sdk/Instance.kt b/src/main/kotlin/com/featurevisor/sdk/Instance.kt index d833849..3688e87 100644 --- a/src/main/kotlin/com/featurevisor/sdk/Instance.kt +++ b/src/main/kotlin/com/featurevisor/sdk/Instance.kt @@ -7,8 +7,10 @@ import com.featurevisor.sdk.FeaturevisorError.MissingDatafileOptions import com.featurevisor.types.* import com.featurevisor.types.EventName.* import kotlinx.coroutines.Job +import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json +import kotlin.coroutines.resume typealias ConfigureBucketKey = (Feature, Context, BucketKey) -> BucketKey typealias ConfigureBucketValue = (Feature, Context, BucketValue) -> BucketValue @@ -122,6 +124,22 @@ class FeaturevisorInstance private constructor(options: InstanceOptions) { this.logger?.setLevels(levels) } + suspend fun onReady(): FeaturevisorInstance { + return suspendCancellableCoroutine { continuation -> + if (this.statuses.ready) { + continuation.resume(this) + } + + val cb :(result:Array) -> Unit = { + this.emitter.removeListener(READY) + continuation.resume(this) + } + + this.emitter.addListener(READY,cb) + } + } + + fun setDatafile(datafileJSON: String) { val data = datafileJSON.toByteArray(Charsets.UTF_8) try {