Skip to content

Commit 1a9a8af

Browse files
[FSSDK-10766] shouldIgnore logic fix
1 parent ce2a3f9 commit 1a9a8af

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

lib/core/decision_service/index.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ export class DecisionService {
119119
configObj: ProjectConfig,
120120
experiment: Experiment,
121121
user: OptimizelyUserContext,
122-
userProfileTracker?: UserProfileTracker
122+
shouldIgnoreUPS: boolean,
123+
userProfileTracker: UserProfileTracker
123124
): DecisionResponse<string | null> {
124125
const userId = user.getUserId();
125126
const attributes = user.getAttributes();
@@ -157,7 +158,7 @@ export class DecisionService {
157158

158159

159160
// check for sticky bucketing if decide options do not include shouldIgnoreUPS
160-
if (userProfileTracker) {
161+
if (!shouldIgnoreUPS) {
161162
variation = this.getStoredVariation(configObj, experiment, userId, userProfileTracker.userProfile);
162163
if (variation) {
163164
this.logger.log(
@@ -254,7 +255,7 @@ export class DecisionService {
254255
experimentKey,
255256
]);
256257
// persist bucketing if decide options do not include shouldIgnoreUPS
257-
if (userProfileTracker) {
258+
if (!shouldIgnoreUPS) {
258259
this.updateUserProfile(experiment, variation, userProfileTracker);
259260
}
260261

@@ -288,7 +289,7 @@ export class DecisionService {
288289
userProfileTracker.userProfile = this.resolveExperimentBucketMap(user.getUserId(), user.getAttributes());
289290
}
290291

291-
const result = this.resolveVariation(configObj, experiment, user, userProfileTracker);
292+
const result = this.resolveVariation(configObj, experiment, user, shouldIgnoreUPS, userProfileTracker);
292293

293294
if(!shouldIgnoreUPS) {
294295
this.saveUserProfile(user.getUserId(), userProfileTracker)
@@ -611,7 +612,7 @@ export class DecisionService {
611612

612613
for(const feature of featureFlags) {
613614
const decideReasons: (string | number)[][] = [];
614-
const decisionVariation = this.getVariationForFeatureExperiment(configObj, feature, user, userProfileTracker);
615+
const decisionVariation = this.getVariationForFeatureExperiment(configObj, feature, user, shouldIgnoreUPS, userProfileTracker);
615616
decideReasons.push(...decisionVariation.reasons);
616617
const experimentDecision = decisionVariation.result;
617618

@@ -678,7 +679,8 @@ export class DecisionService {
678679
configObj: ProjectConfig,
679680
feature: FeatureFlag,
680681
user: OptimizelyUserContext,
681-
userProfileTracker?: UserProfileTracker
682+
shouldIgnoreUPS: boolean,
683+
userProfileTracker: UserProfileTracker
682684
): DecisionResponse<DecisionObj> {
683685

684686
const decideReasons: (string | number)[][] = [];
@@ -693,7 +695,7 @@ export class DecisionService {
693695
for (index = 0; index < feature.experimentIds.length; index++) {
694696
const experiment = getExperimentFromId(configObj, feature.experimentIds[index], this.logger);
695697
if (experiment) {
696-
decisionVariation = this.getVariationFromExperimentRule(configObj, feature.key, experiment, user, userProfileTracker);
698+
decisionVariation = this.getVariationFromExperimentRule(configObj, feature.key, experiment, user, shouldIgnoreUPS, userProfileTracker);
697699
decideReasons.push(...decisionVariation.reasons);
698700
variationKey = decisionVariation.result;
699701
if (variationKey) {
@@ -1190,7 +1192,8 @@ export class DecisionService {
11901192
flagKey: string,
11911193
rule: Experiment,
11921194
user: OptimizelyUserContext,
1193-
userProfileTracker?: UserProfileTracker
1195+
shouldIgnoreUPS: boolean,
1196+
userProfileTracker: UserProfileTracker
11941197
): DecisionResponse<string | null> {
11951198
const decideReasons: (string | number)[][] = [];
11961199

@@ -1205,7 +1208,7 @@ export class DecisionService {
12051208
reasons: decideReasons,
12061209
};
12071210
}
1208-
const decisionVariation = this.resolveVariation(configObj, rule, user, userProfileTracker);
1211+
const decisionVariation = this.resolveVariation(configObj, rule, user, shouldIgnoreUPS, userProfileTracker);
12091212
decideReasons.push(...decisionVariation.reasons);
12101213
const variationKey = decisionVariation.result;
12111214

0 commit comments

Comments
 (0)