|
1314 | 1314 | var OptimizelyContextConsumer = Consumer;
|
1315 | 1315 | var OptimizelyContextProvider = Provider;
|
1316 | 1316 |
|
| 1317 | + /** |
| 1318 | + * Wrapper to memoize the userId / userAttributes around an OptimizelySDKWrapper instance |
| 1319 | + * |
| 1320 | + * @param {{ |
| 1321 | + * instance: OptimizelySDKWrapper |
| 1322 | + * userId: string |
| 1323 | + * attributes?: UserAttributes |
| 1324 | + * }} { |
| 1325 | + * instance, |
| 1326 | + * userId, |
| 1327 | + * attributes, |
| 1328 | + * } |
| 1329 | + * @returns |
| 1330 | + */ |
| 1331 | + function createUserWrapper(_a) { |
| 1332 | + var instance = _a.instance, userId = _a.userId, userAttributes = _a.userAttributes; |
| 1333 | + function getUserIdAndAttributes(overrideUserId, overrideAttributes) { |
| 1334 | + var finalUserId = overrideUserId !== undefined ? overrideUserId : userId; |
| 1335 | + var finalUserAttributes = overrideAttributes !== undefined ? overrideAttributes : userAttributes; |
| 1336 | + return [finalUserId, finalUserAttributes || {}]; |
| 1337 | + } |
| 1338 | + return __assign({}, instance, { activate: function (experimentKey, overrideUserId, overrideAttributes) { |
| 1339 | + return instance.activate.apply(instance, [experimentKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes))); |
| 1340 | + }, |
| 1341 | + getVariation: function (experimentKey, overrideUserId, overrideAttributes) { |
| 1342 | + return instance.getVariation.apply(instance, [experimentKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes))); |
| 1343 | + }, |
| 1344 | + getFeatureVariables: function (featureKey, overrideUserId, overrideAttributes) { |
| 1345 | + return instance.getFeatureVariables.apply(instance, [featureKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes))); |
| 1346 | + }, |
| 1347 | + getFeatureVariableInteger: function (featureKey, variableKey, overrideUserId, overrideAttributes) { |
| 1348 | + return instance.getFeatureVariableInteger.apply(instance, [featureKey, |
| 1349 | + variableKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes))); |
| 1350 | + }, |
| 1351 | + getFeatureVariableString: function (featureKey, variableKey, overrideUserId, overrideAttributes) { |
| 1352 | + return instance.getFeatureVariableString.apply(instance, [featureKey, |
| 1353 | + variableKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes))); |
| 1354 | + }, |
| 1355 | + getFeatureVariableBoolean: function (featureKey, variableKey, overrideUserId, overrideAttributes) { |
| 1356 | + return instance.getFeatureVariableBoolean.apply(instance, [featureKey, |
| 1357 | + variableKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes))); |
| 1358 | + }, |
| 1359 | + getFeatureVariableDouble: function (featureKey, variableKey, overrideUserId, overrideAttributes) { |
| 1360 | + return instance.getFeatureVariableDouble.apply(instance, [featureKey, |
| 1361 | + variableKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes))); |
| 1362 | + }, |
| 1363 | + isFeatureEnabled: function (featureKey, overrideUserId, overrideAttributes) { |
| 1364 | + return instance.isFeatureEnabled.apply(instance, [featureKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes))); |
| 1365 | + }, |
| 1366 | + track: function (eventKey, overrideUserId, overrideAttributes, eventTags) { |
| 1367 | + if (typeof overrideUserId !== 'undefined' && typeof overrideUserId !== 'string') { |
| 1368 | + eventTags = overrideUserId; |
| 1369 | + overrideUserId = undefined; |
| 1370 | + overrideAttributes = undefined; |
| 1371 | + } |
| 1372 | + var _a = getUserIdAndAttributes(overrideUserId, overrideAttributes), userId = _a[0], attributes = _a[1]; |
| 1373 | + return instance.track(eventKey, userId, attributes, eventTags); |
| 1374 | + } }); |
| 1375 | + } |
| 1376 | + |
1317 | 1377 | var OptimizelyProvider = /** @class */ (function (_super) {
|
1318 | 1378 | __extends(OptimizelyProvider, _super);
|
1319 | 1379 | function OptimizelyProvider(props) {
|
1320 | 1380 | var _this = _super.call(this, props) || this;
|
1321 |
| - var timeout = props.timeout, optimizely = props.optimizely; |
1322 |
| - _this.sdkWrapper = optimizely; |
| 1381 | + var optimizely = props.optimizely, userId = props.userId, userAttributes = props.userAttributes; |
| 1382 | + console.log('creating wrapper', userId, userAttributes); |
| 1383 | + _this.sdkWrapper = createUserWrapper({ |
| 1384 | + instance: optimizely, |
| 1385 | + userId: userId, |
| 1386 | + userAttributes: userAttributes, |
| 1387 | + }); |
1323 | 1388 | return _this;
|
1324 | 1389 | }
|
1325 | 1390 | OptimizelyProvider.prototype.render = function () {
|
1326 | 1391 | var _a = this.props, children = _a.children, timeout = _a.timeout;
|
1327 | 1392 | var value = {
|
1328 | 1393 | optimizely: this.sdkWrapper,
|
| 1394 | + timeout: timeout, |
1329 | 1395 | };
|
1330 |
| - if (timeout !== undefined) { |
1331 |
| - value['timeout'] = timeout; |
1332 |
| - } |
1333 | 1396 | return (React.createElement(OptimizelyContextProvider, { value: value }, children));
|
1334 | 1397 | };
|
1335 | 1398 | return OptimizelyProvider;
|
|
0 commit comments