Updated on 2026-08-14

This commit is contained in:
Tangem 2025-12-10 14:17:15 +05:00
parent 8632680f20
commit e024d739b7
87 changed files with 386 additions and 374 deletions

View file

@ -4,12 +4,12 @@ import com.tangem.core.analytics.models.AnalyticsEvent
sealed class ReferralEvents(event: String) : AnalyticsEvent(REFERRAL_PROGRAM_CATEGORY, event) {
data object ReferralScreenOpened : ReferralEvents(event = "Referral Screen Opened")
data object ClickParticipate : ReferralEvents(event = "Button - Participate")
data object ClickCopy : ReferralEvents(event = "Button - Copy")
data object ClickShare : ReferralEvents(event = "Button - Share")
data object ClickTaC : ReferralEvents(event = "Link - TaC")
data object ParticipateSuccessful : ReferralEvents(event = "Participate Successful")
class ReferralScreenOpened : ReferralEvents(event = "Referral Screen Opened")
class ClickParticipate : ReferralEvents(event = "Button - Participate")
class ClickCopy : ReferralEvents(event = "Button - Copy")
class ClickShare : ReferralEvents(event = "Button - Share")
class ClickTaC : ReferralEvents(event = "Link - TaC")
class ParticipateSuccessful : ReferralEvents(event = "Participate Successful")
}
private const val REFERRAL_PROGRAM_CATEGORY = "Referral Program"

View file

@ -90,7 +90,7 @@ internal class ReferralModel @Inject constructor(
}
init {
analyticsEventHandler.send(ReferralEvents.ReferralScreenOpened)
analyticsEventHandler.send(ReferralEvents.ReferralScreenOpened())
if (accountsFeatureToggles.isFeatureEnabled) {
combine(
flow = referralData.filterNotNull().onEach(::selectAccount),
@ -178,7 +178,7 @@ internal class ReferralModel @Inject constructor(
if (userWallet is UserWallet.Cold && isDemoCardUseCase(cardId = userWallet.cardId)) {
showErrorSnackbar(DemoModeException())
} else {
analyticsEventHandler.send(ReferralEvents.ClickParticipate)
analyticsEventHandler.send(ReferralEvents.ClickParticipate())
val lastInfoState = uiState.referralInfoState
uiState = uiState.copy(referralInfoState = ReferralInfoState.Loading)
modelScope.launch {
@ -187,9 +187,9 @@ internal class ReferralModel @Inject constructor(
false -> PortfolioId(params.userWalletId)
}
runCatching { referralInteractor.startReferral(portfolioId) }
.onSuccess {
analyticsEventHandler.send(ReferralEvents.ParticipateSuccessful)
referralData.value = it
.onSuccess { referral ->
analyticsEventHandler.send(ReferralEvents.ParticipateSuccessful())
referralData.value = referral
}
.onFailure { throwable ->
if (throwable is ReferralError.UserCancelledException) {
@ -213,17 +213,17 @@ internal class ReferralModel @Inject constructor(
}
private fun onAgreementClicked() {
analyticsEventHandler.send(ReferralEvents.ClickTaC)
analyticsEventHandler.send(ReferralEvents.ClickTaC())
lastReferralData?.tosLink?.let(urlOpener::openUrl)
}
private fun onCopyClicked() {
analyticsEventHandler.send(ReferralEvents.ClickCopy)
analyticsEventHandler.send(ReferralEvents.ClickCopy())
}
private fun onShareClicked(text: String) {
analyticsEventHandler.send(ReferralEvents.ClickShare)
analyticsEventHandler.send(ReferralEvents.ClickShare())
shareManager.shareText(text = text)
}