Updated on 2026-08-14

This commit is contained in:
Tangem 2023-08-09 18:44:09 +08:00
parent 3b33d4db0a
commit 2336c837cb
9 changed files with 110 additions and 4 deletions

View file

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

View file

@ -177,6 +177,7 @@
<string name="main_promotion_no_purchase">По вашему промокоду не было покупки кошелька, а значит вы не можете получить бонус. Купите кошелек Tangem, отсканируйте его в приложении и получите бонус.</string>
<string name="main_scan_card_warning_view_subtitle">Чтобы получить доступ ко всем сетям, вам необходимо отсканировать карту</string>
<string name="main_scan_card_warning_view_title">Отсканируйте карту</string>
<string name="main_tokens">Токены</string>
<string name="onboarding_access_code_feature_1_description">Вам необходимо установить единый код доступа для защиты всех ваших карт</string>
<string name="onboarding_access_code_feature_1_title">Защита</string>
<string name="onboarding_access_code_feature_2_description">Позже вы сможете установить индивидуальный код доступа для каждой карты</string>

View file

@ -150,6 +150,7 @@
<string name="main_processing_full_amount">該金額不包括您的部分資金</string>
<string name="main_scan_card_warning_view_subtitle">要訪問所有的網路您需要掃描卡片</string>
<string name="main_scan_card_warning_view_title">掃描卡片</string>
<string name="main_tokens">代幣</string>
<string name="onboarding_access_code_feature_1_description">您必須設置一個單一的訪問代碼來保護您的所有錢包</string>
<string name="onboarding_access_code_feature_1_title">保護</string>
<string name="onboarding_access_code_feature_2_description">您可以稍後在每張卡上設置單獨的訪問密碼</string>

View file

@ -174,6 +174,7 @@
<string name="main_promotion_no_purchase">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.</string>
<string name="main_scan_card_warning_view_subtitle">To access all the networks you need to scan the card</string>
<string name="main_scan_card_warning_view_title">Scan your card</string>
<string name="main_tokens">Tokens</string>
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets</string>
<string name="onboarding_access_code_feature_1_title">Protect</string>
<string name="onboarding_access_code_feature_2_description">You can set up an individual access code on each card later</string>

View file

@ -0,0 +1,8 @@
package com.tangem.domain.wallets.models
sealed interface GetSelectedWalletError {
object DataError : GetSelectedWalletError
object NoUserWalletSelected : GetSelectedWalletError
}

View file

@ -0,0 +1,8 @@
package com.tangem.domain.wallets.models
sealed interface SelectWalletError {
object DataError : SelectWalletError
object UnableToSelectUserWallet : SelectWalletError
}

View file

@ -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<GetSelectedWalletError, UserWallet> {
return either {
val userWalletsListManager = ensureNotNull(
value = walletsStateHolder.userWalletsListManager,
raise = { GetSelectedWalletError.DataError },
)
ensureNotNull(
value = userWalletsListManager.selectedUserWalletSync,
raise = { GetSelectedWalletError.NoUserWalletSelected },
)
}
}
}

View file

@ -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<SelectWalletError, Unit> {
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()
}
}
}

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M7,15H9C9,16.08 10.37,17 12,17C13.63,17 15,16.08 15,15C15,13.9 13.96,13.5 11.76,12.97C9.64,12.44 7,11.78 7,9C7,7.21 8.47,5.69 10.5,5.18V3H13.5V5.18C15.53,5.69 17,7.21 17,9H15C15,7.92 13.63,7 12,7C10.37,7 9,7.92 9,9C9,10.1 10.04,10.5 12.24,11.03C14.36,11.56 17,12.22 17,15C17,16.79 15.53,18.31 13.5,18.82V21H10.5V18.82C8.47,18.31 7,16.79 7,15Z"
android:fillColor="#1E1E1E" />
</vector>