Skip to content

Commit a37cfb2

Browse files
authored
feat: Added React Native Client Engines to be sent in events (#696)
## Summary Added Two new client engine values to be sent in events. **react-native-sdk**: Client name will be set to `react-native-sdk` when a react native application will use react sdk i.e `@optimizely/react-sdk`. **react-native-js-sdk**: Client name will be set to `react-native-js-sdk` when a react native application will use javascript sdk directly i.e `@optimizely/optimizely-sdk`. ### Client Versions Client versions behave the way they did without any change. Current behaviour is. 1. When a react native app uses javascript SDK directly, clientVersion will be the version of javascript SDK. Which means `react-native-js-sdk` goes with `clientVersion` of javascript SDK. 2. When a react native app uses React SDK, clientVersion will be the version passed in by react SDK. This means `react-native-sdk` goes with `clientVersion` of react SDK. ## Test plan Made appropriate changes to already existing unit tests.
1 parent 930c473 commit a37cfb2

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

packages/optimizely-sdk/lib/index.react_native.tests.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ describe('javascript-sdk/react-native', function() {
9292
assert.equal(optlyInstance.clientVersion, '4.6.2');
9393
});
9494

95-
it('should set the Javascript client engine and version', function() {
95+
it('should set the React Native JS client engine and javascript SDK version', function() {
9696
var optlyInstance = optimizelyFactory.createInstance({
9797
datafile: {},
9898
errorHandler: fakeErrorHandler,
@@ -101,11 +101,11 @@ describe('javascript-sdk/react-native', function() {
101101
});
102102
// Invalid datafile causes onReady Promise rejection - catch this error
103103
optlyInstance.onReady().catch(function() {});
104-
assert.equal('javascript-sdk', optlyInstance.clientEngine);
104+
assert.equal('react-native-js-sdk', optlyInstance.clientEngine);
105105
assert.equal(packageJSON.version, optlyInstance.clientVersion);
106106
});
107107

108-
it('should allow passing of "react-sdk" as the clientEngine', function() {
108+
it('should allow passing of "react-sdk" as the clientEngine and convert it to "react-native-sdk"', function() {
109109
var optlyInstance = optimizelyFactory.createInstance({
110110
clientEngine: 'react-sdk',
111111
datafile: {},
@@ -115,7 +115,7 @@ describe('javascript-sdk/react-native', function() {
115115
});
116116
// Invalid datafile causes onReady Promise rejection - catch this error
117117
optlyInstance.onReady().catch(function() {});
118-
assert.equal('react-sdk', optlyInstance.clientEngine);
118+
assert.equal('react-native-sdk', optlyInstance.clientEngine);
119119
});
120120

121121
it('should activate with provided event dispatcher', function() {

packages/optimizely-sdk/lib/index.react_native.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ const createInstance = function(config: SDKOptions): Optimizely | null {
8484
}
8585

8686
const optimizelyOptions = {
87-
clientEngine: enums.JAVASCRIPT_CLIENT_ENGINE,
87+
clientEngine: enums.REACT_NATIVE_JS_CLIENT_ENGINE,
8888
eventDispatcher: defaultEventDispatcher,
8989
eventMaxQueueSize: DEFAULT_EVENT_MAX_QUEUE_SIZE,
9090
...config,
@@ -94,6 +94,11 @@ const createInstance = function(config: SDKOptions): Optimizely | null {
9494
errorHandler: getErrorHandler()
9595
};
9696

97+
// If client engine is react, convert it to react native.
98+
if (optimizelyOptions.clientEngine === enums.REACT_CLIENT_ENGINE) {
99+
optimizelyOptions.clientEngine = enums.REACT_NATIVE_CLIENT_ENGINE;
100+
}
101+
97102
return new Optimizely(optimizelyOptions);
98103
} catch (e) {
99104
logger.error(e);

packages/optimizely-sdk/lib/utils/enums/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,16 @@ export const CONTROL_ATTRIBUTES = {
176176
export const JAVASCRIPT_CLIENT_ENGINE = 'javascript-sdk';
177177
export const NODE_CLIENT_ENGINE = 'node-sdk';
178178
export const REACT_CLIENT_ENGINE = 'react-sdk';
179+
export const REACT_NATIVE_CLIENT_ENGINE = 'react-native-sdk';
180+
export const REACT_NATIVE_JS_CLIENT_ENGINE = 'react-native-js-sdk';
179181
export const NODE_CLIENT_VERSION = '4.6.2';
180182

181183
export const VALID_CLIENT_ENGINES = [
182184
NODE_CLIENT_ENGINE,
183185
REACT_CLIENT_ENGINE,
184186
JAVASCRIPT_CLIENT_ENGINE,
187+
REACT_NATIVE_CLIENT_ENGINE,
188+
REACT_NATIVE_JS_CLIENT_ENGINE,
185189
];
186190

187191
export const NOTIFICATION_TYPES = notificationTypesEnum;

0 commit comments

Comments
 (0)