diff --git a/android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt b/android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt index bb71c00..5797f5d 100644 --- a/android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt +++ b/android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt @@ -62,6 +62,9 @@ class MindboxSdkModule(private val reactContext: ReactApplicationContext) : Reac if (payload.has("operationsDomain")) { configurationBuilder.operationsDomain(payload.optString("operationsDomain", "")) } + if (payload.has("shouldIncludeVersionCode")) { + configurationBuilder.shouldIncludeVersionCode(payload.optBoolean("shouldIncludeVersionCode", true)) + } val configuration = configurationBuilder.build() val handler = Handler(context.mainLooper) diff --git a/src/__tests__/index.test.ts b/src/__tests__/index.test.ts index c19952d..9c1a85a 100644 --- a/src/__tests__/index.test.ts +++ b/src/__tests__/index.test.ts @@ -514,6 +514,37 @@ describe('Testing Mindbox RN SDK', () => { expect(JSON.parse(calledWith)).not.toHaveProperty('operationsDomain') }) + it('initialize passes shouldIncludeVersionCode to native when provided', async () => { + const { + NativeModules: { MindboxSdk: MindboxSdkNative }, + } = require('react-native') + const MindboxSdk = require('../index').default + + expect.assertions(1) + + await MindboxSdk.initialize({ + ...initializationData, + shouldIncludeVersionCode: false, + }) + + const calledWith = (MindboxSdkNative.initialize as jest.Mock).mock.calls.slice(-1)[0][0] + expect(JSON.parse(calledWith)).toMatchObject({ shouldIncludeVersionCode: false }) + }) + + it('initialize does not include shouldIncludeVersionCode in payload when not provided', async () => { + const { + NativeModules: { MindboxSdk: MindboxSdkNative }, + } = require('react-native') + const MindboxSdk = require('../index').default + + expect.assertions(1) + + await MindboxSdk.initialize(initializationData) + + const calledWith = (MindboxSdkNative.initialize as jest.Mock).mock.calls.slice(-1)[0][0] + expect(JSON.parse(calledWith)).not.toHaveProperty('shouldIncludeVersionCode') + }) + it('getDeviceUUID method works correctly', async () => { const MindboxSdk = require('../index').default diff --git a/src/index.tsx b/src/index.tsx index e159554..c2c8273 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -83,6 +83,7 @@ class MindboxSdkClass { * previousInstallId: '', * previousUuid: '', * operationsDomain: 'anonymizer.example.com', + * shouldIncludeVersionCode: false, // Android only (ignored on iOS). Default value is true * }); */ public async initialize(initializationData: InitializationData) { @@ -98,7 +99,7 @@ class MindboxSdkClass { throw new Error('Wrong initialization data!') } - const { domain, endpointId, subscribeCustomerIfCreated, shouldCreateCustomer, previousInstallId, previousUuid, operationsDomain } = initializationData + const { domain, endpointId, subscribeCustomerIfCreated, shouldCreateCustomer, previousInstallId, previousUuid, operationsDomain, shouldIncludeVersionCode } = initializationData if (!domain || !endpointId) { this._initializing = false @@ -130,6 +131,10 @@ class MindboxSdkClass { payload.operationsDomain = operationsDomain } + if (typeof shouldIncludeVersionCode !== 'undefined') { + payload.shouldIncludeVersionCode = shouldIncludeVersionCode + } + try { const payloadString = JSON.stringify(payload) this._initialized = await MindboxSdkNative.initialize(payloadString) diff --git a/src/types/InitializationData.ts b/src/types/InitializationData.ts index 260a901..46789ac 100644 --- a/src/types/InitializationData.ts +++ b/src/types/InitializationData.ts @@ -6,4 +6,10 @@ export type InitializationData = { previousInstallId?: string previousUuid?: string operationsDomain?: string + /** + * Android only, ignored on iOS. Specifies whether the app versionCode is included + * in the app version reported to Mindbox. When false, only versionName is reported. + * Default value is true. + */ + shouldIncludeVersionCode?: boolean }