From ba52b812518d986f568aaf9fa6a8b9a278420599 Mon Sep 17 00:00:00 2001 From: Egor Kitselyuk Date: Tue, 5 May 2026 10:56:29 +0300 Subject: [PATCH 1/4] MOBILE-161: Add operationsDomain support --- .../java/com/mindboxsdk/MindboxSdkModule.kt | 3 ++ ios/MindboxSdk.swift | 4 +- src/__tests__/index.test.ts | 48 +++++++++++++++++++ src/index.tsx | 7 ++- src/types/InitializationData.ts | 1 + 5 files changed, 61 insertions(+), 2 deletions(-) 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 } From 5634abf3dc333173c3c65f6c79f00cb229d669fc Mon Sep 17 00:00:00 2001 From: Sergei Semko <28645140+justSmK@users.noreply.github.com> Date: Tue, 19 May 2026 17:09:42 +0300 Subject: [PATCH 2/4] MOBILE-161: Reorder operationsDomain in MBConfiguration init call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit iOS SDK moved `operationsDomain` to sit right after `domain` in `MBConfiguration.init` (ios-sdk 288d7912, MOBILE-130). Swift enforces argument-label order, so passing `operationsDomain:` last fails to compile against the upcoming Mindbox release. No behaviour change — only the call-site order. --- ios/MindboxSdk.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/MindboxSdk.swift b/ios/MindboxSdk.swift index 1250eb3..3a26156 100644 --- a/ios/MindboxSdk.swift +++ b/ios/MindboxSdk.swift @@ -46,11 +46,11 @@ class MindboxSdk: NSObject { let configuration = try MBConfiguration( endpoint: payload.endpointId, domain: payload.domain, + operationsDomain: payload.operationsDomain, previousInstallationId: payload.previousInstallId, previousDeviceUUID: payload.previousUuid, subscribeCustomerIfCreated: payload.subscribeCustomerIfCreated ?? false, - shouldCreateCustomer: payload.shouldCreateCustomer ?? true, - operationsDomain: payload.operationsDomain + shouldCreateCustomer: payload.shouldCreateCustomer ?? true ) Mindbox.shared.initialization(configuration: configuration) From bd53ad2e0da5f946410a1cb0f712ae5f21b1279a Mon Sep 17 00:00:00 2001 From: Sergey Sozinov <103035673+sergeysozinov@users.noreply.github.com> Date: Mon, 25 May 2026 16:11:18 +0300 Subject: [PATCH 3/4] bump node version --- .github/workflows/lint_and_test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint_and_test.yml b/.github/workflows/lint_and_test.yml index 3af9449..8c9184e 100644 --- a/.github/workflows/lint_and_test.yml +++ b/.github/workflows/lint_and_test.yml @@ -19,9 +19,9 @@ jobs: uses: actions/checkout@v4 - name: Setup node JS - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: - node-version: 14 + node-version: 20 registry-url: https://registry.npmjs.org - name: Setup local environment @@ -37,9 +37,9 @@ jobs: uses: actions/checkout@v4 - name: Setup node JS - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: - node-version: 14 + node-version: 20 registry-url: https://registry.npmjs.org - name: Setup local environment From dfa1d40193936ef12e3979d5453dacc99a6db7c9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 25 May 2026 13:22:41 +0000 Subject: [PATCH 4/4] Bump RN SDK versions: core=2.15.2, android=2.15.2, ios=2.15.1 --- CHANGELOG.md | 7 +++++++ MindboxSdk.podspec | 4 ++-- android/build.gradle | 2 +- package.json | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33d835a..fcda772 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [Unreleased] + +### Changes +- Upgrade Android SDK dependency to v2.15.2 +- Upgrade iOS SDK dependency to v2.15.1 + + ## [2.15.1] - 2026-05-14 ### Changes diff --git a/MindboxSdk.podspec b/MindboxSdk.podspec index fdb1db1..bcc6f93 100644 --- a/MindboxSdk.podspec +++ b/MindboxSdk.podspec @@ -17,6 +17,6 @@ Pod::Spec.new do |s| s.dependency "React-Core" - s.dependency "Mindbox", "2.15.0" - s.dependency "MindboxNotifications", "2.15.0" + s.dependency "Mindbox", "2.15.1" + s.dependency "MindboxNotifications", "2.15.1" end diff --git a/android/build.gradle b/android/build.gradle index cece388..e513c77 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -126,5 +126,5 @@ dependencies { // noinspection GradleDynamicVersion api 'com.facebook.react:react-native:+' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - api 'cloud.mindbox:mobile-sdk:2.15.1' + api 'cloud.mindbox:mobile-sdk:2.15.2' } diff --git a/package.json b/package.json index 2f1a7da..9853a04 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mindbox-sdk", "version": "2.15.1", - "target-version": "2.15.1", + "target-version": "2.15.2", "description": "SDK for integration React Native mobile apps with Mindbox", "main": "lib/commonjs/index", "module": "lib/module/index",