diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt index 0ad54408ee..522abbb6e0 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt @@ -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 diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/sign/WcSignUseCaseDelegate.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/sign/WcSignUseCaseDelegate.kt index 73dc766bbb..814e12788d 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/sign/WcSignUseCaseDelegate.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/sign/WcSignUseCaseDelegate.kt @@ -75,6 +75,7 @@ internal class WcSignUseCaseDelegate( WcAnalyticEvents.SignatureRequestHandled( rawRequest = context.rawSdkRequest, network = context.network, + securityStatus = context.session.securityStatus, ) }, ) diff --git a/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt b/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt index 8b6bd34eae..064f349412 100644 --- a/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt +++ b/domain/wallet-connect/src/main/kotlin/com/tangem/domain/walletconnect/WcAnalyticEvents.kt @@ -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" diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcAddNetworkModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcAddNetworkModel.kt index ab284df37a..e15ce42f95 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcAddNetworkModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcAddNetworkModel.kt @@ -132,6 +132,7 @@ internal class WcAddNetworkModel @Inject constructor( rawRequest = useCase.rawSdkRequest, network = useCase.network, emulationStatus = null, + securityStatus = null, ), ) diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt index d3f10b517e..ebda2cb59a 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSendTransactionModel.kt @@ -408,6 +408,7 @@ internal class WcSendTransactionModel @Inject constructor( rawRequest = useCase.rawSdkRequest, network = useCase.network, emulationStatus = emulationStatus, + securityStatus = useCase.session.securityStatus, ), ) diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSignTransactionModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSignTransactionModel.kt index 9f3a686357..28b294640d 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSignTransactionModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/model/WcSignTransactionModel.kt @@ -158,6 +158,7 @@ internal class WcSignTransactionModel @Inject constructor( rawRequest = useCase.rawSdkRequest, network = useCase.network, emulationStatus = null, + securityStatus = null, ), )