@@ -62,18 +62,23 @@ extension OptimizelyClient {
62
62
key: String ,
63
63
options: [ OptimizelyDecideOption ] ? = nil ) -> OptimizelyDecision {
64
64
65
- guard config != nil else {
65
+ guard let config = self . config else {
66
66
return OptimizelyDecision . errorDecision ( key: key, user: user, error: . sdkNotReady)
67
67
}
68
+
69
+ guard let _ = config. getFeatureFlag ( key: key) else {
70
+ return OptimizelyDecision . errorDecision ( key: key, user: user, error: . featureKeyInvalid( key) )
71
+ }
68
72
69
73
let allOptions = defaultDecideOptions + ( options ?? [ ] )
74
+ /// Need to remove enable flags
70
75
let decisionMap = decide ( user: user, keys: [ key] , options: allOptions)
71
76
return decisionMap [ key] ?? OptimizelyDecision . errorDecision ( key: key, user: user, error: . generic)
72
77
}
73
78
74
79
func decide( user: OptimizelyUserContext ,
75
- keys: [ String ] ,
76
- options: [ OptimizelyDecideOption ] ? = nil ) -> [ String : OptimizelyDecision ] {
80
+ keys: [ String ] ,
81
+ options: [ OptimizelyDecideOption ] ? = nil ) -> [ String : OptimizelyDecision ] {
77
82
guard let config = self . config else {
78
83
logger. e ( OptimizelyError . sdkNotReady)
79
84
return [ : ]
@@ -85,7 +90,7 @@ extension OptimizelyClient {
85
90
86
91
var validKeys = [ String] ( )
87
92
var flagsWithoutForceDecision = [ FeatureFlag] ( )
88
- var flagDecisions = [ String: FeatureDecision] ( )
93
+ var flagDecisions = [ String : FeatureDecision] ( )
89
94
var decisionReasonMap = [ String : DecisionReasons] ( )
90
95
91
96
let allOptions = options ?? [ ]
@@ -95,14 +100,15 @@ extension OptimizelyClient {
95
100
decisionMap [ key] = OptimizelyDecision . errorDecision ( key: key, user: user, error: . featureKeyInvalid( key) )
96
101
continue
97
102
}
103
+
98
104
validKeys. append ( key)
99
105
100
106
// check forced-decisions first
101
- let decisionReasons = DecisionReasons ( options: allOptions)
102
107
let forcedDecisionResponse = decisionService. findValidatedForcedDecision ( config: config,
103
108
user: user,
104
109
context: OptimizelyDecisionContext ( flagKey: key) )
105
110
111
+ let decisionReasons = DecisionReasons ( options: allOptions)
106
112
decisionReasons. merge ( forcedDecisionResponse. reasons)
107
113
decisionReasonMap [ key] = decisionReasons
108
114
0 commit comments