diff --git a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt
index 6c0ebccfc6..92f1340058 100644
--- a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt
+++ b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt
@@ -2,10 +2,7 @@ package com.tangem.tap.di.domain
import com.tangem.domain.walletmanager.WalletManagersFacade
import com.tangem.domain.wallets.legacy.WalletsStateHolder
-import com.tangem.domain.wallets.usecase.GetExploreUrlUseCase
-import com.tangem.domain.wallets.usecase.GetWalletsUseCase
-import com.tangem.domain.wallets.usecase.SaveWalletUseCase
-import com.tangem.domain.wallets.usecase.UnlockWalletsUseCase
+import com.tangem.domain.wallets.usecase.*
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -22,6 +19,12 @@ internal object WalletsDomainModule {
return GetWalletsUseCase(walletsStateHolder = walletsStateHolder)
}
+ @Provides
+ @ViewModelScoped
+ fun providesGetSelectedWalletUseCase(walletsStateHolder: WalletsStateHolder): GetSelectedWalletUseCase {
+ return GetSelectedWalletUseCase(walletsStateHolder = walletsStateHolder)
+ }
+
@Provides
@ViewModelScoped
fun providesSaveWalletUseCase(walletsStateHolder: WalletsStateHolder): SaveWalletUseCase {
@@ -39,4 +42,10 @@ internal object WalletsDomainModule {
fun providesUnlockWalletUseCase(walletsStateHolder: WalletsStateHolder): UnlockWalletsUseCase {
return UnlockWalletsUseCase(walletsStateHolder = walletsStateHolder)
}
+
+ @Provides
+ @ViewModelScoped
+ fun providesSelectWalletUseCase(walletsStateHolder: WalletsStateHolder): SelectWalletUseCase {
+ return SelectWalletUseCase(walletsStateHolder = walletsStateHolder)
+ }
}
\ No newline at end of file
diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml
index 7076371f81..6966257f9a 100644
--- a/core/res/src/main/res/values-ru/strings.xml
+++ b/core/res/src/main/res/values-ru/strings.xml
@@ -177,6 +177,7 @@
По вашему промокоду не было покупки кошелька, а значит вы не можете получить бонус. Купите кошелек Tangem, отсканируйте его в приложении и получите бонус.
Чтобы получить доступ ко всем сетям, вам необходимо отсканировать карту
Отсканируйте карту
+ Токены
Вам необходимо установить единый код доступа для защиты всех ваших карт
Защита
Позже вы сможете установить индивидуальный код доступа для каждой карты
diff --git a/core/res/src/main/res/values-zh-rTW/strings.xml b/core/res/src/main/res/values-zh-rTW/strings.xml
index 0b2d148627..87318128aa 100644
--- a/core/res/src/main/res/values-zh-rTW/strings.xml
+++ b/core/res/src/main/res/values-zh-rTW/strings.xml
@@ -150,6 +150,7 @@
該金額不包括您的部分資金
要訪問所有的網路您需要掃描卡片
掃描卡片
+ 代幣
您必須設置一個單一的訪問代碼來保護您的所有錢包
保護
您可以稍後在每張卡上設置單獨的訪問密碼
diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index e207afb74d..b958ba0f9f 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -174,6 +174,7 @@
There was no purchase of a wallet using your promo code, which means you cannot receive a bonus. Buy Tangem wallet, scan it in the app, and get the bonus.
To access all the networks you need to scan the card
Scan your card
+ Tokens
You have to set up a single access code to protect all your wallets
Protect
You can set up an individual access code on each card later
diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/models/GetSelectedWalletError.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/models/GetSelectedWalletError.kt
new file mode 100644
index 0000000000..ad0867fa6e
--- /dev/null
+++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/models/GetSelectedWalletError.kt
@@ -0,0 +1,8 @@
+package com.tangem.domain.wallets.models
+
+sealed interface GetSelectedWalletError {
+
+ object DataError : GetSelectedWalletError
+
+ object NoUserWalletSelected : GetSelectedWalletError
+}
\ No newline at end of file
diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/models/SelectWalletError.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/models/SelectWalletError.kt
new file mode 100644
index 0000000000..a357f06ca9
--- /dev/null
+++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/models/SelectWalletError.kt
@@ -0,0 +1,8 @@
+package com.tangem.domain.wallets.models
+
+sealed interface SelectWalletError {
+
+ object DataError : SelectWalletError
+
+ object UnableToSelectUserWallet : SelectWalletError
+}
\ No newline at end of file
diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletUseCase.kt
new file mode 100644
index 0000000000..89d6fe1405
--- /dev/null
+++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletUseCase.kt
@@ -0,0 +1,32 @@
+package com.tangem.domain.wallets.usecase
+
+import arrow.core.Either
+import arrow.core.raise.either
+import arrow.core.raise.ensureNotNull
+import com.tangem.domain.wallets.legacy.WalletsStateHolder
+import com.tangem.domain.wallets.models.GetSelectedWalletError
+import com.tangem.domain.wallets.models.UserWallet
+
+/**
+ * Use case for getting selected wallet
+ *
+ * @property walletsStateHolder state holder for getting static initialized 'userWalletsListManager'
+ *
+[REDACTED_AUTHOR]
+ */
+class GetSelectedWalletUseCase(private val walletsStateHolder: WalletsStateHolder) {
+
+ operator fun invoke(): Either {
+ return either {
+ val userWalletsListManager = ensureNotNull(
+ value = walletsStateHolder.userWalletsListManager,
+ raise = { GetSelectedWalletError.DataError },
+ )
+
+ ensureNotNull(
+ value = userWalletsListManager.selectedUserWalletSync,
+ raise = { GetSelectedWalletError.NoUserWalletSelected },
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SelectWalletUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SelectWalletUseCase.kt
new file mode 100644
index 0000000000..aa16ad812b
--- /dev/null
+++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SelectWalletUseCase.kt
@@ -0,0 +1,37 @@
+package com.tangem.domain.wallets.usecase
+
+import arrow.core.Either
+import arrow.core.left
+import arrow.core.raise.either
+import arrow.core.raise.ensureNotNull
+import arrow.core.right
+import com.tangem.common.doOnFailure
+import com.tangem.common.doOnSuccess
+import com.tangem.domain.wallets.legacy.WalletsStateHolder
+import com.tangem.domain.wallets.models.SelectWalletError
+import com.tangem.domain.wallets.models.UserWalletId
+
+/**
+ * Use case for selecting wallet
+ *
+ * @property walletsStateHolder state holder for getting static initialized 'userWalletsListManager'
+ *
+[REDACTED_AUTHOR]
+ */
+class SelectWalletUseCase(private val walletsStateHolder: WalletsStateHolder) {
+
+ suspend operator fun invoke(userWalletId: UserWalletId): Either {
+ return either {
+ val userWalletsListManager = ensureNotNull(
+ value = walletsStateHolder.userWalletsListManager,
+ raise = { SelectWalletError.DataError },
+ )
+
+ userWalletsListManager.select(userWalletId)
+ .doOnSuccess { return Unit.right() }
+ .doOnFailure { return SelectWalletError.UnableToSelectUserWallet.left() }
+
+ return Unit.right()
+ }
+ }
+}
\ No newline at end of file
diff --git a/features/wallet/impl/src/main/res/drawable/ic_currency_24.xml b/features/wallet/impl/src/main/res/drawable/ic_currency_24.xml
new file mode 100644
index 0000000000..bee87c2b68
--- /dev/null
+++ b/features/wallet/impl/src/main/res/drawable/ic_currency_24.xml
@@ -0,0 +1,9 @@
+
+
+