Updated on 2026-08-14

This commit is contained in:
Tangem 2022-11-02 17:52:24 +05:00
parent dec6afa96a
commit c2b57b28b0
4 changed files with 43 additions and 37 deletions

View file

@ -0,0 +1,27 @@
package com.tangem.tap.common.analytics.converters
import com.shopify.buy3.Storefront
import com.tangem.common.Converter
import com.tangem.tap.common.analytics.events.Shop
import com.tangem.tap.common.shop.data.ProductType
/**
[REDACTED_AUTHOR]
*/
class ShopOrderToEventConverter : Converter<Pair<Storefront.Order, ProductType>, Shop.Purchased> {
override fun convert(value: Pair<Storefront.Order, ProductType>): Shop.Purchased {
val order = value.first
val productType = value.second
val sku = order.lineItems.edges.firstOrNull()?.node?.variant?.sku ?: productType.sku
val count = when (productType) {
ProductType.WALLET_2_CARDS -> "2"
ProductType.WALLET_3_CARDS -> "3"
}
val amount = "${order.totalPriceV2.amount} ${order.totalPriceV2.currencyCode.name}"
val code = (order.discountApplications.edges.firstOrNull()?.node as? Storefront.DiscountCodeApplication)?.code
return Shop.Purchased(sku, count, amount, code)
}
}

View file

@ -1,9 +1,6 @@
package com.tangem.tap.common.analytics.events
import com.shopify.buy3.Storefront
import com.tangem.common.Converter
import com.tangem.tap.common.extensions.filterNotNull
import com.tangem.tap.common.shop.data.ProductType
/**
[REDACTED_AUTHOR]
@ -15,36 +12,18 @@ sealed class Shop(
class ScreenOpened : IntroductionProcess("Shop Screen Opened")
class Purchased(params: Map<String, String>) : Shop(
class Purchased(sku: String, count: String, amount: String, couponCode: String?) : Shop(
event = "Purchased",
params = params,
params = mapOf(
"SKU" to sku,
"Count" to count,
"Amount" to amount,
"Coupon Code" to couponCode,
).filterNotNull(),
)
class Redirected(partnerName: String) : Shop(
event = "Redirected",
params = mapOf("Partner" to partnerName),
)
}
class OrderToParamsConverter : Converter<Pair<Storefront.Order, ProductType>, Map<String, String>> {
override fun convert(value: Pair<Storefront.Order, ProductType>): Map<String, String> {
val order = value.first
val productType = value.second
val code = (order.discountApplications.edges.firstOrNull()?.node as? Storefront.DiscountCodeApplication)?.code
val sku = order.lineItems.edges.firstOrNull()?.node?.variant?.sku ?: productType.sku
val count = when (productType) {
ProductType.WALLET_2_CARDS -> "2"
ProductType.WALLET_3_CARDS -> "3"
}
val amount = "${order.totalPriceV2.amount} ${order.totalPriceV2.currencyCode.name}"
return mapOf(
"Coupon Code" to code,
"SKU" to sku,
"Count" to count,
"Amount" to amount,
).filterNotNull()
}
}
}

View file

@ -4,8 +4,7 @@ import com.shopify.buy3.Storefront
import com.tangem.tap.common.analytics.api.AnalyticsEventHandler
import com.tangem.tap.common.analytics.api.AnalyticsHandlerBuilder
import com.tangem.tap.common.analytics.api.ShopifyOrderEventHandler
import com.tangem.tap.common.analytics.events.OrderToParamsConverter
import com.tangem.tap.common.analytics.events.Shop
import com.tangem.tap.common.analytics.converters.ShopOrderToEventConverter
import com.tangem.tap.common.shop.data.ProductType
class AppsFlyerAnalyticsHandler(
@ -19,8 +18,9 @@ class AppsFlyerAnalyticsHandler(
}
override fun send(order: Storefront.Order, productType: ProductType) {
val eventParams = OrderToParamsConverter().convert(order to productType)
send(Shop.Purchased(eventParams))
//TODO: make sending this event through filters
val event = ShopOrderToEventConverter().convert(order to productType)
send(event)
}
companion object {

View file

@ -13,8 +13,7 @@ import com.tangem.tap.common.analytics.api.SdkErrorEventHandler
import com.tangem.tap.common.analytics.api.ShopifyOrderEventHandler
import com.tangem.tap.common.analytics.converters.BlockchainSdkErrorConverter
import com.tangem.tap.common.analytics.converters.CardSdkErrorConverter
import com.tangem.tap.common.analytics.events.OrderToParamsConverter
import com.tangem.tap.common.analytics.events.Shop
import com.tangem.tap.common.analytics.converters.ShopOrderToEventConverter
import com.tangem.tap.common.shop.data.ProductType
class FirebaseAnalyticsHandler(
@ -59,8 +58,9 @@ class FirebaseAnalyticsHandler(
}
override fun send(order: Storefront.Order, productType: ProductType) {
val eventParams = OrderToParamsConverter().convert(order to productType)
send(Shop.Purchased(eventParams))
//TODO: make sending this event through filters
val event = ShopOrderToEventConverter().convert(order to productType)
send(event)
}
companion object {