Updated on 2026-08-14

This commit is contained in:
Tangem 2025-09-02 23:45:30 +05:00
parent 843a192a82
commit f5ff6a8453
6 changed files with 29 additions and 13 deletions

View file

@ -114,8 +114,9 @@ internal class DefaultWcPairUseCase @AssistedInject constructor(
sessionsManager.saveSession(newSession)
analytics.send(
WcAnalyticEvents.DAppConnected(
proposalState.dAppSession,
sessionForApprove,
sessionProposal = proposalState.dAppSession,
sessionForApprove = sessionForApprove,
securityStatus = proposalState.dAppSession.securityStatus,
),
)
newSession

View file

@ -75,6 +75,7 @@ internal class WcSignUseCaseDelegate<MiddleAction, SignModel>(
WcAnalyticEvents.SignatureRequestHandled(
rawRequest = context.rawSdkRequest,
network = context.network,
securityStatus = context.session.securityStatus,
)
},
)

View file

@ -5,6 +5,7 @@ import com.domain.blockaid.models.dapp.CheckDAppResult.*
import com.tangem.core.analytics.models.AnalyticsEvent
import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.domain.models.network.Network
import com.tangem.domain.walletconnect.WcAnalyticEvents.ButtonDisconnectAll.toAnalyticVerificationStatus
import com.tangem.domain.walletconnect.model.WcPairRequest
import com.tangem.domain.walletconnect.model.WcSession
import com.tangem.domain.walletconnect.model.WcSessionApprove
@ -42,11 +43,7 @@ sealed class WcAnalyticEvents(
event = "dApp Connection Requested",
params = mapOf(
NETWORKS to network.joinToString(",") { it.name },
DOMAIN_VERIFICATION to when (domainVerification) {
SAFE -> "Verified"
UNSAFE -> "Risky"
FAILED_TO_VERIFY -> "Unknown"
},
DOMAIN_VERIFICATION to domainVerification.toAnalyticVerificationStatus(),
),
)
@ -62,12 +59,14 @@ sealed class WcAnalyticEvents(
class DAppConnected(
sessionProposal: WcSessionProposal,
sessionForApprove: WcSessionApprove,
securityStatus: CheckDAppResult,
) : WcAnalyticEvents(
event = "dApp Connected",
params = mapOf(
AnalyticsParam.Key.DAPP_NAME to sessionProposal.dAppMetaData.name,
AnalyticsParam.Key.DAPP_URL to sessionProposal.dAppMetaData.url,
AnalyticsParam.Key.BLOCKCHAIN to sessionForApprove.network.joinToString(",") { it.name },
DOMAIN_VERIFICATION to securityStatus.toAnalyticVerificationStatus(),
),
)
@ -105,6 +104,7 @@ sealed class WcAnalyticEvents(
rawRequest: WcSdkSessionRequest,
network: Network,
emulationStatus: EmulationStatus?,
securityStatus: CheckDAppResult?,
) : WcAnalyticEvents(
event = "Signature Request Received",
params = mapOf(
@ -113,6 +113,7 @@ sealed class WcAnalyticEvents(
AnalyticsParam.Key.METHOD_NAME to rawRequest.request.method,
AnalyticsParam.Key.BLOCKCHAIN to network.name,
AnalyticsParam.Key.EMULATION_STATUS to emulationStatus?.status,
AnalyticsParam.Key.TYPE to securityStatus?.toAnalyticVerificationStatus(),
).mapNotNullValues { it.value },
) {
enum class EmulationStatus(val status: String) {
@ -125,6 +126,7 @@ sealed class WcAnalyticEvents(
class SignatureRequestHandled(
rawRequest: WcSdkSessionRequest,
network: Network,
securityStatus: CheckDAppResult,
) : WcAnalyticEvents(
event = "Signature Request Handled",
params = mapOf(
@ -132,6 +134,7 @@ sealed class WcAnalyticEvents(
AnalyticsParam.Key.DAPP_URL to rawRequest.dAppMetaData.url,
AnalyticsParam.Key.METHOD_NAME to rawRequest.request.method,
AnalyticsParam.Key.BLOCKCHAIN to network.name,
AnalyticsParam.Key.TYPE to securityStatus.toAnalyticVerificationStatus(),
),
)
@ -215,18 +218,26 @@ sealed class WcAnalyticEvents(
Source.Domain -> "Domain"
Source.SmartContract -> "Smart Contract"
},
AnalyticsParam.Key.TYPE to when (securityStatus) {
SAFE -> "Verified"
UNSAFE -> "Risky"
FAILED_TO_VERIFY -> "Unknown"
},
AnalyticsParam.Key.TYPE to securityStatus.toAnalyticVerificationStatus(),
),
) {
enum class Source { Domain, SmartContract }
}
enum class DAppVerificationStatus(val status: String) {
Verified("Verified"),
Risky("Risky"),
Unknown("Unknown"),
}
fun CheckDAppResult.toAnalyticVerificationStatus(): String = when (this) {
SAFE -> DAppVerificationStatus.Verified
UNSAFE -> DAppVerificationStatus.Risky
FAILED_TO_VERIFY -> DAppVerificationStatus.Unknown
}.status
companion object {
const val NETWORKS = "Networks"
const val DOMAIN_VERIFICATION = "Domain Verification"
const val WC_CATEGORY_NAME = "Wallet Connect"

View file

@ -132,6 +132,7 @@ internal class WcAddNetworkModel @Inject constructor(
rawRequest = useCase.rawSdkRequest,
network = useCase.network,
emulationStatus = null,
securityStatus = null,
),
)

View file

@ -408,6 +408,7 @@ internal class WcSendTransactionModel @Inject constructor(
rawRequest = useCase.rawSdkRequest,
network = useCase.network,
emulationStatus = emulationStatus,
securityStatus = useCase.session.securityStatus,
),
)

View file

@ -158,6 +158,7 @@ internal class WcSignTransactionModel @Inject constructor(
rawRequest = useCase.rawSdkRequest,
network = useCase.network,
emulationStatus = null,
securityStatus = null,
),
)