Updated on 2026-08-14

This commit is contained in:
Tangem 2026-01-27 17:37:45 +03:00
parent 30b52bc194
commit fe21d8801c
7 changed files with 25 additions and 8 deletions

View file

@ -32,6 +32,7 @@ class DefaultGaslessTransactionRepository(
private val supportedTokensState = MutableStateFlow<Map<Network.ID, Set<CryptoCurrency>>>(hashMapOf())
private val allFeeRecipientAddress = mutableSetOf<String>()
private val addressesMutex = Mutex()
private var feeReceiverAddress: String? = null
private val gaslessTransactionRequestBuilder = GaslessTransactionRequestBuilder()
private val signedTransactionResultConverter = GaslessSignedTransactionResultConverter()
@ -77,11 +78,18 @@ class DefaultGaslessTransactionRepository(
override suspend fun getTokenFeeReceiverAddress(): String {
return withContext(coroutineDispatcherProvider.io) {
val response = gaslessTxServiceApi.getFeeRecipient().getOrThrow()
if (response.isSuccess) {
response.result.address
} else {
error("Gasless service returned unsuccessful response")
addressesMutex.withLock {
val feeReceiver = feeReceiverAddress
if (feeReceiver != null) {
return@withContext feeReceiver
}
val response = gaslessTxServiceApi.getFeeRecipient().getOrThrow()
if (response.isSuccess) {
feeReceiverAddress = response.result.address
response.result.address
} else {
error("Gasless service returned unsuccessful response")
}
}
}
}

View file

@ -39,6 +39,7 @@ class GaslessTxDataToGaslessRequestConverter : Converter<GaslessTransactionData,
coinPriceInToken = fee.coinPriceInToken.toString(),
feeTransferGasLimit = fee.feeTransferGasLimit.toString(),
baseGas = fee.baseGas.toString(),
feeReceiver = fee.feeReceiver,
)
}
}