diff --git a/app/src/main/java/com/tangem/tap/data/DefaultVisaAuthTokenStorage.kt b/app/src/main/java/com/tangem/tap/data/DefaultVisaAuthTokenStorage.kt index 28f8fdf2a6..3026ce560a 100644 --- a/app/src/main/java/com/tangem/tap/data/DefaultVisaAuthTokenStorage.kt +++ b/app/src/main/java/com/tangem/tap/data/DefaultVisaAuthTokenStorage.kt @@ -21,6 +21,7 @@ internal class DefaultVisaAuthTokenStorage @Inject constructor( private val secureStorage by lazy { AndroidSecureStorageV2( appContext = applicationContext, + useStrongBox = false, name = "visa_auth_storage", ) } diff --git a/app/src/main/java/com/tangem/tap/data/DefaultVisaOTPStorage.kt b/app/src/main/java/com/tangem/tap/data/DefaultVisaOTPStorage.kt index e6ad08f73d..56acf9f399 100644 --- a/app/src/main/java/com/tangem/tap/data/DefaultVisaOTPStorage.kt +++ b/app/src/main/java/com/tangem/tap/data/DefaultVisaOTPStorage.kt @@ -21,6 +21,7 @@ class DefaultVisaOTPStorage @Inject constructor( private val secureStorage by lazy { AndroidSecureStorageV2( appContext = applicationContext, + useStrongBox = false, name = "visa_otp_storage", ) } diff --git a/app/src/main/java/com/tangem/tap/domain/userWalletList/di/UserWalletsListManagerModule.kt b/app/src/main/java/com/tangem/tap/domain/userWalletList/di/UserWalletsListManagerModule.kt index f2e8fb0312..86be1e5223 100644 --- a/app/src/main/java/com/tangem/tap/domain/userWalletList/di/UserWalletsListManagerModule.kt +++ b/app/src/main/java/com/tangem/tap/domain/userWalletList/di/UserWalletsListManagerModule.kt @@ -49,8 +49,9 @@ internal object UserWalletsListManagerModule { return GeneralUserWalletsListManager( runtimeUserWalletsListManager = RuntimeUserWalletsListManager(), biometricUserWalletsListManager = createBiometricUserWalletsListManager( - applicationContext, - analyticsEventHandler, + applicationContext = applicationContext, + analyticsEventHandler = analyticsEventHandler, + dispatchers = dispatchers, ), appPreferencesStore = appPreferencesStore, dispatchers = dispatchers, @@ -60,6 +61,7 @@ internal object UserWalletsListManagerModule { private fun createBiometricUserWalletsListManager( applicationContext: Context, analyticsEventHandler: AnalyticsEventHandler, + dispatchers: CoroutineDispatcherProvider, ): UserWalletsListManager { val moshi = Moshi.Builder() .add(WalletDerivedKeysMapAdapter()) @@ -83,8 +85,14 @@ internal object UserWalletsListManagerModule { ), androidSecureStorageV2 = AndroidSecureStorageV2( appContext = applicationContext, + useStrongBox = true, name = "user_wallets_storage2", ), + androidSecureStorageV3 = AndroidSecureStorageV2( + appContext = applicationContext, + useStrongBox = false, + name = "user_wallets_storage3", + ), ) val authenticatedStorage = AuthenticatedStorage( @@ -114,7 +122,10 @@ internal object UserWalletsListManagerModule { secureStorage = secureStorage, ) - val selectedUserWalletRepository = DefaultSelectedUserWalletRepository(secureStorage = secureStorage) + val selectedUserWalletRepository = DefaultSelectedUserWalletRepository( + secureStorage = secureStorage, + dispatchers = dispatchers, + ) return BiometricUserWalletsListManager( keysRepository = keysRepository, diff --git a/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/BiometricUserWalletsListManager.kt b/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/BiometricUserWalletsListManager.kt index 4774cebee1..bd05d22cf7 100644 --- a/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/BiometricUserWalletsListManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/BiometricUserWalletsListManager.kt @@ -327,7 +327,7 @@ internal class BiometricUserWalletsListManager( } } - private fun findOrSetSelectedWallet( + private suspend fun findOrSetSelectedWallet( prevSelectedWalletId: UserWalletId?, prevSelectedWalletIndex: Int, userWallets: List, diff --git a/app/src/main/java/com/tangem/tap/domain/userWalletList/repository/SelectedUserWalletRepository.kt b/app/src/main/java/com/tangem/tap/domain/userWalletList/repository/SelectedUserWalletRepository.kt index 61c2a2eec4..5aab49f486 100644 --- a/app/src/main/java/com/tangem/tap/domain/userWalletList/repository/SelectedUserWalletRepository.kt +++ b/app/src/main/java/com/tangem/tap/domain/userWalletList/repository/SelectedUserWalletRepository.kt @@ -3,6 +3,6 @@ package com.tangem.tap.domain.userWalletList.repository import com.tangem.domain.wallets.models.UserWalletId internal interface SelectedUserWalletRepository { - fun get(): UserWalletId? - fun set(walletId: UserWalletId?) + suspend fun get(): UserWalletId? + suspend fun set(walletId: UserWalletId?) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/userWalletList/repository/implementation/DefaultSelectedUserWalletRepository.kt b/app/src/main/java/com/tangem/tap/domain/userWalletList/repository/implementation/DefaultSelectedUserWalletRepository.kt index e30816c98c..7a17c85cd9 100644 --- a/app/src/main/java/com/tangem/tap/domain/userWalletList/repository/implementation/DefaultSelectedUserWalletRepository.kt +++ b/app/src/main/java/com/tangem/tap/domain/userWalletList/repository/implementation/DefaultSelectedUserWalletRepository.kt @@ -3,17 +3,20 @@ package com.tangem.tap.domain.userWalletList.repository.implementation import com.tangem.common.services.secure.SecureStorage import com.tangem.domain.wallets.models.UserWalletId import com.tangem.tap.domain.userWalletList.repository.SelectedUserWalletRepository +import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import kotlinx.coroutines.withContext internal class DefaultSelectedUserWalletRepository( private val secureStorage: SecureStorage, + private val dispatchers: CoroutineDispatcherProvider, ) : SelectedUserWalletRepository { - override fun get(): UserWalletId? { - return secureStorage.get(StorageKey.SelectedWalletId.name) + override suspend fun get(): UserWalletId? = withContext(dispatchers.io) { + secureStorage.get(StorageKey.SelectedWalletId.name) ?.decodeToString(throwOnInvalidSequence = true) ?.let { UserWalletId(it) } } - override fun set(walletId: UserWalletId?) { + override suspend fun set(walletId: UserWalletId?) = withContext(dispatchers.io) { if (walletId == null) { secureStorage.delete(StorageKey.SelectedWalletId.name) } else { diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index e7fcfa9113..e8798f7c03 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -7,7 +7,7 @@ tangemBlockchainSdk = "releases-5.26.0-1123" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "releases-5.26.0-493" +tangemCardSdk = "releases-5.26.0-503" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem12" #tangemVico = "0.0.1" # Keep it! - used for local builds ^