Updated on 2026-08-14

This commit is contained in:
Tangem 2024-02-13 13:39:55 +03:00
parent f6ac775120
commit fc1591532c
24 changed files with 219 additions and 34 deletions

View file

@ -19,7 +19,7 @@ import com.tangem.core.navigation.AppScreen
import com.tangem.core.navigation.NavigationAction
import com.tangem.core.navigation.ReduxNavController
import com.tangem.core.navigation.StateDialog
import com.tangem.domain.tokens.model.CryptoCurrency
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.domain.wallets.models.UserWalletId
import com.tangem.feature.onboarding.navigation.OnboardingRouter
import com.tangem.feature.wallet.presentation.WalletFragment
@ -136,16 +136,19 @@ internal class DefaultWalletRouter(
reduxNavController.navigate(action = NavigationAction.OpenUrl(url))
}
override fun openTokenDetails(userWalletId: UserWalletId, currency: CryptoCurrency) {
reduxNavController.navigate(
action = NavigationAction.NavigateTo(
screen = AppScreen.WalletDetails,
bundle = bundleOf(
TokenDetailsRouter.USER_WALLET_ID_KEY to userWalletId.stringValue,
TokenDetailsRouter.CRYPTO_CURRENCY_KEY to currency,
override fun openTokenDetails(userWalletId: UserWalletId, currencyStatus: CryptoCurrencyStatus) {
val networkAddress = currencyStatus.value.networkAddress
if (networkAddress != null && networkAddress.defaultAddress.value.isNotEmpty()) {
reduxNavController.navigate(
action = NavigationAction.NavigateTo(
screen = AppScreen.WalletDetails,
bundle = bundleOf(
TokenDetailsRouter.USER_WALLET_ID_KEY to userWalletId.stringValue,
TokenDetailsRouter.CRYPTO_CURRENCY_KEY to currencyStatus.currency,
),
),
),
)
)
}
}
override fun openStoriesScreen() {

View file

@ -3,7 +3,7 @@ package com.tangem.feature.wallet.presentation.router
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import com.tangem.core.navigation.AppScreen
import com.tangem.domain.tokens.model.CryptoCurrency
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.domain.wallets.models.UserWalletId
import com.tangem.features.managetokens.navigation.ManageTokensRouter
import com.tangem.features.wallet.navigation.WalletRouter
@ -44,7 +44,7 @@ internal interface InnerWalletRouter : WalletRouter {
fun openUrl(url: String)
/** Open token details screen */
fun openTokenDetails(userWalletId: UserWalletId, currency: CryptoCurrency)
fun openTokenDetails(userWalletId: UserWalletId, currencyStatus: CryptoCurrencyStatus)
/** Open stories screen */
fun openStoriesScreen()

View file

@ -54,7 +54,7 @@ internal class TokenItemStateConverter(
),
cryptoAmountState = TokenItemState.CryptoAmountState.Content(text = getFormattedAmount()),
cryptoPriceState = getCryptoPriceState(),
onItemClick = { clickIntents.onTokenItemClick(currency) },
onItemClick = { clickIntents.onTokenItemClick(this) },
onItemLongClick = { clickIntents.onTokenItemLongClick(cryptoCurrencyStatus = this) },
)
}
@ -76,7 +76,7 @@ internal class TokenItemStateConverter(
id = currency.id.value,
iconState = iconStateConverter.convert(value = this),
titleState = TokenItemState.TitleState.Content(text = currency.name),
onItemClick = { clickIntents.onTokenItemClick(currency) },
onItemClick = { clickIntents.onTokenItemClick(this) },
onItemLongClick = { clickIntents.onTokenItemLongClick(cryptoCurrencyStatus = this) },
)

View file

@ -5,7 +5,6 @@ import com.tangem.domain.redux.ReduxStateHolder
import com.tangem.domain.tokens.GetCryptoCurrencyActionsUseCase
import com.tangem.domain.tokens.GetPrimaryCurrencyStatusUpdatesUseCase
import com.tangem.domain.tokens.TokensAction
import com.tangem.domain.tokens.model.CryptoCurrency
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.domain.tokens.model.TokenActionsState
import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase
@ -33,7 +32,7 @@ internal interface WalletContentClickIntents {
fun onOrganizeTokensClick()
fun onTokenItemClick(currency: CryptoCurrency)
fun onTokenItemClick(currencyStatus: CryptoCurrencyStatus)
fun onTokenItemLongClick(cryptoCurrencyStatus: CryptoCurrencyStatus)
@ -69,9 +68,9 @@ internal class WalletContentClickIntentsImplementor @Inject constructor(
router.openOrganizeTokensScreen(userWalletId = stateHolder.getSelectedWalletId())
}
override fun onTokenItemClick(currency: CryptoCurrency) {
override fun onTokenItemClick(currencyStatus: CryptoCurrencyStatus) {
analyticsEventHandler.send(PortfolioEvent.TokenTapped)
router.openTokenDetails(stateHolder.getSelectedWalletId(), currency)
router.openTokenDetails(stateHolder.getSelectedWalletId(), currencyStatus)
}
override fun onTokenItemLongClick(cryptoCurrencyStatus: CryptoCurrencyStatus) {