Updated on 2026-08-14

This commit is contained in:
Tangem 2025-09-10 11:12:01 +03:00
parent 44143fe652
commit 0184cf23e9
4 changed files with 26 additions and 35 deletions

View file

@ -51,7 +51,12 @@ internal class DefaultWcPairUseCase @AssistedInject constructor(
val pairResult = sdkDelegate.pair(uri)
.onLeft {
Timber.tag(WC_TAG).e(it, "Failed to call pair $pairRequest")
analytics.send(WcAnalyticEvents.PairFailed(it.code))
analytics.send(
WcAnalyticEvents.PairFailed(
errorCode = it.code,
errorMessage = it.message,
),
)
emit(WcPairState.Error(it))
}
.getOrNull() ?: return@flow
@ -73,7 +78,12 @@ internal class DefaultWcPairUseCase @AssistedInject constructor(
val proposalState = buildProposalState(sdkSessionProposal, sdkVerifyContext)
.onLeft {
analytics.send(WcAnalyticEvents.PairFailed(it.code))
analytics.send(
WcAnalyticEvents.PairFailed(
errorCode = it.code,
errorMessage = it.message,
),
)
emit(WcPairState.Error(it))
}
.getOrNull() ?: return@flow
@ -121,7 +131,12 @@ internal class DefaultWcPairUseCase @AssistedInject constructor(
)
newSession
}.onLeft {
analytics.send(WcAnalyticEvents.DAppConnectionFailed(it.code))
analytics.send(
WcAnalyticEvents.DAppConnectionFailed(
errorCode = it.code,
errorMessage = it.message,
),
)
sdkDelegate.rejectSession(sdkSessionProposal.proposerPublicKey)
Timber.tag(WC_TAG).e(it, "Failed to approve session ${sdkSessionProposal.name}")
}

View file

@ -50,6 +50,7 @@ internal class DefaultWcRequestUseCaseFactory @Inject constructor(
rawRequest = request,
errorCode = error.code().orEmpty(),
blockchain = blockchainName,
errorMessage = error.message,
)
analytics.send(event)
}

View file

@ -53,10 +53,12 @@ sealed class WcAnalyticEvents(
class PairFailed(
errorCode: String,
errorMessage: String,
) : WcAnalyticEvents(
event = "Session Failed",
params = mapOf(
AnalyticsParam.Key.ERROR_CODE to errorCode,
AnalyticsParam.Key.ERROR_DESCRIPTION to errorMessage,
),
)
@ -76,10 +78,12 @@ sealed class WcAnalyticEvents(
class DAppConnectionFailed(
errorCode: String,
errorMessage: String,
) : WcAnalyticEvents(
event = "dApp Connection Failed",
params = mapOf(
AnalyticsParam.Key.ERROR_CODE to errorCode,
AnalyticsParam.Key.ERROR_DESCRIPTION to errorMessage,
),
)
@ -163,6 +167,7 @@ sealed class WcAnalyticEvents(
rawRequest: WcSdkSessionRequest,
blockchain: String,
errorCode: String,
errorMessage: String,
) : WcAnalyticEvents(
event = "Signature Request Received with Failed",
params = mapOf(
@ -171,6 +176,7 @@ sealed class WcAnalyticEvents(
AnalyticsParam.Key.METHOD_NAME to rawRequest.request.method,
AnalyticsParam.Key.BLOCKCHAIN to blockchain,
AnalyticsParam.Key.ERROR_CODE to errorCode,
AnalyticsParam.Key.ERROR_DESCRIPTION to errorMessage,
),
)

View file

@ -121,11 +121,7 @@ private fun LazyListScope.addressItem(
) {
item(key = ADDRESS_FIELD_KEY) {
FooterContainer(
footer = if (isRedesignEnabled) {
buildHighlightedFooterText(networkName)
} else {
resourceReference(R.string.send_recipient_address_footer, wrappedList(networkName))
},
footer = resourceReference(R.string.send_recipient_address_footer, wrappedList(networkName)),
) {
InputRowRecipient(
value = address.value,
@ -150,33 +146,6 @@ private fun LazyListScope.addressItem(
}
}
@Composable
private fun buildHighlightedFooterText(networkName: String): TextReference {
return annotatedReference(
buildAnnotatedString {
val styledText = stringResourceSafe(
R.string.send_recipient_address_footer_highlighted_part,
networkName,
)
val styledColor = TangemTheme.colors.text.secondary
appendWithStyledPlaceholder(
template = stringResourceSafe(
R.string.send_recipient_address_footer_v2,
networkName,
),
placeholder = networkName,
) {
withStyle(SpanStyle(fontWeight = FontWeight.Medium)) {
appendColored(
text = styledText,
color = styledColor,
)
}
}
},
)
}
private fun LazyListScope.memoField(
memoField: DestinationTextFieldUM.RecipientMemo?,
onMemoChange: (String, Boolean) -> Unit,