Updated on 2026-08-14
This commit is contained in:
parent
15e7df8d41
commit
4882daf1a2
14 changed files with 79 additions and 33 deletions
|
|
@ -91,6 +91,12 @@ internal class DefaultWcRoutingComponent @AssistedInject constructor(
|
|||
alertType = AlertsComponent.AlertType.UnsupportedMethod { model.innerRouter.pop() },
|
||||
),
|
||||
)
|
||||
is WcInnerRoute.WcDappDisconnected -> AlertsComponent(
|
||||
childContext,
|
||||
AlertsComponent.Params(
|
||||
alertType = AlertsComponent.AlertType.WcDisconnected { model.innerRouter.pop() },
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,5 +26,8 @@ internal sealed interface WcInnerRoute : Route {
|
|||
data class Pair(val request: WcPairRequest) : WcInnerRoute
|
||||
|
||||
@Serializable
|
||||
data class UnsupportedMethodAlert(override val rawRequest: WcSdkSessionRequest) : Method
|
||||
data object UnsupportedMethodAlert : WcInnerRoute
|
||||
|
||||
@Serializable
|
||||
data object WcDappDisconnected : WcInnerRoute
|
||||
}
|
||||
|
|
@ -57,7 +57,7 @@ internal class WcRoutingModel @Inject constructor(
|
|||
WcSolanaMethodName.SendAllTransaction,
|
||||
-> WcInnerRoute.Send(rawRequest)
|
||||
is WcMethodName.Unsupported,
|
||||
-> WcInnerRoute.UnsupportedMethodAlert(rawRequest)
|
||||
-> WcInnerRoute.UnsupportedMethodAlert
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package com.tangem.features.walletconnect.transaction.converter
|
||||
|
||||
import com.tangem.domain.walletconnect.model.HandleMethodError
|
||||
import com.tangem.features.walletconnect.connections.routing.WcInnerRoute
|
||||
import com.tangem.utils.converter.Converter
|
||||
|
||||
internal object WcHandleMethodErrorConverter :
|
||||
Converter<HandleMethodError, WcInnerRoute> {
|
||||
|
||||
override fun convert(value: HandleMethodError): WcInnerRoute = when (value) {
|
||||
is HandleMethodError.Unsupported,
|
||||
is HandleMethodError.UnknownError,
|
||||
-> WcInnerRoute.UnsupportedMethodAlert
|
||||
HandleMethodError.UnknownSession -> WcInnerRoute.WcDappDisconnected
|
||||
}
|
||||
}
|
||||
|
|
@ -10,9 +10,9 @@ import com.tangem.core.decompose.navigation.Router
|
|||
import com.tangem.core.ui.clipboard.ClipboardManager
|
||||
import com.tangem.domain.walletconnect.WcRequestUseCaseFactory
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcAddNetworkUseCase
|
||||
import com.tangem.features.walletconnect.connections.routing.WcInnerRoute
|
||||
import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams
|
||||
import com.tangem.features.walletconnect.transaction.converter.WcAddEthereumChainUMConverter
|
||||
import com.tangem.features.walletconnect.transaction.converter.WcHandleMethodErrorConverter
|
||||
import com.tangem.features.walletconnect.transaction.entity.chain.WcAddEthereumChainUM
|
||||
import com.tangem.features.walletconnect.transaction.entity.common.WcCommonTransactionModel
|
||||
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionActionsUM
|
||||
|
|
@ -45,7 +45,7 @@ internal class WcAddNetworkModel @Inject constructor(
|
|||
init {
|
||||
modelScope.launch {
|
||||
val useCase: WcAddNetworkUseCase = useCaseFactory.createUseCase<WcAddNetworkUseCase>(params.rawRequest)
|
||||
.onLeft { router.push(WcInnerRoute.UnsupportedMethodAlert(params.rawRequest)) }
|
||||
.onLeft { router.push(WcHandleMethodErrorConverter.convert(it)) }
|
||||
.getOrNull() ?: return@launch
|
||||
_uiState.emit(
|
||||
wcAddEthereumChainUMConverter.convert(
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ import com.tangem.features.send.v2.api.params.FeeSelectorParams
|
|||
import com.tangem.features.walletconnect.connections.routing.WcInnerRoute
|
||||
import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams
|
||||
import com.tangem.features.walletconnect.transaction.converter.WcCommonTransactionUMConverter
|
||||
import com.tangem.features.walletconnect.transaction.converter.WcHandleMethodErrorConverter
|
||||
import com.tangem.features.walletconnect.transaction.entity.blockaid.WcSendReceiveTransactionCheckResultsUM
|
||||
import com.tangem.features.walletconnect.transaction.entity.common.WcCommonTransactionModel
|
||||
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionActionsUM
|
||||
|
|
@ -84,9 +85,9 @@ internal class WcSendTransactionModel @Inject constructor(
|
|||
init {
|
||||
@Suppress("UnusedPrivateMember")
|
||||
modelScope.launch {
|
||||
val unknownMethodRunnable = { router.push(WcInnerRoute.UnsupportedMethodAlert(params.rawRequest)) }
|
||||
val unknownMethodRunnable = { router.push(WcInnerRoute.UnsupportedMethodAlert) }
|
||||
val useCase = useCaseFactory.createUseCase<WcSignUseCase<*>>(params.rawRequest)
|
||||
.onLeft { unknownMethodRunnable() }
|
||||
.onLeft { router.push(WcHandleMethodErrorConverter.convert(it)) }
|
||||
.getOrNull() ?: return@launch
|
||||
when (useCase) {
|
||||
is WcListTransactionUseCase,
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@ import com.tangem.domain.walletconnect.usecase.method.WcMessageSignUseCase
|
|||
import com.tangem.domain.walletconnect.usecase.method.WcSignState
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcSignStep
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcSignUseCase
|
||||
import com.tangem.features.walletconnect.connections.routing.WcInnerRoute
|
||||
import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams
|
||||
import com.tangem.features.walletconnect.transaction.converter.WcCommonTransactionUMConverter
|
||||
import com.tangem.features.walletconnect.transaction.converter.WcHandleMethodErrorConverter
|
||||
import com.tangem.features.walletconnect.transaction.entity.common.WcCommonTransactionModel
|
||||
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionActionsUM
|
||||
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionUM
|
||||
|
|
@ -50,7 +50,7 @@ internal class WcSignTransactionModel @Inject constructor(
|
|||
init {
|
||||
modelScope.launch {
|
||||
val useCase = useCaseFactory.createUseCase<WcMessageSignUseCase>(params.rawRequest)
|
||||
.onLeft { router.push(WcInnerRoute.UnsupportedMethodAlert(params.rawRequest)) }
|
||||
.onLeft { router.push(WcHandleMethodErrorConverter.convert(it)) }
|
||||
.getOrNull() ?: return@launch
|
||||
useCase.invoke()
|
||||
.onEach { signState ->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue