From b784736cc6591f33b3f8497f0b37df4e4741e803 Mon Sep 17 00:00:00 2001 From: xyzcancer Date: Wed, 15 Apr 2026 19:26:37 +0400 Subject: [PATCH] DEV-4027: predict purchase method --- .claude/settings.local.json | 9 ++ .../com/personalization/demo/MainActivity.kt | 89 +++++++++++++++++++ .../src/main/res/layout/activity_main.xml | 28 ++++++ demo-app/src/main/res/values/strings.xml | 10 +++ .../main/kotlin/com/personalization/SDK.kt | 6 +- .../api/managers/PredictManager.kt | 19 ++++ .../api/params/PurchasePredictParams.kt | 29 ++++++ .../predict/PurchasePredictResponse.kt | 10 +++ .../com/personalization/di/SdkModule.kt | 10 +++ .../predict/impl/PredictManagerImpl.kt | 42 +++++++++ 10 files changed, 251 insertions(+), 1 deletion(-) create mode 100644 .claude/settings.local.json create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/api/managers/PredictManager.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/api/params/PurchasePredictParams.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/api/responses/predict/PurchasePredictResponse.kt create mode 100644 personalization-sdk/src/main/kotlin/com/personalization/features/predict/impl/PredictManagerImpl.kt diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 00000000..40fac8bf --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Bash(adb logcat:*)", + "Bash(./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release)", + "Bash(npx detox:*)" + ] + } +} 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 b5ba72e8..3975207a 100644 --- a/demo-app/src/main/java/com/personalization/demo/MainActivity.kt +++ b/demo-app/src/main/java/com/personalization/demo/MainActivity.kt @@ -5,8 +5,12 @@ import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.google.firebase.FirebaseApp +import com.personalization.Params +import com.personalization.Params.TrackEvent import com.personalization.SDK import com.personalization.api.OnApiCallbackListener +import com.personalization.api.params.ProductItemParams +import com.personalization.api.params.PurchasePredictParams import com.personalization.demo.BuildConfig import com.personalization.sdk.data.models.dto.popUp.Components import org.json.JSONObject @@ -32,6 +36,12 @@ class MainActivity : AppCompatActivity() { const val COLLISION_PLACEHOLDER_VALUE = "collision_demo" } + private object DemoProductViewConstants { + const val PRODUCT_ID = "demo-product-view-001" + const val DEMO_PRICE = 2499.99 + const val DEMO_AMOUNT = 1 + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) @@ -73,6 +83,85 @@ class MainActivity : AppCompatActivity() { findViewById