Updated on 2026-08-14
This commit is contained in:
parent
eebf4b6915
commit
dc4e8c740b
1 changed files with 23 additions and 2 deletions
|
|
@ -251,7 +251,7 @@ class WalletConnectRepositoryImpl @Inject constructor(
|
|||
}.groupBy { pair -> pair.first }
|
||||
.mapValues { entry -> entry.value.map { pair -> pair.second }.toSet() }
|
||||
|
||||
val preparedNamespaces = sessionProposal.requiredNamespaces
|
||||
val preparedRequiredNamespaces = sessionProposal.requiredNamespaces
|
||||
.map { requiredNamespace ->
|
||||
val accountsRequired = requiredNamespace.value.chains
|
||||
?.mapNotNull { chain -> userChains[chain] }
|
||||
|
|
@ -272,7 +272,9 @@ class WalletConnectRepositoryImpl @Inject constructor(
|
|||
|
||||
val sessionApproval = Wallet.Params.SessionApprove(
|
||||
proposerPublicKey = sessionProposal.proposerPublicKey,
|
||||
namespaces = preparedNamespaces,
|
||||
namespaces = preparedRequiredNamespaces.ifEmpty {
|
||||
sessionProposal.createPreparedOptionalNamespaces(userChains)
|
||||
},
|
||||
)
|
||||
|
||||
Timber.d("Session approval is prepared for sending: $sessionApproval")
|
||||
|
|
@ -301,6 +303,25 @@ class WalletConnectRepositoryImpl @Inject constructor(
|
|||
)
|
||||
}
|
||||
|
||||
private fun Wallet.Model.SessionProposal.createPreparedOptionalNamespaces(
|
||||
userChains: Map<String, Set<String>>,
|
||||
): Map<String, Wallet.Model.Namespace.Session> {
|
||||
return optionalNamespaces
|
||||
.map { optionalNamespace ->
|
||||
val accountsOptional = optionalNamespace.value.chains
|
||||
?.mapNotNull { chain -> userChains[chain] }
|
||||
?.flatten() ?: emptyList()
|
||||
|
||||
val methods = optionalNamespace.value.methods
|
||||
optionalNamespace.key to Wallet.Model.Namespace.Session(
|
||||
accounts = accountsOptional.distinct(),
|
||||
methods = methods,
|
||||
events = optionalNamespace.value.events,
|
||||
)
|
||||
}
|
||||
.toMap()
|
||||
}
|
||||
|
||||
override fun sendRequest(requestData: RequestData, result: String) {
|
||||
val session = currentSessions.find { it.topic == requestData.topic }
|
||||
// Add Ethereum Chain method is processed without user input, skip logging it
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue