diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitle.kt b/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitle.kt index 45862deedb..d21a35276b 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitle.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitle.kt @@ -31,6 +31,7 @@ fun AccountTitle( modifier: Modifier = Modifier, textStyle: TextStyle = TangemTheme.typography.subtitle2, textColor: Color = TangemTheme.colors.text.tertiary, + iconSize: AccountIconSize = AccountIconSize.ExtraSmall, ) { Row( verticalAlignment = Alignment.CenterVertically, @@ -47,7 +48,7 @@ fun AccountTitle( AccountLabel( name = accountTitleUM.name, icon = accountTitleUM.icon, - iconSize = AccountIconSize.ExtraSmall, + iconSize = iconSize, nameStyle = textStyle, nameColor = textColor, ) diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcAddEthereumChainUMConverter.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcAddEthereumChainUMConverter.kt index d7a3c9de50..9ebcb7c9ab 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcAddEthereumChainUMConverter.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcAddEthereumChainUMConverter.kt @@ -1,5 +1,6 @@ package com.tangem.features.walletconnect.transaction.converter +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.domain.walletconnect.usecase.method.WcAddNetworkUseCase import com.tangem.features.walletconnect.transaction.entity.chain.WcAddEthereumChainItemUM import com.tangem.features.walletconnect.transaction.entity.chain.WcAddEthereumChainUM @@ -24,7 +25,7 @@ internal class WcAddEthereumChainUMConverter @Inject constructor( onShowVerifiedAlert = value.actions.onShowVerifiedAlert, ), ), - walletName = value.useCase.session.wallet.name, + portfolioName = value.portfolioName, isLoading = false, ), transactionRequestInfo = WcTransactionRequestInfoUM( @@ -36,6 +37,7 @@ internal class WcAddEthereumChainUMConverter @Inject constructor( data class Input( val useCase: WcAddNetworkUseCase, + val portfolioName: AccountTitleUM?, val actions: WcTransactionActionsUM, ) } \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcPortfolioNameDelegate.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcPortfolioNameDelegate.kt new file mode 100644 index 0000000000..7273f94398 --- /dev/null +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcPortfolioNameDelegate.kt @@ -0,0 +1,46 @@ +package com.tangem.features.walletconnect.transaction.converter + +import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.toUM +import com.tangem.core.ui.extensions.TextReference +import com.tangem.core.ui.extensions.stringReference +import com.tangem.domain.account.usecase.IsAccountsModeEnabledUseCase +import com.tangem.domain.models.account.Account +import com.tangem.domain.walletconnect.model.WcSession +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.stateIn + +internal class WcPortfolioNameDelegate @AssistedInject constructor( + isAccountsModeEnabledUseCase: IsAccountsModeEnabledUseCase, + @Assisted private val scope: CoroutineScope, +) { + val isAccountMode = isAccountsModeEnabledUseCase.invoke() + .stateIn(scope = scope, started = SharingStarted.Eagerly, initialValue = false) + + fun createAccountTitleUM(value: WcSession): AccountTitleUM? { + val account = when (val account = value.account) { + is Account.CryptoPortfolio -> account + null -> null + } + + return if (account != null && isAccountMode.value) { + AccountTitleUM.Account( + prefixText = TextReference.EMPTY, + name = account.accountName.toUM().value, + icon = account.icon.toUM(), + ) + } else { + AccountTitleUM.Text(stringReference(value.wallet.name)) + .takeIf { value.showWalletInfo } + } + } + + @AssistedFactory + interface Factory { + fun create(scope: CoroutineScope): WcPortfolioNameDelegate + } +} \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSendTransactionUMConverter.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSendTransactionUMConverter.kt index c8f65f4c23..dbba45773d 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSendTransactionUMConverter.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSendTransactionUMConverter.kt @@ -1,5 +1,6 @@ package com.tangem.features.walletconnect.transaction.converter +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.domain.models.currency.CryptoCurrencyStatus import com.tangem.domain.walletconnect.model.WcEthMethod import com.tangem.domain.walletconnect.model.WcSolanaMethod @@ -48,7 +49,7 @@ internal class WcSendTransactionUMConverter @Inject constructor( ), ), feeState = value.feeState, - walletName = value.context.session.wallet.name.takeIf { value.context.session.showWalletInfo }, + portfolioName = value.portfolioName, networkInfo = networkInfoUMConverter.convert(value.context.network), estimatedWalletChanges = WcSendReceiveTransactionCheckResultsUM(), isLoading = value.signState.domainStep == WcSignStep.Signing, @@ -83,6 +84,7 @@ internal class WcSendTransactionUMConverter @Inject constructor( data class Input( val context: WcMethodContext, + val portfolioName: AccountTitleUM?, val feeState: WcTransactionFeeState, val signState: WcSignState<*>, val actions: WcTransactionActionsUM, diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSignTransactionUMConverter.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSignTransactionUMConverter.kt index 2aaa77a777..91f3cbf530 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSignTransactionUMConverter.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSignTransactionUMConverter.kt @@ -1,5 +1,6 @@ package com.tangem.features.walletconnect.transaction.converter +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.userwallet.ext.walletInterationIcon import com.tangem.domain.walletconnect.usecase.method.WcMessageSignUseCase import com.tangem.domain.walletconnect.usecase.method.WcMethodContext @@ -29,7 +30,7 @@ internal class WcSignTransactionUMConverter @Inject constructor( onShowVerifiedAlert = value.actions.onShowVerifiedAlert, ), ), - walletName = value.context.session.wallet.name.takeIf { value.context.session.showWalletInfo }, + portfolioName = value.portfolioName, networkInfo = networkInfoUMConverter.convert(value.context.network), isLoading = value.signState.domainStep == WcSignStep.Signing, address = WcAddressConverter.convert(value.context.derivationState), @@ -48,5 +49,6 @@ internal class WcSignTransactionUMConverter @Inject constructor( val signState: WcSignState<*>, val signModel: WcMessageSignUseCase.SignModel, val actions: WcTransactionActionsUM, + val portfolioName: AccountTitleUM?, ) } \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSignTypedDataUMConverter.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSignTypedDataUMConverter.kt index d16c5250da..5bc7aa70e3 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSignTypedDataUMConverter.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcSignTypedDataUMConverter.kt @@ -1,5 +1,6 @@ package com.tangem.features.walletconnect.transaction.converter +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.userwallet.ext.walletInterationIcon import com.tangem.domain.walletconnect.usecase.method.WcMessageSignUseCase import com.tangem.domain.walletconnect.usecase.method.WcMethodContext @@ -29,7 +30,7 @@ internal class WcSignTypedDataUMConverter @Inject constructor( onShowVerifiedAlert = value.actions.onShowVerifiedAlert, ), ), - walletName = value.context.session.wallet.name.takeIf { value.context.session.showWalletInfo }, + portfolioName = value.portfolioName, networkInfo = networkInfoUMConverter.convert(value.context.network), address = WcAddressConverter.convert(value.context.derivationState), isLoading = value.signState.domainStep == WcSignStep.Signing, @@ -52,5 +53,6 @@ internal class WcSignTypedDataUMConverter @Inject constructor( val signState: WcSignState<*>, val signModel: WcMessageSignUseCase.SignModel, val actions: WcTransactionActionsUM, + val portfolioName: AccountTitleUM?, ) } \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/chain/WcAddEthereumChainUM.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/chain/WcAddEthereumChainUM.kt index 5cf66c06a7..9d43fc8c5a 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/chain/WcAddEthereumChainUM.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/chain/WcAddEthereumChainUM.kt @@ -1,5 +1,6 @@ package com.tangem.features.walletconnect.transaction.entity.chain +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent import com.tangem.features.walletconnect.transaction.entity.common.WcCommonTransactionUM import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionAppInfoContentUM @@ -14,6 +15,6 @@ internal data class WcAddEthereumChainItemUM( val onDismiss: () -> Unit, val onSign: () -> Unit, val appInfo: WcTransactionAppInfoContentUM, - val walletName: String, + val portfolioName: AccountTitleUM?, val isLoading: Boolean = false, ) : TangemBottomSheetConfigContent \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/send/WcSendTransactionUM.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/send/WcSendTransactionUM.kt index 2eb5493da3..f98dcecdc5 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/send/WcSendTransactionUM.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/send/WcSendTransactionUM.kt @@ -1,6 +1,7 @@ package com.tangem.features.walletconnect.transaction.entity.send import com.domain.blockaid.models.transaction.ValidationResult +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.common.ui.notifications.NotificationUM import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent import com.tangem.features.send.v2.api.entity.FeeSelectorUM @@ -25,7 +26,7 @@ internal data class WcSendTransactionItemUM( val onSend: () -> Unit, val appInfo: WcTransactionAppInfoContentUM, val estimatedWalletChanges: WcSendReceiveTransactionCheckResultsUM?, - val walletName: String?, + val portfolioName: AccountTitleUM?, val networkInfo: WcNetworkInfoUM, val address: String?, val transactionValidationResult: ValidationResult?, diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/sign/WcSignTransactionUM.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/sign/WcSignTransactionUM.kt index bdc508086b..3d63016c10 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/sign/WcSignTransactionUM.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/entity/sign/WcSignTransactionUM.kt @@ -1,5 +1,6 @@ package com.tangem.features.walletconnect.transaction.entity.sign +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent import com.tangem.features.walletconnect.transaction.entity.common.WcCommonTransactionUM import com.tangem.features.walletconnect.transaction.entity.common.WcNetworkInfoUM @@ -15,7 +16,7 @@ internal data class WcSignTransactionItemUM( val onDismiss: () -> Unit, val onSign: () -> Unit, val appInfo: WcTransactionAppInfoContentUM, - val walletName: String?, + val portfolioName: AccountTitleUM?, val networkInfo: WcNetworkInfoUM, val address: String?, val walletInteractionIcon: Int?, diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcAddNetworkModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcAddNetworkModel.kt index af17a13db3..08176516ce 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcAddNetworkModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcAddNetworkModel.kt @@ -17,6 +17,7 @@ import com.tangem.domain.walletconnect.usecase.method.WcAddNetworkUseCase import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams import com.tangem.features.walletconnect.transaction.converter.WcAddEthereumChainUMConverter import com.tangem.features.walletconnect.transaction.converter.WcHandleMethodErrorConverter +import com.tangem.features.walletconnect.transaction.converter.WcPortfolioNameDelegate import com.tangem.features.walletconnect.transaction.entity.chain.WcAddEthereumChainUM import com.tangem.features.walletconnect.transaction.entity.common.WcCommonTransactionModel import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionActionsUM @@ -34,6 +35,7 @@ import kotlin.properties.Delegates @ModelScoped internal class WcAddNetworkModel @Inject constructor( paramsContainer: ParamsContainer, + portfolioNameDelegateFactory: WcPortfolioNameDelegate.Factory, override val messageSender: UiMessageSender, override val dispatchers: CoroutineDispatcherProvider, private val router: Router, @@ -48,6 +50,7 @@ internal class WcAddNetworkModel @Inject constructor( val stackNavigation = StackNavigation() + private val portfolioNameDelegate = portfolioNameDelegateFactory.create(modelScope) private val params = paramsContainer.require() private var useCase by Delegates.notNull() private val signatureReceivedAnalyticsSendState = MutableStateFlow(false) @@ -71,6 +74,7 @@ internal class WcAddNetworkModel @Inject constructor( _uiState.value = wcAddEthereumChainUMConverter.convert( WcAddEthereumChainUMConverter.Input( useCase = useCase, + portfolioName = portfolioNameDelegate.createAccountTitleUM(useCase.session), actions = WcTransactionActionsUM( onShowVerifiedAlert = ::showVerifiedAlert, onDismiss = { cancel(useCase) }, diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt index 9e386e1956..2ed61e7552 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt @@ -47,6 +47,7 @@ import com.tangem.features.walletconnect.connections.routing.WcInnerRoute import com.tangem.features.walletconnect.impl.R import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams import com.tangem.features.walletconnect.transaction.converter.WcHandleMethodErrorConverter +import com.tangem.features.walletconnect.transaction.converter.WcPortfolioNameDelegate import com.tangem.features.walletconnect.transaction.converter.WcSendTransactionUMConverter import com.tangem.features.walletconnect.transaction.entity.blockaid.WcSendReceiveTransactionCheckResultsUM import com.tangem.features.walletconnect.transaction.entity.common.WcCommonTransactionModel @@ -69,6 +70,7 @@ import kotlin.properties.Delegates @ModelScoped internal class WcSendTransactionModel @Inject constructor( paramsContainer: ParamsContainer, + portfolioNameDelegateFactory: WcPortfolioNameDelegate.Factory, override val messageSender: UiMessageSender, override val dispatchers: CoroutineDispatcherProvider, private val feeSelectorReloadTrigger: FeeSelectorReloadTrigger, @@ -90,6 +92,7 @@ internal class WcSendTransactionModel @Inject constructor( val stackNavigation = StackNavigation() + private val portfolioNameDelegate = portfolioNameDelegateFactory.create(modelScope) internal var cryptoCurrencyStatus: CryptoCurrencyStatus by Delegates.notNull() internal var feeStateConfiguration: FeeStateConfiguration = FeeStateConfiguration.None private var useCase: WcSignUseCase<*> by Delegates.notNull() @@ -276,6 +279,7 @@ internal class WcSendTransactionModel @Inject constructor( cryptoCurrencyStatus = cryptoCurrencyStatus, onFeeReload = ::triggerFeeReload, securityCheck = securityCheck.getOrNull(), + portfolioName = portfolioNameDelegate.createAccountTitleUM(useCase.session), ), ) transactionUM = transactionUM?.copy( diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSignTransactionModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSignTransactionModel.kt index 3d41876dbb..88852cdbbc 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSignTransactionModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSignTransactionModel.kt @@ -22,6 +22,7 @@ import com.tangem.domain.walletconnect.usecase.method.WcSignStep import com.tangem.domain.walletconnect.usecase.method.WcSignUseCase import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams import com.tangem.features.walletconnect.transaction.converter.WcHandleMethodErrorConverter +import com.tangem.features.walletconnect.transaction.converter.WcPortfolioNameDelegate import com.tangem.features.walletconnect.transaction.converter.WcSignTransactionUMConverter import com.tangem.features.walletconnect.transaction.converter.WcSignTypedDataUMConverter import com.tangem.features.walletconnect.transaction.entity.common.WcCommonTransactionModel @@ -50,6 +51,7 @@ internal class WcSignTransactionModel @Inject constructor( private val useCaseFactory: WcRequestUseCaseFactory, private val signTypedDataUMConverter: WcSignTypedDataUMConverter, private val signTransactionUMConverter: WcSignTransactionUMConverter, + portfolioNameDelegateFactory: WcPortfolioNameDelegate.Factory, ) : Model(), WcCommonTransactionModel { private val params = paramsContainer.require() @@ -61,6 +63,7 @@ internal class WcSignTransactionModel @Inject constructor( private var useCase by Delegates.notNull() private val signatureReceivedAnalyticsSendState = MutableStateFlow(false) + private val portfolioNameDelegate = portfolioNameDelegateFactory.create(modelScope) init { modelScope.launch { @@ -95,6 +98,7 @@ internal class WcSignTransactionModel @Inject constructor( signState = signState, signModel = signState.signModel, actions = actions, + portfolioName = portfolioNameDelegate.createAccountTitleUM(useCase.session), ), ) is WcEthMethod.MessageSign, is WcSolanaMethod.SignMessage -> signTransactionUMConverter.convert( @@ -103,6 +107,7 @@ internal class WcSignTransactionModel @Inject constructor( signState = signState, signModel = signState.signModel, actions = actions, + portfolioName = portfolioNameDelegate.createAccountTitleUM(useCase.session), ), ) else -> null diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/chain/WcAddEthereumChainModalBottomSheetContent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/chain/WcAddEthereumChainModalBottomSheetContent.kt index 73d7ef80e2..f6ac8916b1 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/chain/WcAddEthereumChainModalBottomSheetContent.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/chain/WcAddEthereumChainModalBottomSheetContent.kt @@ -33,7 +33,9 @@ import com.tangem.features.walletconnect.transaction.entity.common.WcTransaction import com.tangem.features.walletconnect.transaction.ui.common.WcSimpleConfirmButtons import com.tangem.features.walletconnect.transaction.ui.common.WcSmallTitleItem import com.tangem.features.walletconnect.transaction.ui.common.WcTransactionRequestItem -import com.tangem.features.walletconnect.transaction.ui.common.WcWalletItem +import com.tangem.features.walletconnect.transaction.ui.common.WcPortfolioItem +import com.tangem.features.walletconnect.transaction.ui.sign.accountPortfolioName +import com.tangem.features.walletconnect.transaction.ui.sign.walletPortfolioName @Composable internal fun WcAddEthereumChainModalBottomSheetContent( @@ -111,14 +113,16 @@ private fun WcAddEthereumChainItems(state: WcAddEthereumChainItemUM) { .fillMaxWidth() .animateContentSize(), ) { - DividerWithPadding(start = 0.dp, end = 0.dp) - WcWalletItem( - modifier = Modifier - .fillMaxWidth() - .padding(12.dp), - walletName = state.walletName, - ) - DividerWithPadding(start = 40.dp, end = 12.dp) + if (state.portfolioName != null) { + DividerWithPadding(start = 0.dp, end = 0.dp) + WcPortfolioItem( + modifier = Modifier + .fillMaxWidth() + .padding(12.dp), + portfolioName = state.portfolioName, + ) + DividerWithPadding(start = 40.dp, end = 12.dp) + } } } @@ -163,7 +167,18 @@ private class WcAddEthereumChainStateProvider : CollectionPreviewParameterProvid verifiedState = VerifiedDAppState.Verified {}, appSubtitle = "react-app.walletconnect.com", ), - walletName = "Tangem 2.0", + portfolioName = walletPortfolioName, + ), + WcAddEthereumChainItemUM( + onDismiss = {}, + onSign = {}, + appInfo = WcTransactionAppInfoContentUM( + appName = "React App", + appIcon = "", + verifiedState = VerifiedDAppState.Verified {}, + appSubtitle = "react-app.walletconnect.com", + ), + portfolioName = accountPortfolioName, ), ), ) \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcSendTransactionItems.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcSendTransactionItems.kt index fe0f4cfc06..a8bc3dff7f 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcSendTransactionItems.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcSendTransactionItems.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.core.ui.components.divider.DividerWithPadding import com.tangem.core.ui.extensions.clickableSingle import com.tangem.core.ui.res.TangemTheme @@ -22,7 +23,7 @@ import com.tangem.features.walletconnect.transaction.entity.common.WcTransaction @Suppress("LongParameterList") @Composable internal fun WcSendTransactionItems( - walletName: String?, + portfolioName: AccountTitleUM?, networkInfo: WcNetworkInfoUM, feeState: WcTransactionFeeState, feeSelectorBlockComponent: FeeSelectorBlockComponent?, @@ -48,10 +49,10 @@ internal fun WcSendTransactionItems( .fillMaxWidth() .padding(TangemTheme.dimens.spacing12) - if (walletName != null) { - WcWalletItem( + if (portfolioName != null) { + WcPortfolioItem( modifier = itemsModifier, - walletName = walletName, + portfolioName = portfolioName, ) DividerWithPadding(start = TangemTheme.dimens.spacing40, end = TangemTheme.dimens.spacing12) } diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcWalletItem.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcWalletItem.kt index 3a416412ee..c8251d3242 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcWalletItem.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcWalletItem.kt @@ -10,14 +10,18 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextOverflow +import com.tangem.common.ui.account.AccountTitle +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.core.ui.components.SpacerWMax +import com.tangem.core.ui.components.account.AccountIconSize import com.tangem.core.ui.components.tooltip.TangemTooltip +import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.TangemTheme import com.tangem.features.walletconnect.impl.R @Composable -internal fun WcWalletItem(walletName: String, modifier: Modifier = Modifier) { +internal fun WcPortfolioItem(portfolioName: AccountTitleUM, modifier: Modifier = Modifier) { Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) { var isTooltipEnabled by remember { mutableStateOf(false) } Icon( @@ -26,29 +30,42 @@ internal fun WcWalletItem(walletName: String, modifier: Modifier = Modifier) { contentDescription = null, tint = TangemTheme.colors.icon.accent, ) + val leftText: String = when (portfolioName) { + is AccountTitleUM.Account -> stringResourceSafe(R.string.common_account) + is AccountTitleUM.Text -> stringResourceSafe(R.string.wc_common_wallet) + } Text( modifier = Modifier.padding(start = TangemTheme.dimens.spacing8), - text = stringResourceSafe(R.string.manage_tokens_network_selector_wallet), + text = leftText, style = TangemTheme.typography.body1, color = TangemTheme.colors.text.primary1, maxLines = 1, ) SpacerWMax() - TangemTooltip( - modifier = Modifier.padding(start = TangemTheme.dimens.spacing16), - text = walletName, - enabled = isTooltipEnabled, - content = { contentModifier -> - Text( - modifier = contentModifier, - text = walletName, - style = TangemTheme.typography.body1, - color = TangemTheme.colors.text.tertiary, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - onTextLayout = { isTooltipEnabled = it.hasVisualOverflow }, - ) - }, - ) + when (portfolioName) { + is AccountTitleUM.Account -> AccountTitle( + modifier = Modifier.padding(start = TangemTheme.dimens.spacing16), + accountTitleUM = portfolioName, + textStyle = TangemTheme.typography.body1, + textColor = TangemTheme.colors.text.tertiary, + iconSize = AccountIconSize.Small, + ) + is AccountTitleUM.Text -> TangemTooltip( + modifier = Modifier.padding(start = TangemTheme.dimens.spacing16), + text = portfolioName.title.resolveReference(), + enabled = isTooltipEnabled, + content = { contentModifier -> + Text( + modifier = contentModifier, + text = portfolioName.title.resolveReference(), + style = TangemTheme.typography.body1, + color = TangemTheme.colors.text.tertiary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + onTextLayout = { isTooltipEnabled = it.hasVisualOverflow }, + ) + }, + ) + } } } \ No newline at end of file diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/send/WcSendTransactionModalBottomSheet.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/send/WcSendTransactionModalBottomSheet.kt index 1f02216d53..313408a064 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/send/WcSendTransactionModalBottomSheet.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/send/WcSendTransactionModalBottomSheet.kt @@ -51,6 +51,8 @@ import com.tangem.features.walletconnect.transaction.ui.common.WcSendTransaction import com.tangem.features.walletconnect.transaction.ui.common.WcSmallTitleItem import com.tangem.features.walletconnect.transaction.ui.common.WcTransactionRequestButtons import com.tangem.features.walletconnect.transaction.ui.common.WcTransactionRequestItem +import com.tangem.features.walletconnect.transaction.ui.sign.accountPortfolioName +import com.tangem.features.walletconnect.transaction.ui.sign.walletPortfolioName import kotlinx.collections.immutable.persistentListOf import java.math.BigDecimal @@ -114,7 +116,7 @@ internal fun WcSendTransactionModalBottomSheet( } WcSendTransactionItems( modifier = Modifier.padding(top = 16.dp), - walletName = state.walletName, + portfolioName = state.portfolioName, networkInfo = state.networkInfo, feeState = state.feeState, feeSelectorBlockComponent = feeSelectorBlockComponent, @@ -220,7 +222,7 @@ private class WcSendTransactionStateProvider : CollectionPreviewParameterProvide ), isLoading = false, ), - walletName = "Tangem 2.0 Tangem 2.0 Tangem 2", + portfolioName = accountPortfolioName, networkInfo = WcNetworkInfoUM(name = "Optimistic Ethereum Network", iconRes = R.drawable.img_eth_22), feeState = WcTransactionFeeState.Success(dAppFee = null, onClick = {}), address = null, @@ -260,7 +262,7 @@ private class WcSendTransactionStateProvider : CollectionPreviewParameterProvide ), ), ), - walletName = "Tangem 2.0", + portfolioName = walletPortfolioName, networkInfo = WcNetworkInfoUM(name = "Ethereum", iconRes = R.drawable.img_eth_22), feeState = WcTransactionFeeState.Success(dAppFee = null, onClick = {}), address = "0xdac17f958d2ee523a2206206994597c13d831ec7", @@ -303,7 +305,7 @@ private class WcSendTransactionStateProvider : CollectionPreviewParameterProvide ), ), ), - walletName = null, + portfolioName = null, networkInfo = WcNetworkInfoUM(name = "Ethereum", iconRes = R.drawable.img_eth_22), feeState = WcTransactionFeeState.None, address = null, @@ -339,7 +341,7 @@ private class WcSendTransactionStateProvider : CollectionPreviewParameterProvide onLearnMoreClicked = {}, ), ), - walletName = "Tangem 2.0", + portfolioName = accountPortfolioName, networkInfo = WcNetworkInfoUM(name = "Ethereum", iconRes = R.drawable.img_eth_22), feeState = WcTransactionFeeState.None, address = "0xdac17f958d2ee523a2206206994597c13d831ec7", diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/sign/WcSignTransactionModalBottomSheetContent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/sign/WcSignTransactionModalBottomSheetContent.kt index a662c1f8b7..d4e6d4a916 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/sign/WcSignTransactionModalBottomSheetContent.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/sign/WcSignTransactionModalBottomSheetContent.kt @@ -16,13 +16,17 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider import androidx.compose.ui.unit.dp +import com.tangem.common.ui.account.AccountIconPreviewData +import com.tangem.common.ui.account.AccountTitleUM import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent import com.tangem.core.ui.components.bottomsheets.modal.TangemModalBottomSheet import com.tangem.core.ui.components.bottomsheets.modal.TangemModalBottomSheetTitle import com.tangem.core.ui.components.bottomsheets.modal.TangemModalBottomSheetWithFooter import com.tangem.core.ui.components.divider.DividerWithPadding +import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.resourceReference +import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview import com.tangem.features.walletconnect.connections.entity.VerifiedDAppState @@ -115,10 +119,10 @@ private fun WcSignTransactionItems(state: WcSignTransactionItemUM, modifier: Mod .fillMaxWidth() .padding(12.dp) - if (state.walletName != null) { - WcWalletItem( + if (state.portfolioName != null) { + WcPortfolioItem( modifier = itemsModifier, - walletName = state.walletName, + portfolioName = state.portfolioName, ) DividerWithPadding(start = 40.dp, end = 12.dp) } @@ -182,7 +186,7 @@ private class WcSignTransactionStateProvider : CollectionPreviewParameterProvide verifiedState = VerifiedDAppState.Verified {}, appSubtitle = "react-app.walletconnect.com", ), - walletName = "Tangem 2.0", + portfolioName = walletPortfolioName, networkInfo = WcNetworkInfoUM(name = "Ethereum", iconRes = R.drawable.img_eth_22), address = null, walletInteractionIcon = R.drawable.ic_tangem_24, @@ -196,10 +200,20 @@ private class WcSignTransactionStateProvider : CollectionPreviewParameterProvide verifiedState = VerifiedDAppState.Verified {}, appSubtitle = "react-app.walletconnect.com", ), - walletName = null, + portfolioName = null, networkInfo = WcNetworkInfoUM(name = "Ethereum", iconRes = R.drawable.img_eth_22), address = "0xdac17f958d2ee523a2206206994597c13d831ec7", walletInteractionIcon = R.drawable.ic_tangem_24, ), ), -) \ No newline at end of file +) + +internal val walletPortfolioName + get() = AccountTitleUM.Text(title = stringReference("Wallet 1")) + +internal val accountPortfolioName + get() = AccountTitleUM.Account( + icon = AccountIconPreviewData.randomAccountIcon(), + name = stringReference("Main Account"), + prefixText = TextReference.EMPTY, + ) \ No newline at end of file