Updated on 2026-08-14
This commit is contained in:
parent
4ad958be89
commit
e0fb0e3587
7 changed files with 118 additions and 3 deletions
|
|
@ -20,13 +20,19 @@ import com.tangem.blockchain.common.transaction.Fee
|
|||
import com.tangem.blockchain.nft.models.NFTAsset
|
||||
import com.tangem.blockchainsdk.utils.fromNetworkId
|
||||
import com.tangem.blockchainsdk.utils.toBlockchain
|
||||
import com.tangem.datasource.api.common.response.fold
|
||||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||
import com.tangem.datasource.api.tangemTech.models.OperationType
|
||||
import com.tangem.datasource.api.tangemTech.models.TransactionEventBody
|
||||
import com.tangem.datasource.local.walletmanager.WalletManagersStore
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
import com.tangem.domain.transaction.TransactionRepository
|
||||
import com.tangem.domain.transaction.models.EventTransactionTypeDto
|
||||
import com.tangem.domain.walletmanager.WalletManagersFacade
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.coroutines.runCatching
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import java.math.BigDecimal
|
||||
|
|
@ -34,6 +40,7 @@ import java.math.BigInteger
|
|||
|
||||
@Suppress("LargeClass")
|
||||
internal class DefaultTransactionRepository(
|
||||
private val tangemTechApi: TangemTechApi,
|
||||
private val walletManagersFacade: WalletManagersFacade,
|
||||
private val walletManagersStore: WalletManagersStore,
|
||||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
|
|
@ -415,6 +422,31 @@ internal class DefaultTransactionRepository(
|
|||
preparer.prepareAndSignMultiple(transactionData, signer)
|
||||
}
|
||||
|
||||
override suspend fun sendTransactionHash(hash: String, transactionType: EventTransactionTypeDto) {
|
||||
runCatching(dispatchers.io) {
|
||||
val operationType = when (transactionType) {
|
||||
EventTransactionTypeDto.DEPOSIT -> OperationType.YIELD_DEPOSIT
|
||||
EventTransactionTypeDto.WITHDRAW -> OperationType.YIELD_WITHDRAW
|
||||
EventTransactionTypeDto.SEND -> OperationType.YIELD_SEND
|
||||
}
|
||||
val body = TransactionEventBody(
|
||||
operationType = operationType,
|
||||
transactionId = hash,
|
||||
)
|
||||
val response = tangemTechApi.transactionEvents(body)
|
||||
response.fold(
|
||||
onSuccess = {
|
||||
Timber.d("Successfully sent yield supply transaction hash: $hash")
|
||||
},
|
||||
onError = { error ->
|
||||
Timber.e(error, "Failed to send yield supply transaction hash: $hash")
|
||||
},
|
||||
)
|
||||
}.onFailure { error ->
|
||||
Timber.e(error, "Failed to send yield supply transaction hash: $hash")
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun getPreparer(network: Network, userWalletId: UserWalletId): TransactionPreparer {
|
||||
val blockchain = network.toBlockchain()
|
||||
val walletManager = walletManagersFacade.getOrCreateWalletManager(
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.tangem.data.transaction.DefaultFeeRepository
|
|||
import com.tangem.data.transaction.DefaultTransactionRepository
|
||||
import com.tangem.data.transaction.DefaultWalletAddressServiceRepository
|
||||
import com.tangem.data.transaction.error.DefaultFeeErrorResolver
|
||||
import com.tangem.datasource.api.tangemTech.TangemTechApi
|
||||
import com.tangem.datasource.local.walletmanager.WalletManagersStore
|
||||
import com.tangem.domain.demo.models.DemoConfig
|
||||
import com.tangem.domain.transaction.FeeRepository
|
||||
|
|
@ -25,11 +26,13 @@ internal object TransactionDataModule {
|
|||
@Provides
|
||||
@Singleton
|
||||
fun providesTransactionRepository(
|
||||
tangemTechApi: TangemTechApi,
|
||||
walletManagersFacade: WalletManagersFacade,
|
||||
walletManagersStore: WalletManagersStore,
|
||||
dispatchers: CoroutineDispatcherProvider,
|
||||
): TransactionRepository {
|
||||
return DefaultTransactionRepository(
|
||||
tangemTechApi = tangemTechApi,
|
||||
walletManagersFacade = walletManagersFacade,
|
||||
walletManagersStore = walletManagersStore,
|
||||
dispatchers = dispatchers,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue