Skip to content

Commit f28b374

Browse files
authored
Merge pull request #160 from optimizely/twzFixWhitelist
(fix):fix whitelist users and cleanup config
2 parents ae79255 + 31cc991 commit f28b374

File tree

2 files changed

+11
-19
lines changed

2 files changed

+11
-19
lines changed

OptimizelySDK/Data Model/ProjectConfig.swift

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ class ProjectConfig {
2424
// local runtime forcedVariations [UserId: [ExperimentId: VariationId]]
2525
// NOTE: experiment.forcedVariations use [ExperimentKey: VariationKey] instead of ids
2626

27-
private var whitelistUsers = [String: [String: String]]()
28-
private var experimentFeatureMap = [String: [String]]()
27+
var whitelistUsers = [String: [String: String]]()
2928

3029
init(datafile: Data) throws {
3130
do {
@@ -36,7 +35,6 @@ class ProjectConfig {
3635
if !isValidVersion(version: self.project.version) {
3736
throw OptimizelyError.dataFileVersionInvalid(self.project.version)
3837
}
39-
generateExperimentFeatureMap()
4038
}
4139

4240
convenience init(datafile: String) throws {
@@ -90,20 +88,6 @@ extension ProjectConfig {
9088
// old versions (< 4) of datafiles not supported
9189
return ["4"].contains(version)
9290
}
93-
94-
private func generateExperimentFeatureMap() {
95-
for feature in project.featureFlags {
96-
for id in feature.experimentIds {
97-
if var featureIdArray = experimentFeatureMap[id] {
98-
featureIdArray.append(feature.id)
99-
experimentFeatureMap[id] = featureIdArray
100-
}
101-
else {
102-
experimentFeatureMap[id] = [feature.id]
103-
}
104-
}
105-
}
106-
}
10791
}
10892

10993
// MARK: - Project Access
@@ -192,7 +176,12 @@ extension ProjectConfig {
192176
* Returns true if experiment belongs to any feature, false otherwise.
193177
*/
194178
func isFeatureExperiment(id: String) -> Bool {
195-
return experimentFeatureMap.keys.contains(id)
179+
if let _ = project.featureFlags.map({ $0.experimentIds.contains(id)}).first {
180+
return true
181+
}
182+
else {
183+
return false
184+
}
196185
}
197186

198187
/**

OptimizelySDK/Optimizely/OptimizelyManager.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,11 @@ open class OptimizelyManager: NSObject {
146146
// new datafile came in...
147147
self.reInitLock.wait(); defer { self.reInitLock.signal() }
148148
if let config = try? ProjectConfig(datafile: data) {
149-
150149
do {
150+
if let users = self.config?.whitelistUsers {
151+
config.whitelistUsers = users
152+
}
153+
151154
self.config = config
152155

153156
// call reinit on the services we know we are reinitializing.

0 commit comments

Comments
 (0)