From 1f54e0bbf6c4f54bfaf5ad73db123f5863c080ba Mon Sep 17 00:00:00 2001 From: Polina Nguen Date: Tue, 12 Jan 2021 17:09:40 -0800 Subject: [PATCH 1/2] Clone OptimizelyUsercOntext before calling decide apis --- .../lib/optimizely_user_context/index.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/optimizely-sdk/lib/optimizely_user_context/index.ts b/packages/optimizely-sdk/lib/optimizely_user_context/index.ts index c3f713f62..d60d33ce1 100644 --- a/packages/optimizely-sdk/lib/optimizely_user_context/index.ts +++ b/packages/optimizely-sdk/lib/optimizely_user_context/index.ts @@ -69,7 +69,7 @@ export default class OptimizelyUserContext { options: OptimizelyDecideOptions[] = [] ): OptimizelyDecision { - return this.optimizely.decide(this, key, options); + return this.optimizely.decide(this.cloneUserContext(), key, options); } /** @@ -85,7 +85,7 @@ export default class OptimizelyUserContext { options: OptimizelyDecideOptions[] = [], ): { [key: string]: OptimizelyDecision } { - return this.optimizely.decideForKeys(this, keys, options); + return this.optimizely.decideForKeys(this.cloneUserContext(), keys, options); } /** @@ -97,7 +97,7 @@ export default class OptimizelyUserContext { options: OptimizelyDecideOptions[] = [] ): { [key: string]: OptimizelyDecision } { - return this.optimizely.decideAll(this, options); + return this.optimizely.decideAll(this.cloneUserContext(), options); } /** @@ -108,4 +108,12 @@ export default class OptimizelyUserContext { trackEvent(eventName: string, eventTags?: EventTags): void { this.optimizely.track(eventName, this.userId, this.attributes, eventTags); } + + private cloneUserContext(): OptimizelyUserContext { + return new OptimizelyUserContext({ + optimizely: this.getOptimizely(), + userId: this.getUserId(), + attributes: this.getAttributes(), + }) + } } From 7433b9e24868b946a3dc5fe6bdacda731da8e76e Mon Sep 17 00:00:00 2001 From: Polina Nguen Date: Wed, 13 Jan 2021 09:17:06 -0800 Subject: [PATCH 2/2] Add description to decision params --- packages/optimizely-sdk/lib/optimizely_decision/index.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/optimizely-sdk/lib/optimizely_decision/index.ts b/packages/optimizely-sdk/lib/optimizely_decision/index.ts index ac0a7a8fc..f0698881d 100644 --- a/packages/optimizely-sdk/lib/optimizely_decision/index.ts +++ b/packages/optimizely-sdk/lib/optimizely_decision/index.ts @@ -17,11 +17,17 @@ import OptimizelyUserContext from '../optimizely_user_context'; export interface OptimizelyDecision { variationKey: string | null; + // The boolean value indicating if the flag is enabled or not enabled: boolean; + // The collection of variables associated with the decision variables: { [variableKey: string]: unknown }; + // The rule key of the decision ruleKey: string | null; + // The flag key for which the decision has been made for flagKey: string; + // A copy of the user context for which the decision has been made for userContext: OptimizelyUserContext; + // An array of error/info messages describing why the decision has been made. reasons: string[]; }