Updated on 2026-08-14
This commit is contained in:
parent
9e932a5bee
commit
a667fcc955
10 changed files with 178 additions and 27 deletions
|
|
@ -67,6 +67,7 @@ internal object BlockAidMapper {
|
|||
return when {
|
||||
from.assetsDiffs.isEmpty() && from.exposures.isNotEmpty() -> mapApproveTransaction(from.exposures)
|
||||
from.assetsDiffs.isNotEmpty() && from.exposures.isEmpty() -> mapSendReceiveTransaction(from.assetsDiffs)
|
||||
!from.traces.isNullOrEmpty() -> mapNftSendReceiveTransaction(from.traces)
|
||||
else -> SimulationResult.FailedToSimulate
|
||||
}
|
||||
}
|
||||
|
|
@ -107,13 +108,13 @@ internal object BlockAidMapper {
|
|||
symbol = diff.asset.symbol,
|
||||
)
|
||||
diff.outTransfer.orEmpty().forEach { transfer ->
|
||||
transfer.value.toBigDecimalOrNull()?.let { amount ->
|
||||
sendInfo.add(AmountInfo(amount = amount, token = token))
|
||||
transfer.value?.toBigDecimalOrNull()?.let { amount ->
|
||||
sendInfo.add(AmountInfo.FungibleTokens(amount = amount, token = token))
|
||||
}
|
||||
}
|
||||
diff.inTransfer.orEmpty().forEach { transfer ->
|
||||
transfer.value.toBigDecimalOrNull()?.let { amount ->
|
||||
receiveInfo.add(AmountInfo(amount = amount, token = token))
|
||||
transfer.value?.toBigDecimalOrNull()?.let { amount ->
|
||||
receiveInfo.add(AmountInfo.FungibleTokens(amount = amount, token = token))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -124,4 +125,16 @@ internal object BlockAidMapper {
|
|||
SimulationResult.FailedToSimulate
|
||||
}
|
||||
}
|
||||
|
||||
private fun mapNftSendReceiveTransaction(traces: List<Trace>?): SimulationResult {
|
||||
val sendInfo = traces?.map {
|
||||
AmountInfo.NonFungibleTokens(name = "${it.asset.name} #${it.exposed.tokenId}", logoUrl = it.exposed.logoUrl)
|
||||
}
|
||||
|
||||
return if (!sendInfo.isNullOrEmpty()) {
|
||||
SimulationResult.Success(SimulationData.SendAndReceive(send = sendInfo, receive = listOf()))
|
||||
} else {
|
||||
SimulationResult.FailedToSimulate
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.tangem.data.blockaid
|
|||
import com.domain.blockaid.models.dapp.CheckDAppResult
|
||||
import com.domain.blockaid.models.transaction.SimulationResult
|
||||
import com.domain.blockaid.models.transaction.ValidationResult
|
||||
import com.domain.blockaid.models.transaction.simultation.AmountInfo
|
||||
import com.domain.blockaid.models.transaction.simultation.SimulationData
|
||||
import com.google.common.truth.Truth
|
||||
import com.tangem.datasource.api.common.blockaid.models.response.*
|
||||
|
|
@ -48,7 +49,11 @@ class BlockAidMapperTest {
|
|||
validation = ValidationResponse(status = "Success", resultType = "Benign"),
|
||||
simulation = SimulationResponse(
|
||||
status = "Success",
|
||||
accountSummary = AccountSummaryResponse(assetsDiffs = emptyList(), exposures = listOf(exposure)),
|
||||
accountSummary = AccountSummaryResponse(
|
||||
assetsDiffs = emptyList(),
|
||||
exposures = listOf(exposure),
|
||||
traces = null,
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
|
|
@ -77,7 +82,11 @@ class BlockAidMapperTest {
|
|||
validation = ValidationResponse(status = "Success", resultType = "Benign"),
|
||||
simulation = SimulationResponse(
|
||||
status = "Success",
|
||||
accountSummary = AccountSummaryResponse(exposures = emptyList(), assetsDiffs = listOf(assetDiff)),
|
||||
accountSummary = AccountSummaryResponse(
|
||||
exposures = emptyList(),
|
||||
assetsDiffs = listOf(assetDiff),
|
||||
traces = null,
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
|
|
@ -89,8 +98,8 @@ class BlockAidMapperTest {
|
|||
|
||||
val data = simulation?.data as? SimulationData.SendAndReceive
|
||||
Truth.assertThat(data).isNotNull()
|
||||
Truth.assertThat(data?.send?.first()?.amount).isEqualTo(BigDecimal("1.5"))
|
||||
Truth.assertThat(data?.receive?.first()?.amount).isEqualTo(BigDecimal("2.0"))
|
||||
Truth.assertThat((data?.send?.first() as? AmountInfo.FungibleTokens)?.amount).isEqualTo(BigDecimal("1.5"))
|
||||
Truth.assertThat((data?.receive?.first() as? AmountInfo.FungibleTokens)?.amount).isEqualTo(BigDecimal("2.0"))
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -99,7 +108,7 @@ class BlockAidMapperTest {
|
|||
validation = ValidationResponse(status = "Error", resultType = "Benign"),
|
||||
simulation = SimulationResponse(
|
||||
status = "Success",
|
||||
accountSummary = AccountSummaryResponse(emptyList(), emptyList()),
|
||||
accountSummary = AccountSummaryResponse(emptyList(), emptyList(), null),
|
||||
),
|
||||
)
|
||||
|
||||
|
|
@ -114,7 +123,7 @@ class BlockAidMapperTest {
|
|||
validation = ValidationResponse(status = "Success", resultType = "Phishing"),
|
||||
simulation = SimulationResponse(
|
||||
status = "Success",
|
||||
accountSummary = AccountSummaryResponse(emptyList(), emptyList()),
|
||||
accountSummary = AccountSummaryResponse(emptyList(), emptyList(), null),
|
||||
),
|
||||
)
|
||||
|
||||
|
|
@ -128,7 +137,7 @@ class BlockAidMapperTest {
|
|||
validation = ValidationResponse(status = "Success", resultType = "Benign"),
|
||||
simulation = SimulationResponse(
|
||||
status = "Error",
|
||||
accountSummary = AccountSummaryResponse(emptyList(), emptyList()),
|
||||
accountSummary = AccountSummaryResponse(emptyList(), emptyList(), null),
|
||||
),
|
||||
)
|
||||
|
||||
|
|
@ -145,6 +154,7 @@ class BlockAidMapperTest {
|
|||
accountSummary = AccountSummaryResponse(
|
||||
assetsDiffs = emptyList(),
|
||||
exposures = emptyList(),
|
||||
traces = null,
|
||||
),
|
||||
),
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue