diff --git a/android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt b/android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt index be9237c..0f8d7e5 100644 --- a/android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt +++ b/android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt @@ -59,6 +59,9 @@ class MindboxSdkModule(private val reactContext: ReactApplicationContext) : Reac if (payload.has("previousUuid")) { configurationBuilder.setPreviousDeviceUuid(payload.optString("previousUuid", "")) } + if (payload.has("operationsDomain")) { + configurationBuilder.operationsDomain(payload.optString("operationsDomain", "")) + } val configuration = configurationBuilder.build() val handler = Handler(context.mainLooper) diff --git a/ios/MindboxSdk.swift b/ios/MindboxSdk.swift index 8779d91..1250eb3 100644 --- a/ios/MindboxSdk.swift +++ b/ios/MindboxSdk.swift @@ -21,6 +21,7 @@ struct PayloadData: Codable { var shouldCreateCustomer: Bool? var previousInstallId: String? var previousUuid: String? + var operationsDomain: String? } @objc(MindboxSdk) @@ -48,7 +49,8 @@ class MindboxSdk: NSObject { previousInstallationId: payload.previousInstallId, previousDeviceUUID: payload.previousUuid, subscribeCustomerIfCreated: payload.subscribeCustomerIfCreated ?? false, - shouldCreateCustomer: payload.shouldCreateCustomer ?? true + shouldCreateCustomer: payload.shouldCreateCustomer ?? true, + operationsDomain: payload.operationsDomain ) Mindbox.shared.initialization(configuration: configuration) diff --git a/src/__tests__/index.test.ts b/src/__tests__/index.test.ts index b8b0a1e..c19952d 100644 --- a/src/__tests__/index.test.ts +++ b/src/__tests__/index.test.ts @@ -466,6 +466,54 @@ describe('Testing Mindbox RN SDK', () => { expect(MindboxSdk.initialized).toBeTruthy() }) + it('initialize passes operationsDomain to native when provided', async () => { + const { + NativeModules: { MindboxSdk: MindboxSdkNative }, + } = require('react-native') + const MindboxSdk = require('../index').default + + expect.assertions(1) + + await MindboxSdk.initialize({ + ...initializationData, + operationsDomain: 'anonymizer.example.com', + }) + + const calledWith = (MindboxSdkNative.initialize as jest.Mock).mock.calls.slice(-1)[0][0] + expect(JSON.parse(calledWith)).toMatchObject({ operationsDomain: 'anonymizer.example.com' }) + }) + + it('initialize does not include operationsDomain 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('operationsDomain') + }) + + it('initialize does not include operationsDomain in payload when passed as empty string', async () => { + const { + NativeModules: { MindboxSdk: MindboxSdkNative }, + } = require('react-native') + const MindboxSdk = require('../index').default + + expect.assertions(1) + + await MindboxSdk.initialize({ + ...initializationData, + operationsDomain: '', + }) + + const calledWith = (MindboxSdkNative.initialize as jest.Mock).mock.calls.slice(-1)[0][0] + expect(JSON.parse(calledWith)).not.toHaveProperty('operationsDomain') + }) + it('getDeviceUUID method works correctly', async () => { const MindboxSdk = require('../index').default diff --git a/src/index.tsx b/src/index.tsx index 28264da..6953aad 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -82,6 +82,7 @@ class MindboxSdkClass { * shouldCreateCustomer: true, * previousInstallId: '', * previousUuid: '', + * operationsDomain: 'anonymizer.example.com', * }); */ public async initialize(initializationData: InitializationData) { @@ -97,7 +98,7 @@ class MindboxSdkClass { throw new Error('Wrong initialization data!') } - const { domain, endpointId, subscribeCustomerIfCreated, shouldCreateCustomer, previousInstallId, previousUuid } = initializationData + const { domain, endpointId, subscribeCustomerIfCreated, shouldCreateCustomer, previousInstallId, previousUuid, operationsDomain } = initializationData if (!domain || !endpointId) { this._initializing = false @@ -125,6 +126,10 @@ class MindboxSdkClass { payload.previousUuid = previousUuid } + if (typeof operationsDomain !== 'undefined' && operationsDomain.length > 0) { + payload.operationsDomain = operationsDomain + } + 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 45de9cb..260a901 100644 --- a/src/types/InitializationData.ts +++ b/src/types/InitializationData.ts @@ -5,4 +5,5 @@ export type InitializationData = { shouldCreateCustomer?: boolean previousInstallId?: string previousUuid?: string + operationsDomain?: string }