Updated on 2026-08-14

This commit is contained in:
Tangem 2023-02-20 18:49:22 +03:00
parent 2d8646ac6b
commit af8aa449f6
2 changed files with 16 additions and 12 deletions

View file

@ -7,8 +7,8 @@ import com.tangem.blockchain.common.Wallet
import com.tangem.common.CompletionResult
import com.tangem.domain.common.CardDTO
import com.tangem.tap.domain.tasks.SignHashesTask
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
class TangemSigner(
private val card: CardDTO,
@ -20,9 +20,9 @@ class TangemSigner(
override suspend fun sign(
hashes: List<ByteArray>,
publicKey: Wallet.PublicKey
publicKey: Wallet.PublicKey,
): CompletionResult<List<ByteArray>> {
return suspendCoroutine { continuation ->
return suspendCancellableCoroutine { continuation ->
val cardId = if (card.backupStatus?.isActive == true) null else card.cardId
val task = SignHashesTask(hashes, publicKey)
@ -37,13 +37,17 @@ class TangemSigner(
signerCallback(
TangemSignerResponse(
result.data.totalSignedHashes,
result.data.remainingSignatures
)
result.data.remainingSignatures,
),
)
continuation.resume(CompletionResult.Success(result.data.signatures))
if (continuation.isActive) {
continuation.resume(CompletionResult.Success(result.data.signatures))
}
}
is CompletionResult.Failure ->
continuation.resume(CompletionResult.Failure(result.error))
if (continuation.isActive) {
continuation.resume(CompletionResult.Failure(result.error))
}
}
}
}
@ -51,11 +55,11 @@ class TangemSigner(
override suspend fun sign(
hash: ByteArray,
publicKey: Wallet.PublicKey
publicKey: Wallet.PublicKey,
): CompletionResult<ByteArray> {
val result = sign(
hashes = listOf(hash),
publicKey = publicKey
publicKey = publicKey,
)
return when (result) {

View file

@ -618,9 +618,9 @@ internal class SwapInteractorImpl @Inject constructor(
toTokenAmount: BigDecimal,
toRate: Double,
): Float {
val toTokenFiatValue = toTokenAmount.multiply(toRate.toBigDecimal()).setScale(2, RoundingMode.HALF_UP)
val fromTokenFiatValue = fromTokenAmount.multiply(fromRate.toBigDecimal()).setScale(2, RoundingMode.HALF_UP)
return (BigDecimal.ONE - toTokenFiatValue / fromTokenFiatValue).toFloat()
val toTokenFiatValue = toTokenAmount.multiply(toRate.toBigDecimal())
val fromTokenFiatValue = fromTokenAmount.multiply(fromRate.toBigDecimal())
return (BigDecimal.ONE - toTokenFiatValue.divide(fromTokenFiatValue, 2, RoundingMode.HALF_UP)).toFloat()
}
companion object {