From 83eed9513b1cd2914f073c264d9d9082137a67be Mon Sep 17 00:00:00 2001 From: Brandon McAnsh Date: Thu, 14 May 2026 20:05:26 -0400 Subject: [PATCH] chore(onramp): add analytics events for purchases with Coinbase Signed-off-by: Brandon McAnsh --- .../flipcash/features/onramp/build.gradle.kts | 1 + .../app/onramp/internal/OnRampViewModel.kt | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/flipcash/features/onramp/build.gradle.kts b/apps/flipcash/features/onramp/build.gradle.kts index 5f5f1d8eb..3c9fec39f 100644 --- a/apps/flipcash/features/onramp/build.gradle.kts +++ b/apps/flipcash/features/onramp/build.gradle.kts @@ -18,6 +18,7 @@ dependencies { implementation(project(":apps:flipcash:shared:onramp:coinbase")) implementation(project(":apps:flipcash:shared:onramp:deeplinks")) + implementation(project(":apps:flipcash:shared:analytics")) implementation(project(":apps:flipcash:shared:router")) implementation(project(":libs:crypto:solana")) diff --git a/apps/flipcash/features/onramp/src/main/kotlin/com/flipcash/app/onramp/internal/OnRampViewModel.kt b/apps/flipcash/features/onramp/src/main/kotlin/com/flipcash/app/onramp/internal/OnRampViewModel.kt index d3132ad3f..142717a00 100644 --- a/apps/flipcash/features/onramp/src/main/kotlin/com/flipcash/app/onramp/internal/OnRampViewModel.kt +++ b/apps/flipcash/features/onramp/src/main/kotlin/com/flipcash/app/onramp/internal/OnRampViewModel.kt @@ -1,6 +1,8 @@ package com.flipcash.app.onramp.internal import androidx.lifecycle.viewModelScope +import com.flipcash.app.analytics.Analytics +import com.flipcash.app.analytics.FlipcashAnalyticsService import com.flipcash.app.core.extensions.mapResult import com.flipcash.app.core.extensions.onResult import com.flipcash.app.core.ui.CurrencyHolder @@ -81,6 +83,7 @@ internal class OnRampViewModel @Inject constructor( tokenController: TokenController, transactionController: TransactionOperations, dispatchers: DispatcherProvider, + analytics: FlipcashAnalyticsService, ) : BaseViewModel2( initialState = State(), updateStateForEvent = updateStateForEvent, @@ -344,8 +347,15 @@ internal class OnRampViewModel @Inject constructor( amount = selectedAmount.localFiat.underlyingTokenAmount, token = token, verifiedFiat = selectedAmount, - ).onFailure { error -> + ).onSuccess { + analytics.buy( + method = Analytics.PurchaseMethod.Coinbase, + amount = selectedAmount.localFiat.nativeAmount, + mint = token.address, + ) + }.onFailure { error -> dispatchEvent(Event.UpdateConfirmingAmountState()) + when (error) { is OnRampAuthError.CoinbasePhoneVerificationRequired -> { dispatchEvent(Event.OnVerificationNeeded(phone = true)) @@ -375,6 +385,13 @@ internal class OnRampViewModel @Inject constructor( } else -> { + analytics.buy( + method = Analytics.PurchaseMethod.Coinbase, + amount = selectedAmount.localFiat.nativeAmount, + mint = token.address, + error = error + ) + BottomBarManager.showError( title = "Something Went Wrong", message = error.message ?: "Please try again",