Updated on 2026-08-14

This commit is contained in:
Tangem 2025-08-20 15:57:02 +03:00
parent be07bf138c
commit a08145498c
4 changed files with 25 additions and 10 deletions

View file

@ -13,9 +13,6 @@ import com.tangem.common.CompletionResult
import com.tangem.common.extensions.hexToBytes
import com.tangem.common.extensions.toDecompressedPublicKey
import com.tangem.common.extensions.toHexString
import com.tangem.core.analytics.Analytics
import com.tangem.core.analytics.models.Basic
import com.tangem.core.analytics.models.Basic.TransactionSent.MemoType
import com.tangem.data.walletconnect.network.ethereum.LegacySdkHelper
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.operations.sign.SignHashCommand
@ -42,7 +39,6 @@ import org.json.JSONArray
import org.json.JSONObject
import timber.log.Timber
import java.math.BigDecimal
import com.tangem.core.analytics.models.AnalyticsParam as CoreAnalyticsParam
@Suppress("LargeClass")
class WalletConnectSdkHelper {
@ -227,8 +223,6 @@ class WalletConnectSdkHelper {
)
return when (result) {
is Result.Success -> {
val sentFrom = CoreAnalyticsParam.TxSentFrom.WalletConnect
Analytics.send(Basic.TransactionSent(sentFrom = sentFrom, memoType = MemoType.Null))
val hash = result.data.hash
if (hash.startsWith(HEX_PREFIX)) {
hash
@ -394,7 +388,8 @@ class WalletConnectSdkHelper {
signature = signedHash,
hash = hashToSign,
publicKey = wallet.publicKey.blockchainKey.toDecompressedPublicKey(),
).asRSVLegacyEVM().toHexString().formatHex().lowercase() // use lowercase because some dapps cant handle UPPERCASE
).asRSVLegacyEVM().toHexString().formatHex()
.lowercase() // use lowercase because some dapps cant handle UPPERCASE
}
}
is CompletionResult.Failure -> {

View file

@ -112,7 +112,12 @@ sealed class AnalyticsParam {
val permissionType: String,
) : TxSentFrom("Approve"), TxData
data object WalletConnect : TxSentFrom("WalletConnect")
data class WalletConnect(
override val blockchain: String,
override val token: String,
override val feeType: FeeType?,
) : TxSentFrom("WalletConnect"), TxData
data object Sell : TxSentFrom("Sell")
data class NFT(
@ -125,7 +130,7 @@ sealed class AnalyticsParam {
sealed interface TxData {
val blockchain: String
val token: String
val feeType: FeeType
val feeType: FeeType?
}
sealed class FeeType(val value: String) {

View file

@ -55,7 +55,9 @@ sealed class Basic(
if (sentFrom is AnalyticsParam.TxData) {
this[AnalyticsParam.BLOCKCHAIN] = sentFrom.blockchain
this[AnalyticsParam.TOKEN_PARAM] = sentFrom.token
this[AnalyticsParam.FEE_TYPE] = sentFrom.feeType.value
sentFrom.feeType?.value?.let {
this[AnalyticsParam.FEE_TYPE] = it
}
}
if (sentFrom is AnalyticsParam.TxSentFrom.Approve) {
this[AnalyticsParam.PERMISSION_TYPE] = sentFrom.permissionType

View file

@ -7,6 +7,9 @@ import com.tangem.blockchain.common.TransactionData
import com.tangem.blockchain.common.transaction.Fee
import com.tangem.blockchain.extensions.formatHex
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.analytics.models.AnalyticsParam.TxSentFrom
import com.tangem.core.analytics.models.Basic
import com.tangem.core.analytics.models.Basic.TransactionSent.MemoType
import com.tangem.data.walletconnect.respond.WcRespondService
import com.tangem.data.walletconnect.sign.BaseWcSignUseCase
import com.tangem.data.walletconnect.sign.SignCollector
@ -86,6 +89,16 @@ internal class WcEthSendTransactionUseCase @AssistedInject constructor(
emit(state.toResult(parseSendError(error).left()))
}
.getOrNull() ?: return
analytics.send(
Basic.TransactionSent(
sentFrom = TxSentFrom.WalletConnect(
blockchain = network.name,
token = network.currencySymbol,
feeType = null,
),
memoType = MemoType.Null,
),
)
val respondResult = respondService.respond(rawSdkRequest, hash.formatHex())
emit(state.toResult(respondResult))
}