Updated on 2026-08-14
This commit is contained in:
parent
5c5c31dfc0
commit
3e4e7d8da0
17 changed files with 120 additions and 34 deletions
|
|
@ -9,6 +9,7 @@ import com.tangem.domain.walletconnect.model.WcRequestError
|
|||
import com.tangem.domain.walletconnect.model.WcSession
|
||||
import com.tangem.domain.walletconnect.model.sdkcopy.WcSdkSessionRequest
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcAddNetworkUseCase
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcNetworkDerivationState
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
|
|
@ -25,8 +26,10 @@ internal class WcEthAddNetworkUseCase @AssistedInject constructor(
|
|||
get() = context.rawSdkRequest
|
||||
override val network: Network
|
||||
get() = context.network
|
||||
override val walletAddress: String
|
||||
get() = context.accountAddress
|
||||
override val derivationState: WcNetworkDerivationState = when {
|
||||
context.networkDerivationsCount > 1 -> WcNetworkDerivationState.Multiple(walletAddress = context.accountAddress)
|
||||
else -> WcNetworkDerivationState.Single
|
||||
}
|
||||
|
||||
override suspend fun approve(): Either<WcRequestError, String> {
|
||||
return respondService.respond(rawSdkRequest, "")
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ internal class WcEthNetwork(
|
|||
rawSdkRequest = request,
|
||||
network = walletNetwork,
|
||||
accountAddress = accountAddress,
|
||||
networkDerivationsCount = networksConverter.filterWalletNetworkForRequest(chainId, wallet).size,
|
||||
)
|
||||
return when (method) {
|
||||
is WcEthMethod.MessageSign -> factories.messageSign.create(context, method)
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ internal class WcSolanaNetwork(
|
|||
rawSdkRequest = request,
|
||||
network = walletNetwork,
|
||||
accountAddress = accountAddress,
|
||||
networkDerivationsCount = networksConverter.filterWalletNetworkForRequest(chainId, wallet).size,
|
||||
)
|
||||
return when (method) {
|
||||
is WcSolanaMethod.SignMessage -> factories.messageSign.create(context, method)
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import com.tangem.domain.walletconnect.WcAnalyticEvents
|
|||
import com.tangem.domain.walletconnect.model.WcSession
|
||||
import com.tangem.domain.walletconnect.model.sdkcopy.WcSdkSessionRequest
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcMethodUseCase
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcNetworkDerivationState
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcSignState
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcSignUseCase
|
||||
import kotlinx.coroutines.flow.FlowCollector
|
||||
|
|
@ -23,8 +24,12 @@ internal abstract class BaseWcSignUseCase<MiddleAction, SignModel> :
|
|||
abstract val context: WcMethodUseCaseContext
|
||||
override val network: Network get() = context.network
|
||||
override val session: WcSession get() = context.session
|
||||
override val walletAddress: String get() = context.accountAddress
|
||||
override val rawSdkRequest: WcSdkSessionRequest get() = context.rawSdkRequest
|
||||
override val derivationState: WcNetworkDerivationState
|
||||
get() = when {
|
||||
context.networkDerivationsCount > 1 -> WcNetworkDerivationState.Multiple(context.accountAddress)
|
||||
else -> WcNetworkDerivationState.Single
|
||||
}
|
||||
|
||||
protected val delegate by lazy {
|
||||
WcSignUseCaseDelegate(
|
||||
|
|
@ -73,6 +78,7 @@ internal class WcMethodUseCaseContext(
|
|||
val rawSdkRequest: WcSdkSessionRequest,
|
||||
val network: Network,
|
||||
val accountAddress: String,
|
||||
val networkDerivationsCount: Int,
|
||||
)
|
||||
|
||||
internal typealias SignCollector<SignModel> = FlowCollector<WcSignState<SignModel>>
|
||||
|
|
@ -47,6 +47,7 @@ internal class WcSignUseCaseDelegateTest {
|
|||
network = MockCryptoCurrencyFactory().ethereum.network,
|
||||
accountAddress = "",
|
||||
rawSdkRequest = rawRequestMock,
|
||||
networkDerivationsCount = 1,
|
||||
session = WcSession(
|
||||
wallet = MockUserWalletFactory.create(),
|
||||
networks = setOf(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue