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) },
),
)
}