From e8d6234c5be3b7e4deac81ec40aa558da037dcd4 Mon Sep 17 00:00:00 2001 From: xyzcancer Date: Thu, 9 Apr 2026 11:21:13 +0400 Subject: [PATCH] DEV-4060: deprecate customTrack and add new method with correct behavior --- .../com/personalization/demo/MainActivity.kt | 100 +++++++++++- .../src/main/res/layout/activity_main.xml | 14 ++ demo-app/src/main/res/values/strings.xml | 6 + personalization-sdk/build.gradle | 4 + .../main/kotlin/com/personalization/SDK.kt | 48 +++++- .../api/managers/TrackEventManager.kt | 34 +++- .../impl/TrackCustomEventPayloadHelper.kt | 79 +++++++++ .../trackEvent/impl/TrackEventManagerImpl.kt | 86 ++++++++-- .../TrackEventManagerImplTrackEventTest.kt | 152 ++++++++++++++++++ 9 files changed, 503 insertions(+), 20 deletions(-) create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/features/trackEvent/impl/TrackCustomEventPayloadHelper.kt create mode 100644 personalization-sdk/src/test/kotlin/com/personalization/features/trackEvent/impl/TrackEventManagerImplTrackEventTest.kt diff --git a/demo-app/src/main/java/com/personalization/demo/MainActivity.kt b/demo-app/src/main/java/com/personalization/demo/MainActivity.kt index a211f1aa..b5ba72e8 100644 --- a/demo-app/src/main/java/com/personalization/demo/MainActivity.kt +++ b/demo-app/src/main/java/com/personalization/demo/MainActivity.kt @@ -1,11 +1,15 @@ package com.personalization.demo import android.os.Bundle +import android.widget.Button +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.google.firebase.FirebaseApp import com.personalization.SDK +import com.personalization.api.OnApiCallbackListener import com.personalization.demo.BuildConfig import com.personalization.sdk.data.models.dto.popUp.Components +import org.json.JSONObject import com.personalization.sdk.data.models.dto.popUp.PopupActions import com.personalization.sdk.data.models.dto.popUp.PopupDto import com.personalization.sdk.data.models.dto.popUp.Position @@ -14,6 +18,20 @@ class MainActivity : AppCompatActivity() { private lateinit var sdk: SDK + private object DemoTrackEventConstants { + /** Same value as SDK client-side validation errors for custom field key collisions. */ + const val CLIENT_VALIDATION_ERROR_CODE = -1 + const val EVENT_NAME = "custom_event" + const val SAMPLE_UNIX_TIME = 123_456 + const val CATEGORY = "demo_category" + const val LABEL = "demo_label" + const val SAMPLE_VALUE = 100 + const val SAFE_CUSTOM_KEY = "demo_custom_key" + const val SAFE_CUSTOM_VALUE = "android_demo_app" + const val COLLISION_RESERVED_KEY = "shop_id" + const val COLLISION_PLACEHOLDER_VALUE = "collision_demo" + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) @@ -44,10 +62,88 @@ class MainActivity : AppCompatActivity() { // Initialize fragment manager for popups sdk.inAppNotificationManager.initFragmentManager(supportFragmentManager) - // Setup button - findViewById(R.id.btnShowTestPopup).setOnClickListener { + findViewById