From 33c331f5299b08bb86a19ae676b3e4abee0f36dd Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 11 Dec 2025 10:23:17 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/data/DefaultTangemPayStorage.kt | 39 +++++++++---------- .../local/preferences/PreferencesKeys.kt | 6 +++ 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/data/DefaultTangemPayStorage.kt b/app/src/main/java/com/tangem/tap/data/DefaultTangemPayStorage.kt index 9ea7cbeb84..4f7f4a0166 100644 --- a/app/src/main/java/com/tangem/tap/data/DefaultTangemPayStorage.kt +++ b/app/src/main/java/com/tangem/tap/data/DefaultTangemPayStorage.kt @@ -18,8 +18,7 @@ import kotlinx.coroutines.withContext import javax.inject.Inject import javax.inject.Singleton -private const val DEFAULT_KEY = "tangem_pay_default_key" -private const val ORDER_ID_KEY = "tangem_pay_order_id_key" +private const val AUTH_TOKENS_DEFAULT_KEY = "tangem_pay_default_key" private const val WITHDRAW_ORDER_ID_KEY = "tangem_pay_withdraw_order_id_key" @Singleton @@ -42,13 +41,15 @@ internal class DefaultTangemPayStorage @Inject constructor( override suspend fun storeCustomerWalletAddress(userWalletId: UserWalletId, customerWalletAddress: String) { withContext(dispatcherProvider.io) { - secureStorage.store(key = createCustomerAddressKey(userWalletId), value = customerWalletAddress) + appPreferencesStore + .store(PreferencesKeys.getTangemPayCustomerWalletAddressKey(userWalletId), customerWalletAddress) } } override suspend fun getCustomerWalletAddress(userWalletId: UserWalletId): String? { return withContext(dispatcherProvider.io) { - secureStorage.getAsString(createCustomerAddressKey(userWalletId)) + appPreferencesStore.getSyncOrNull(key = PreferencesKeys.getTangemPayCustomerWalletAddressKey(userWalletId)) + .takeIf { !it.isNullOrEmpty() } } } @@ -58,28 +59,28 @@ internal class DefaultTangemPayStorage @Inject constructor( secureStorage.store( json.encodeToByteArray(throwOnInvalidSequence = true), - createKey(customerWalletAddress), + createAuthTokensKey(customerWalletAddress), ) } override suspend fun getAuthTokens(customerWalletAddress: String): TangemPayAuthTokens? = withContext(dispatcherProvider.io) { - secureStorage.get(createKey(customerWalletAddress)) + secureStorage.get(createAuthTokensKey(customerWalletAddress)) ?.decodeToString(throwOnInvalidSequence = true) ?.let(tokensAdapter::fromJson) } override suspend fun storeOrderId(customerWalletAddress: String, orderId: String) { withContext(dispatcherProvider.io) { - secureStorage.store( - orderId.encodeToByteArray(throwOnInvalidSequence = true), - createOrderIdKey(customerWalletAddress), - ) + appPreferencesStore.store(PreferencesKeys.getTangemPayOrderIdKey(customerWalletAddress), orderId) } } - override suspend fun getOrderId(customerWalletAddress: String): String? = withContext(dispatcherProvider.io) { - secureStorage.get(createOrderIdKey(customerWalletAddress))?.decodeToString(throwOnInvalidSequence = true) + override suspend fun getOrderId(customerWalletAddress: String): String? { + return withContext(dispatcherProvider.io) { + appPreferencesStore.getSyncOrNull(key = PreferencesKeys.getTangemPayOrderIdKey(customerWalletAddress)) + .takeIf { !it.isNullOrEmpty() } + } } override suspend fun getAddToWalletDone(customerWalletAddress: String): Boolean { @@ -97,7 +98,7 @@ internal class DefaultTangemPayStorage @Inject constructor( } override suspend fun clearOrderId(customerWalletAddress: String) = withContext(dispatcherProvider.io) { - secureStorage.delete(createOrderIdKey(customerWalletAddress)) + appPreferencesStore.store(PreferencesKeys.getTangemPayOrderIdKey(customerWalletAddress), "") } override suspend fun storeCheckCustomerWalletResult(userWalletId: UserWalletId, isPaeraCustomer: Boolean) { @@ -110,9 +111,9 @@ internal class DefaultTangemPayStorage @Inject constructor( override suspend fun clearAll(userWalletId: UserWalletId, customerWalletAddress: String) = withContext(dispatcherProvider.io) { - secureStorage.delete(createCustomerAddressKey(userWalletId)) - secureStorage.delete(createKey(customerWalletAddress)) - secureStorage.delete(createOrderIdKey(customerWalletAddress)) + secureStorage.delete(createAuthTokensKey(customerWalletAddress)) + appPreferencesStore.store(PreferencesKeys.getTangemPayCustomerWalletAddressKey(userWalletId), "") + appPreferencesStore.store(PreferencesKeys.getTangemPayOrderIdKey(customerWalletAddress), "") appPreferencesStore.store(PreferencesKeys.getTangemPayAddToWalletKey(customerWalletAddress), false) } @@ -143,11 +144,7 @@ internal class DefaultTangemPayStorage @Inject constructor( } } - private fun createCustomerAddressKey(userWalletId: UserWalletId): String = userWalletId.stringValue - - private fun createKey(address: String): String = "${DEFAULT_KEY}_$address" - - private fun createOrderIdKey(address: String): String = "${ORDER_ID_KEY}_$address" + private fun createAuthTokensKey(address: String): String = "${AUTH_TOKENS_DEFAULT_KEY}_$address" private fun createWithdrawOrderIdKey(userWalletId: UserWalletId): String = "${WITHDRAW_ORDER_ID_KEY}_$userWalletId" } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt index 2c128557a6..ee0c984d38 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/PreferencesKeys.kt @@ -179,6 +179,12 @@ object PreferencesKeys { fun getTangemPayAddToWalletKey(customerWalletAddress: String) = booleanPreferencesKey("tangem_pay_add_to_wallet_done_key_$customerWalletAddress") + fun getTangemPayOrderIdKey(customerWalletAddress: String) = + stringPreferencesKey("tangem_pay_order_id_key_$customerWalletAddress") + + fun getTangemPayCustomerWalletAddressKey(userWalletId: UserWalletId) = + stringPreferencesKey("tangem_pay_customer_wallet_address_key_${userWalletId.stringValue}") + fun getTangemPayCheckCustomerByWalletId(userWalletId: UserWalletId) = booleanPreferencesKey("tangem_pay_check_customer_by_wallet_id_$userWalletId")