Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-20 15:15:57 +04:00
parent 20eba62956
commit e92074bbb0
21 changed files with 36 additions and 75 deletions

View file

@ -14,6 +14,7 @@ dependencies {
/** Core modules */
implementation(projects.core.analytics)
implementation(projects.core.analytics.models)
implementation(projects.core.navigation)
implementation(projects.core.res)
implementation(projects.core.utils)
implementation(projects.core.ui)

View file

@ -50,6 +50,6 @@ internal data class ReferralStateHolder(
data class Analytics(
val onAgreementClicked: () -> Unit,
val onCopyClicked: () -> Unit,
val onShareClicked: () -> Unit,
val onShareClicked: (String) -> Unit,
)
}

View file

@ -1,7 +1,5 @@
package com.tangem.feature.referral.ui
import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import androidx.compose.animation.*
import androidx.compose.foundation.background
@ -22,7 +20,6 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider
import androidx.core.content.ContextCompat.startActivity
import com.tangem.core.res.getStringSafe
import com.tangem.core.ui.components.PrimaryButtonIconStart
import com.tangem.core.ui.components.rows.RoundableCornersRow
@ -45,7 +42,7 @@ internal fun ParticipateBottomBlock(
snackbarHostState: SnackbarHostState,
onAgreementClick: () -> Unit,
onCopyClick: () -> Unit,
onShareClick: () -> Unit,
onShareClick: (String) -> Unit,
) {
Column(
modifier = Modifier
@ -282,7 +279,7 @@ private fun AdditionalButtons(
shareLink: String,
snackbarHostState: SnackbarHostState,
onCopyClick: () -> Unit,
onShareClick: () -> Unit,
onShareClick: (String) -> Unit,
) {
val clipboardManager = LocalClipboardManager.current
val hapticFeedback = LocalHapticFeedback.current
@ -317,9 +314,8 @@ private fun AdditionalButtons(
text = stringResourceSafe(id = R.string.common_share),
iconResId = R.drawable.ic_share_24,
onClick = {
onShareClick.invoke()
hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress)
context.shareText(context.getString(R.string.referral_share_link, shareLink))
onShareClick(context.getString(R.string.referral_share_link, shareLink))
},
modifier = Modifier.weight(1f),
)
@ -342,16 +338,6 @@ private fun calculateOverallItemsCount(expectedAwards: ExpectedAwards?, isExpand
return counterItems + awardItems
}
private fun Context.shareText(text: String) {
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, text)
type = "text/plain"
}
val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(this, shareIntent, null)
}
@Preview(widthDp = 360, showBackground = true)
@Preview(widthDp = 360, showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
@ -435,5 +421,5 @@ private data class ParticipateBottomBlockData(
val onAgreementClick: () -> Unit = {},
val onShowCopySnackbar: () -> Unit = {},
val onCopyClick: () -> Unit = {},
val onShareClick: () -> Unit = {},
val onShareClick: (String) -> Unit = {},
)

View file

@ -10,6 +10,7 @@ import androidx.lifecycle.viewModelScope
import com.tangem.common.routing.AppRoute
import com.tangem.common.routing.bundle.unbundle
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.navigation.share.ShareManager
import com.tangem.domain.wallets.models.UserWalletId
import com.tangem.feature.referral.analytics.ReferralEvents
import com.tangem.feature.referral.domain.ReferralInteractor
@ -34,6 +35,7 @@ internal class ReferralViewModel @Inject constructor(
private val referralInteractor: ReferralInteractor,
private val dispatchers: CoroutineDispatcherProvider,
private val analyticsEventHandler: AnalyticsEventHandler,
private val shareManager: ShareManager,
savedStateHandle: SavedStateHandle,
) : ViewModel() {
@ -125,8 +127,10 @@ internal class ReferralViewModel @Inject constructor(
analyticsEventHandler.send(ReferralEvents.ClickCopy)
}
private fun onShareClicked() {
private fun onShareClicked(text: String) {
analyticsEventHandler.send(ReferralEvents.ClickShare)
shareManager.shareText(text = text)
}
private fun ReferralData.convertToReferralInfoState(): ReferralInfoState = when (this) {