Updated on 2026-08-14
This commit is contained in:
parent
b352bb6235
commit
b699b723a8
13 changed files with 99 additions and 69 deletions
|
|
@ -12,12 +12,14 @@ import com.tangem.data.walletconnect.sign.WcMethodUseCaseContext
|
|||
import com.tangem.data.walletconnect.utils.BlockAidVerificationDelegate
|
||||
import com.tangem.domain.transaction.usecase.PrepareForSendUseCase
|
||||
import com.tangem.domain.walletconnect.model.WcSolanaMethod
|
||||
import com.tangem.domain.walletconnect.usecase.method.BlockAidTransactionCheck
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcListTransactionUseCase
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcSignState
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import okio.ByteString.Companion.decodeBase64
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
|
|
@ -38,7 +40,7 @@ internal class WcSolanaSignAllTransactionUseCase @AssistedInject constructor(
|
|||
rawSdkRequest = rawSdkRequest,
|
||||
session = session,
|
||||
accountAddress = context.accountAddress,
|
||||
)
|
||||
).map { lce -> lce.map { result -> BlockAidTransactionCheck.Result.Plain(result) } }
|
||||
|
||||
override suspend fun SignCollector<List<TransactionData>>.onSign(state: WcSignState<List<TransactionData>>) {
|
||||
val hash = prepareForSend.invoke(transactionData = state.signModel, userWallet = wallet, network = network)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
package com.tangem.data.walletconnect.request
|
||||
|
||||
import arrow.core.Either
|
||||
import arrow.core.left
|
||||
import arrow.core.right
|
||||
import com.tangem.domain.walletconnect.WcRequestUseCaseFactory
|
||||
import com.tangem.domain.walletconnect.model.WcMethod
|
||||
import com.tangem.domain.walletconnect.model.sdkcopy.WcSdkSessionRequest
|
||||
import com.tangem.domain.walletconnect.usecase.method.WcMethodUseCase
|
||||
import javax.inject.Inject
|
||||
|
|
@ -10,8 +14,10 @@ internal class DefaultWcRequestUseCaseFactory @Inject constructor(
|
|||
) : WcRequestUseCaseFactory {
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override suspend fun <T : WcMethodUseCase> createUseCase(request: WcSdkSessionRequest): T {
|
||||
return requestConverters.firstNotNullOf { it.toUseCase(request) } as? T
|
||||
?: error("Should check request before in WcRouting")
|
||||
override suspend fun <T : WcMethodUseCase> createUseCase(
|
||||
request: WcSdkSessionRequest,
|
||||
): Either<WcMethod.Unsupported, T> {
|
||||
val useCase = requestConverters.firstNotNullOfOrNull { converter -> converter.toUseCase(request) }
|
||||
return (useCase as? T)?.let { useCase.right() } ?: WcMethod.Unsupported(request).left()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue