From e92074bbb06bca5a8b2a9076e5d6ee99fa031613 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 20 Dec 2024 15:15:57 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../ui/amountScreen/ui/SendDoneButtons.kt | 8 ++----- .../tokenreceive/TokenReceiveBottomSheet.kt | 9 +++----- .../TokenReceiveBottomSheetConfig.kt | 2 +- .../com/tangem/core/ui/extensions/Context.kt | 15 ------------- .../referral/presentation/build.gradle.kts | 1 + .../referral/models/ReferralStateHolder.kt | 2 +- .../referral/ui/ParticipateBottomBlock.kt | 22 ++++--------------- .../referral/viewmodels/ReferralViewModel.kt | 6 ++++- .../state/previewdata/SendClickIntentsStub.kt | 5 +++-- .../presentation/ui/SendNavigationButtons.kt | 2 +- .../viewmodel/SendClickIntents.kt | 2 +- .../presentation/viewmodel/SendViewModel.kt | 5 ++++- .../presentation/state/events/StakingEvent.kt | 2 -- .../state/events/StakingEventFactory.kt | 5 ----- .../presentation/ui/StakingEventEffect.kt | 5 ----- .../viewmodel/StakingViewModel.kt | 4 +++- .../swap/models/states/events/SwapEvent.kt | 2 -- .../tangem/feature/swap/ui/SwapEventEffect.kt | 6 ----- .../state/factory/TokenDetailsStateFactory.kt | 2 +- .../viewmodels/TokenDetailsViewModel.kt | 3 +++ .../WalletCurrencyActionsClickIntents.kt | 3 +++ 21 files changed, 36 insertions(+), 75 deletions(-) delete mode 100644 core/ui/src/main/java/com/tangem/core/ui/extensions/Context.kt diff --git a/common/ui/src/main/java/com/tangem/common/ui/amountScreen/ui/SendDoneButtons.kt b/common/ui/src/main/java/com/tangem/common/ui/amountScreen/ui/SendDoneButtons.kt index 4b5db2927a..930c31ce42 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/amountScreen/ui/SendDoneButtons.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/amountScreen/ui/SendDoneButtons.kt @@ -7,13 +7,11 @@ import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.hapticfeedback.HapticFeedbackType -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalHapticFeedback import androidx.compose.ui.tooling.preview.Preview import com.tangem.common.ui.R import com.tangem.core.ui.components.SecondaryButtonIconStart import com.tangem.core.ui.components.SpacerW12 -import com.tangem.core.ui.extensions.shareText import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview @@ -22,12 +20,11 @@ import com.tangem.core.ui.res.TangemThemePreview fun SendDoneButtons( txUrl: String, onExploreClick: () -> Unit, - onShareClick: () -> Unit, + onShareClick: (String) -> Unit, isVisible: Boolean, modifier: Modifier = Modifier, ) { val hapticFeedback = LocalHapticFeedback.current - val context = LocalContext.current AnimatedVisibility( visible = isVisible && txUrl.isNotBlank(), @@ -49,8 +46,7 @@ fun SendDoneButtons( iconResId = R.drawable.ic_share_24, onClick = { hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) - context.shareText(txUrl) - onShareClick() + onShareClick(txUrl) }, modifier = Modifier.weight(1f), ) diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/tokenreceive/TokenReceiveBottomSheet.kt b/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/tokenreceive/TokenReceiveBottomSheet.kt index 7b35b7d824..e3cf2008f6 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/tokenreceive/TokenReceiveBottomSheet.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/tokenreceive/TokenReceiveBottomSheet.kt @@ -73,9 +73,8 @@ private fun TokenReceiveBottomSheetContent(content: TokenReceiveBottomSheetConfi ) Buttons( - address = selectedAddress.value, snackbarHostState = snackbarHostState, - onShareClick = content.onShareClick, + onShareClick = { content.onShareClick(selectedAddress.value) }, onCopyClick = { content.onCopyClick(selectedAddress.value) }, ) } @@ -227,7 +226,6 @@ private fun getName(content: TokenReceiveBottomSheetConfig, index: Int): String @Composable private fun Buttons( - address: String, snackbarHostState: SnackbarHostState, onShareClick: () -> Unit, onCopyClick: () -> Unit, @@ -264,10 +262,9 @@ private fun Buttons( text = stringResourceSafe(id = R.string.common_share), iconResId = R.drawable.ic_share_24, onClick = { - onShareClick() - hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) - context.shareText(address) + + onShareClick() }, ) } diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/tokenreceive/TokenReceiveBottomSheetConfig.kt b/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/tokenreceive/TokenReceiveBottomSheetConfig.kt index f51e8efef1..eee9fdb3bd 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/tokenreceive/TokenReceiveBottomSheetConfig.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/bottomsheets/tokenreceive/TokenReceiveBottomSheetConfig.kt @@ -10,5 +10,5 @@ data class TokenReceiveBottomSheetConfig( val addresses: ImmutableList, val showMemoDisclaimer: Boolean, val onCopyClick: (String) -> Unit, - val onShareClick: () -> Unit, + val onShareClick: (String) -> Unit, ) : TangemBottomSheetConfigContent \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/extensions/Context.kt b/core/ui/src/main/java/com/tangem/core/ui/extensions/Context.kt deleted file mode 100644 index 17439269f9..0000000000 --- a/core/ui/src/main/java/com/tangem/core/ui/extensions/Context.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.tangem.core.ui.extensions - -import android.content.Context -import android.content.Intent -import androidx.core.content.ContextCompat - -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) - ContextCompat.startActivity(this, shareIntent, null) -} \ No newline at end of file diff --git a/features/referral/presentation/build.gradle.kts b/features/referral/presentation/build.gradle.kts index ef6062abd5..cf01ec5d81 100644 --- a/features/referral/presentation/build.gradle.kts +++ b/features/referral/presentation/build.gradle.kts @@ -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) diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt index dc7b06e5ef..2029309da1 100644 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt +++ b/features/referral/presentation/src/main/java/com/tangem/feature/referral/models/ReferralStateHolder.kt @@ -50,6 +50,6 @@ internal data class ReferralStateHolder( data class Analytics( val onAgreementClicked: () -> Unit, val onCopyClicked: () -> Unit, - val onShareClicked: () -> Unit, + val onShareClicked: (String) -> Unit, ) } \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt index 2057f834aa..12ebf8162c 100644 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt +++ b/features/referral/presentation/src/main/java/com/tangem/feature/referral/ui/ParticipateBottomBlock.kt @@ -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 = {}, ) \ No newline at end of file diff --git a/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt b/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt index 236d0c93db..2cfc8db688 100644 --- a/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt +++ b/features/referral/presentation/src/main/java/com/tangem/feature/referral/viewmodels/ReferralViewModel.kt @@ -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) { diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/SendClickIntentsStub.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/SendClickIntentsStub.kt index 7e17a6e883..ca5adcd00a 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/SendClickIntentsStub.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/previewdata/SendClickIntentsStub.kt @@ -59,13 +59,14 @@ internal object SendClickIntentsStub : SendClickIntents { override fun onExploreClick() {} - override fun onShareClick() {} + override fun onShareClick(txUrl: String) {} override fun onAmountReduceByClick( reduceAmountBy: BigDecimal, reduceAmountByDiff: BigDecimal, notification: Class, - ) {} + ) { + } override fun onAmountReduceToClick(reduceAmountTo: BigDecimal, notification: Class) {} diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt index 1bc9b85f4b..f1a3d33ffc 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/SendNavigationButtons.kt @@ -68,7 +68,7 @@ internal fun SendNavigationButtons( SendDoneButtons( txUrl = sendState.txUrl, onExploreClick = uiState.clickIntents::onExploreClick, - onShareClick = uiState.clickIntents::onShareClick, + onShareClick = { uiState.clickIntents.onShareClick(it) }, isVisible = isSentState, ) SendNavigationButton( diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendClickIntents.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendClickIntents.kt index 57247c99ba..e77536f76c 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendClickIntents.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendClickIntents.kt @@ -55,7 +55,7 @@ internal interface SendClickIntents : AmountScreenClickIntents { fun onExploreClick() - fun onShareClick() + fun onShareClick(txUrl: String) fun onAmountReduceByClick( reduceAmountBy: BigDecimal, diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt index cdd155d645..fdb05e838d 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/viewmodel/SendViewModel.kt @@ -15,6 +15,7 @@ import com.tangem.common.ui.amountScreen.models.AmountState import com.tangem.common.ui.amountScreen.models.EnterAmountBoundary import com.tangem.common.ui.notifications.NotificationUM import com.tangem.core.analytics.api.AnalyticsEventHandler +import com.tangem.core.navigation.share.ShareManager import com.tangem.core.ui.utils.parseBigDecimal import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase import com.tangem.domain.appcurrency.model.AppCurrency @@ -106,6 +107,7 @@ internal class SendViewModel @Inject constructor( private val saveBlockchainErrorUseCase: SaveBlockchainErrorUseCase, private val getCardInfoUseCase: GetCardInfoUseCase, private val sendFeedbackEmailUseCase: SendFeedbackEmailUseCase, + private val shareManager: ShareManager, @DelayedWork private val coroutineScope: CoroutineScope, validateTransactionUseCase: ValidateTransactionUseCase, getCurrencyCheckUseCase: GetCurrencyCheckUseCase, @@ -863,8 +865,9 @@ internal class SendViewModel @Inject constructor( innerRouter.openUrl(sendState.txUrl) } - override fun onShareClick() { + override fun onShareClick(txUrl: String) { analyticsEventHandler.send(SendAnalyticEvents.ShareButtonClicked) + shareManager.shareText(txUrl) } override fun onAmountReduceToClick(reduceAmountTo: BigDecimal, notification: Class) { diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/events/StakingEvent.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/events/StakingEvent.kt index a1b9cce6d9..7e7700595e 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/events/StakingEvent.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/events/StakingEvent.kt @@ -10,6 +10,4 @@ internal sealed class StakingEvent { data class ShowSnackBar(val text: TextReference) : StakingEvent() data class ShowAlert(val alert: AlertUM) : StakingEvent() - - data class ShowShareDialog(val txUrl: String) : StakingEvent() } \ No newline at end of file diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/events/StakingEventFactory.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/events/StakingEventFactory.kt index 85c5470976..75bcbd3efd 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/events/StakingEventFactory.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/events/StakingEventFactory.kt @@ -41,9 +41,4 @@ internal class StakingEventFactory( ) stateController.updateEvent(alert) } - - fun createShareDialog(txUrl: String) { - val event = StakingEvent.ShowShareDialog(txUrl) - stateController.updateEvent(event) - } } \ No newline at end of file diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingEventEffect.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingEventEffect.kt index 43d5493022..96234a843e 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingEventEffect.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/ui/StakingEventEffect.kt @@ -10,14 +10,12 @@ import com.tangem.core.ui.components.DialogButtonUM import com.tangem.core.ui.event.EventEffect import com.tangem.core.ui.event.StateEvent import com.tangem.core.ui.extensions.resolveReference -import com.tangem.core.ui.extensions.shareText import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.features.staking.impl.R import com.tangem.features.staking.impl.presentation.state.events.StakingEvent @Composable internal fun StakingEventEffect(event: StateEvent, snackbarHostState: SnackbarHostState) { - val context = LocalContext.current val resources = LocalContext.current.resources var alertConfig by remember { mutableStateOf(value = null) } @@ -40,9 +38,6 @@ internal fun StakingEventEffect(event: StateEvent, snackbarHostSta is StakingEvent.ShowAlert -> { alertConfig = value.alert } - is StakingEvent.ShowShareDialog -> { - context.shareText(value.txUrl) - } } }, ) diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt index cc9c77201e..a48aa93e38 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/viewmodel/StakingViewModel.kt @@ -17,6 +17,7 @@ import com.tangem.common.ui.bottomsheet.permission.state.GiveTxPermissionBottomS import com.tangem.common.ui.notifications.NotificationUM import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.api.ParamsInterceptorHolder +import com.tangem.core.navigation.share.ShareManager import com.tangem.core.ui.haptic.TangemHapticEffect import com.tangem.core.ui.haptic.VibratorHapticManager import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase @@ -119,6 +120,7 @@ internal class StakingViewModel @Inject constructor( private val sendFeedbackEmailUseCase: SendFeedbackEmailUseCase, private val getActionsUseCase: GetActionsUseCase, private val paramsInterceptorHolder: ParamsInterceptorHolder, + private val shareManager: ShareManager, @DelayedWork private val coroutineScope: CoroutineScope, savedStateHandle: SavedStateHandle, ) : ViewModel(), DefaultLifecycleObserver, StakingClickIntents { @@ -757,7 +759,7 @@ internal class StakingViewModel @Inject constructor( analyticsEventHandler.send(StakingAnalyticsEvent.ButtonShare) if (txUrl != null) { vibratorHapticManager.performOneTime(TangemHapticEffect.OneTime.Click) - stakingEventFactory.createShareDialog(txUrl = txUrl) + shareManager.shareText(txUrl) } } diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/events/SwapEvent.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/events/SwapEvent.kt index 1741d69029..a00fed2610 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/events/SwapEvent.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/states/events/SwapEvent.kt @@ -6,6 +6,4 @@ import com.tangem.common.ui.alerts.models.AlertUM @Immutable internal sealed class SwapEvent { data class ShowAlert(val alert: AlertUM) : SwapEvent() - - data class ShowShareDialog(val txUrl: String) : SwapEvent() } \ No newline at end of file diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapEventEffect.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapEventEffect.kt index 343dbdad65..3a7455b5b0 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapEventEffect.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapEventEffect.kt @@ -1,7 +1,6 @@ package com.tangem.feature.swap.ui import androidx.compose.runtime.* -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalSoftwareKeyboardController import com.tangem.common.ui.alerts.models.AlertUM import com.tangem.core.ui.components.BasicDialog @@ -9,14 +8,12 @@ import com.tangem.core.ui.components.DialogButtonUM import com.tangem.core.ui.event.EventEffect import com.tangem.core.ui.event.StateEvent import com.tangem.core.ui.extensions.resolveReference -import com.tangem.core.ui.extensions.shareText import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.feature.swap.models.states.events.SwapEvent import com.tangem.feature.swap.presentation.R @Composable internal fun SwapEventEffect(event: StateEvent) { - val context = LocalContext.current var alertConfig by remember { mutableStateOf(value = null) } val keyboardController = LocalSoftwareKeyboardController.current @@ -35,9 +32,6 @@ internal fun SwapEventEffect(event: StateEvent) { is SwapEvent.ShowAlert -> { alertConfig = value.alert } - is SwapEvent.ShowShareDialog -> { - context.shareText(value.txUrl) - } } }, ) diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsStateFactory.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsStateFactory.kt index 3b8855cb32..462f209d58 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsStateFactory.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/state/factory/TokenDetailsStateFactory.kt @@ -250,7 +250,7 @@ internal class TokenDetailsStateFactory( currency: CryptoCurrency, networkAddress: NetworkAddress, onCopyClick: (String) -> Unit, - onShareClick: () -> Unit, + onShareClick: (String) -> Unit, ): TokenDetailsState { return currentStateProvider().copy( bottomSheetConfig = TangemBottomSheetConfig( diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt index 4468d59ff8..b10537af0c 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt @@ -12,6 +12,7 @@ import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.core.deeplink.DeepLinksRegistry import com.tangem.core.deeplink.global.BuyCurrencyDeepLink +import com.tangem.core.navigation.share.ShareManager import com.tangem.core.ui.clipboard.ClipboardManager import com.tangem.core.ui.components.bottomsheets.tokenreceive.AddressModel import com.tangem.core.ui.components.bottomsheets.tokenreceive.mapToAddressModels @@ -120,6 +121,7 @@ internal class TokenDetailsViewModel @Inject constructor( private val clipboardManager: ClipboardManager, private val getCryptoCurrencySyncUseCase: GetCryptoCurrencyStatusSyncUseCase, private val onrampFeatureToggles: OnrampFeatureToggles, + private val shareManager: ShareManager, expressStatusFactory: ExpressStatusFactory.Factory, getUserWalletUseCase: GetUserWalletUseCase, getStakingIntegrationIdUseCase: GetStakingIntegrationIdUseCase, @@ -594,6 +596,7 @@ internal class TokenDetailsViewModel @Inject constructor( }, onShareClick = { analyticsEventsHandler.send(TokenReceiveAnalyticsEvent.ButtonShareAddress(cryptoCurrency.symbol)) + shareManager.shareText(text = it) }, ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/intents/WalletCurrencyActionsClickIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/intents/WalletCurrencyActionsClickIntents.kt index f477805fed..e720d18e1f 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/intents/WalletCurrencyActionsClickIntents.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/intents/WalletCurrencyActionsClickIntents.kt @@ -7,6 +7,7 @@ import com.tangem.common.ui.tokens.getUnavailabilityReasonText import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.core.analytics.models.event.MainScreenAnalyticsEvent +import com.tangem.core.navigation.share.ShareManager import com.tangem.core.ui.clipboard.ClipboardManager import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent import com.tangem.core.ui.components.bottomsheets.chooseaddress.ChooseAddressBottomSheetConfig @@ -117,6 +118,7 @@ internal class WalletCurrencyActionsClickIntentsImplementor @Inject constructor( private val reduxStateHolder: ReduxStateHolder, private val vibratorHapticManager: VibratorHapticManager, private val clipboardManager: ClipboardManager, + private val shareManager: ShareManager, private val appRouter: AppRouter, private val rampStateManager: RampStateManager, private val getUserCountryUseCase: GetUserCountryUseCase, @@ -243,6 +245,7 @@ internal class WalletCurrencyActionsClickIntentsImplementor @Inject constructor( }, onShareClick = { analyticsEventHandler.send(TokenReceiveAnalyticsEvent.ButtonShareAddress(currency.symbol)) + shareManager.shareText(text = it) }, ) }