diff --git a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt index 3eebff1081..189f0f09e5 100644 --- a/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt +++ b/app/src/main/java/com/tangem/tap/routing/utils/ChildFactory.kt @@ -406,7 +406,10 @@ internal class ChildFactory @Inject constructor( is AppRoute.NFT -> createComponentChild( context = context, - params = NFTComponent.Params(userWalletId = route.userWalletId), + params = NFTComponent.Params( + userWalletId = route.userWalletId, + walletName = route.walletName, + ), componentFactory = nftComponentFactory, ) is AppRoute.NFTSend -> { @@ -757,7 +760,10 @@ internal class ChildFactory @Inject constructor( is AppRoute.NFT -> route.asComponentChild( contextProvider = contextProvider(route, contextFactory), - params = NFTComponent.Params(userWalletId = route.userWalletId), + params = NFTComponent.Params( + userWalletId = route.userWalletId, + walletName = route.walletName, + ), componentFactory = nftComponentFactory, ) is AppRoute.NFTSend -> { diff --git a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt index 2074653f5f..ca72fdcd9a 100644 --- a/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt +++ b/common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt @@ -283,6 +283,7 @@ sealed class AppRoute(val path: String) : Route { @Serializable data class NFT( val userWalletId: UserWalletId, + val walletName: String, ) : AppRoute(path = "/nft/${userWalletId.stringValue}") @Serializable diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index b59492d1ed..df67256173 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -518,7 +518,6 @@ 特徴 結果がありません。別のリクエストをお試しください。 ネットワークを選択 - 私のウォレットへ NFTを受け取る %1$dコレクションの%2$dNFT ここをタップして最初のNFTを受け取ります diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 42b9c6762c..074a5c4164 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -527,7 +527,6 @@ Traits No results. Please try another request. Choose network - To My wallet Receive NFT Traits %1$d NFTs in %2$d collection diff --git a/features/nft/api/src/main/kotlin/com/tangem/features/nft/component/NFTComponent.kt b/features/nft/api/src/main/kotlin/com/tangem/features/nft/component/NFTComponent.kt index f2f8d3f9e5..f49edd1b5b 100644 --- a/features/nft/api/src/main/kotlin/com/tangem/features/nft/component/NFTComponent.kt +++ b/features/nft/api/src/main/kotlin/com/tangem/features/nft/component/NFTComponent.kt @@ -8,6 +8,7 @@ interface NFTComponent : ComposableContentComponent { data class Params( val userWalletId: UserWalletId, + val walletName: String, ) interface Factory : ComponentFactory diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/common/DefaultNFTComponent.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/common/DefaultNFTComponent.kt index 95e4a2ad8f..5b60f0c848 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/common/DefaultNFTComponent.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/common/DefaultNFTComponent.kt @@ -122,6 +122,7 @@ internal class DefaultNFTComponent @AssistedInject constructor( context = factoryContext, params = NFTReceiveComponent.Params( userWalletId = route.userWalletId, + walletName = params.walletName, onBackClick = ::onChildBack, ), ) diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/NFTReceiveComponent.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/NFTReceiveComponent.kt index 0be6d0b5f7..e52f42d20d 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/NFTReceiveComponent.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/NFTReceiveComponent.kt @@ -29,6 +29,7 @@ internal class NFTReceiveComponent @AssistedInject constructor( data class Params( val userWalletId: UserWalletId, + val walletName: String, val onBackClick: () -> Unit, ) } \ No newline at end of file diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/entity/NFTReceiveUM.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/entity/NFTReceiveUM.kt index 0764b2f074..e31c80c425 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/entity/NFTReceiveUM.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/entity/NFTReceiveUM.kt @@ -3,10 +3,12 @@ package com.tangem.features.nft.receive.entity import androidx.compose.runtime.Immutable import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig import com.tangem.core.ui.components.fields.entity.SearchBarUM +import com.tangem.core.ui.extensions.TextReference import kotlinx.collections.immutable.ImmutableList internal data class NFTReceiveUM( val onBackClick: () -> Unit, + val appBarSubtitle: TextReference, val search: SearchBarUM, val networks: Networks, val bottomSheetConfig: TangemBottomSheetConfig?, diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt index 3d62d4c7e2..88a9b57851 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/model/NFTReceiveModel.kt @@ -9,6 +9,7 @@ import com.tangem.core.ui.clipboard.ClipboardManager import com.tangem.core.ui.components.fields.InputManager import com.tangem.core.ui.components.fields.entity.SearchBarUM import com.tangem.core.ui.extensions.resourceReference +import com.tangem.core.ui.extensions.wrappedList import com.tangem.domain.nft.FilterNFTAvailableNetworksUseCase import com.tangem.domain.nft.GetNFTAvailableNetworksUseCase import com.tangem.domain.nft.GetNFTNetworkStatusUseCase @@ -47,6 +48,10 @@ internal class NFTReceiveModel @Inject constructor( private val _state = MutableStateFlow( value = NFTReceiveUM( onBackClick = params.onBackClick, + appBarSubtitle = resourceReference( + R.string.hot_crypto_add_token_subtitle, + formatArgs = wrappedList(params.walletName), + ), search = getInitialSearchBar(), networks = NFTReceiveUM.Networks.Content(persistentListOf()), bottomSheetConfig = null, diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/ui/NFTReceive.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/ui/NFTReceive.kt index 69acaeef22..47a338514f 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/ui/NFTReceive.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/receive/ui/NFTReceive.kt @@ -13,6 +13,7 @@ import com.tangem.core.ui.components.appbar.models.TopAppBarButtonUM import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig import com.tangem.core.ui.components.fields.SearchBar import com.tangem.core.ui.components.fields.TangemSearchBarDefaults +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.nft.impl.R @@ -33,7 +34,7 @@ internal fun NFTReceive(state: NFTReceiveUM, modifier: Modifier = Modifier) { onIconClicked = state.onBackClick, ), title = stringResourceSafe(id = R.string.nft_receive_title), - subtitle = stringResourceSafe(id = R.string.nft_receive_subtitle), + subtitle = state.appBarSubtitle.resolveReference(), ) }, content = { innerPadding -> diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletContentClickIntents.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletContentClickIntents.kt index 9bb3ac509c..e4b51cf352 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletContentClickIntents.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/child/wallet/model/intents/WalletContentClickIntents.kt @@ -14,7 +14,6 @@ import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.domain.tokens.model.TokenActionsState import com.tangem.domain.txhistory.usecase.GetExplorerTransactionUrlUseCase import com.tangem.domain.wallets.models.UserWallet -import com.tangem.domain.wallets.models.UserWalletId import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.feature.wallet.presentation.wallet.domain.OnrampStatusFactory import com.tangem.feature.wallet.presentation.wallet.domain.unwrap @@ -59,7 +58,7 @@ internal interface WalletContentClickIntents { fun onDisposeExpressStatus() - fun onNFTClick(userWalletId: UserWalletId) + fun onNFTClick(userWallet: UserWallet) } @Suppress("LongParameterList") @@ -242,7 +241,7 @@ internal class WalletContentClickIntentsImplementor @Inject constructor( stateHolder.update(CloseBottomSheetTransformer(userWalletId)) } - override fun onNFTClick(userWalletId: UserWalletId) { + override fun onNFTClick(userWallet: UserWallet) { val selectedWallet = stateHolder.getSelectedWallet() as? WalletState.MultiCurrency.Content ?: return val analyticsState = when (val nftState = selectedWallet.nftState) { is WalletNFTItemUM.Content -> NFTAnalyticsEvent.NFTListScreenOpened.State.Full(nftState.assetsCount) @@ -256,6 +255,6 @@ internal class WalletContentClickIntentsImplementor @Inject constructor( analyticsEventHandler.send(NFTAnalyticsEvent.NFTListScreenOpened(analyticsState)) } - router.openNFT(userWalletId) + router.openNFT(userWallet) } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt index 8028924122..2b865d1f61 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/DefaultWalletRouter.kt @@ -10,6 +10,7 @@ import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.redux.ReduxStateHolder import com.tangem.domain.redux.StateDialog import com.tangem.domain.tokens.model.CryptoCurrencyStatus +import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId import com.tangem.feature.wallet.navigation.WalletRoute import com.tangem.feature.wallet.presentation.wallet.state.model.WalletDialogConfig @@ -116,7 +117,12 @@ internal class DefaultWalletRouter @Inject constructor( reduxStateHolder.dispatchDialogShow(StateDialog.ScanFailsDialog(StateDialog.ScanFailsSource.MAIN, onTryAgain)) } - override fun openNFT(userWalletId: UserWalletId) { - router.push(AppRoute.NFT(userWalletId)) + override fun openNFT(userWallet: UserWallet) { + router.push( + AppRoute.NFT( + userWalletId = userWallet.walletId, + walletName = userWallet.name, + ), + ) } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/InnerWalletRouter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/InnerWalletRouter.kt index 7d9d61c701..393c930e9c 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/InnerWalletRouter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/router/InnerWalletRouter.kt @@ -4,6 +4,7 @@ import androidx.compose.runtime.Stable import com.arkivanov.decompose.router.slot.SlotNavigation import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrencyStatus +import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId import com.tangem.feature.wallet.navigation.WalletRoute import com.tangem.feature.wallet.presentation.wallet.state.model.WalletDialogConfig @@ -58,5 +59,5 @@ internal interface InnerWalletRouter { fun openScanFailedDialog(onTryAgain: () -> Unit) /** Open NFT collections screen */ - fun openNFT(userWalletId: UserWalletId) + fun openNFT(userWallet: UserWallet) } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/WalletNFTListSubscriber.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/WalletNFTListSubscriber.kt index 67a36a2935..57ed2a8b6d 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/WalletNFTListSubscriber.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/subscribers/WalletNFTListSubscriber.kt @@ -37,7 +37,7 @@ internal class WalletNFTListSubscriber( SetNFTCollectionsTransformer( userWalletId = userWallet.walletId, nftCollections = it, - onItemClick = { clickIntents.onNFTClick(userWallet.walletId) }, + onItemClick = { clickIntents.onNFTClick(userWallet) }, ), ) }