package com.example.gravitydemo import ai.gravityfield.gravity_sdk.GravitySDK import ai.gravityfield.gravity_sdk.models.ContentImpressionEngagement import ai.gravityfield.gravity_sdk.models.CustomEvent import ai.gravityfield.gravity_sdk.models.PageContext import android.content.Context import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp @Composable fun CheckoutExperiment( pageContext: PageContext, activityContext: Context, onCheckout: () -> Unit, ) { var selected by remember(pageContext) { mutableStateOf(null) } var config by remember(pageContext) { mutableStateOf(null) } var isLoading by remember(pageContext) { mutableStateOf(true) } LaunchedEffect(pageContext) { val result = loadRootGravityContent("checkout_button", pageContext) val decoded = result?.let(::decodeCheckoutExperiment) selected = if (decoded != null) result else null config = decoded isLoading = false } if (isLoading) { CircularProgressIndicator() return } val renderedContent = selected LaunchedEffect(renderedContent) { if (renderedContent != null) { GravitySDK.instance.sendContentEngagement( ContentImpressionEngagement(renderedContent.content, renderedContent.campaign) ) } } Button( modifier = Modifier.padding(if (config?.variant == "compact") 8.dp else 16.dp), onClick = { GravitySDK.instance.triggerEvent( events = listOf(CustomEvent("checkout-started-v1", "Checkout Started")), pageContext = pageContext, activityContext = activityContext, ) onCheckout() }, ) { Text(config?.label ?: "Перейти к оплате") } }