diff --git a/app/src/main/java/com/tangem/tap/domain/TangemSigner.kt b/app/src/main/java/com/tangem/tap/domain/TangemSigner.kt index 1979b1df8a..d9e3f1aa97 100644 --- a/app/src/main/java/com/tangem/tap/domain/TangemSigner.kt +++ b/app/src/main/java/com/tangem/tap/domain/TangemSigner.kt @@ -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, - publicKey: Wallet.PublicKey + publicKey: Wallet.PublicKey, ): CompletionResult> { - 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 { val result = sign( hashes = listOf(hash), - publicKey = publicKey + publicKey = publicKey, ) return when (result) { diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt index 9f042170b7..ada2f49f4d 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt @@ -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 {