Skip to content

Commit f8fa406

Browse files
committed
add ability to pass additionalRequiredMethods in WalletConnectOptions
1 parent 96d217a commit f8fa406

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

packages/walletconnect/src/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ export type WalletConnectOptions = {
5959
* `undefined` by default, see https://docs.walletconnect.com/2.0/web/walletConnectModal/options
6060
*/
6161
qrModalOptions?: EthereumProviderOptions['qrModalOptions']
62+
/**
63+
* Additional required methods to be added to the default list of ['eth_sendTransaction', 'personal_sign']
64+
* Passed methods to be included along with the defaults methods - see https://docs.walletconnect.com/2.0/advanced/providers/ethereum#required-and-optional-methods
65+
*/
66+
additionalRequiredMethods?: string[] | undefined
6267
/**
6368
* Additional methods to be added to the default list of ['eth_sendTransaction', 'eth_signTransaction', 'personal_sign', 'eth_sign', 'eth_signTypedData', 'eth_signTypedData_v4']
6469
* Passed methods to be included along with the defaults methods - see https://docs.walletconnect.com/2.0/web/walletConnectModal/options

packages/walletconnect/src/v2.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { CoreTypes } from '@walletconnect/types'
2-
import type { EthereumProvider } from '@walletconnect/ethereum-provider'
2+
import { REQUIRED_METHODS } from '@walletconnect/ethereum-provider'
33
import type { EthereumProviderOptions } from '@walletconnect/ethereum-provider/dist/types/EthereumProvider'
44

55
import type {
@@ -34,6 +34,7 @@ function walletConnect(options: WalletConnectOptions): WalletInit {
3434
requiredChains,
3535
optionalChains,
3636
qrModalOptions,
37+
additionalRequiredMethods,
3738
additionalOptionalMethods,
3839
dappUrl
3940
} = options
@@ -105,6 +106,13 @@ function walletConnect(options: WalletConnectOptions): WalletInit {
105106
optionalChains.map(chainID => parseInt(chainID))
106107
: chains.map(({ id }) => parseInt(id, 16))
107108

109+
const requiredMethodsSet = new Set(
110+
additionalRequiredMethods && Array.isArray(additionalRequiredMethods)
111+
? [...additionalRequiredMethods, ...REQUIRED_METHODS]
112+
: REQUIRED_METHODS
113+
)
114+
const requiredMethods = Array.from(requiredMethodsSet)
115+
108116
const optionalMethods =
109117
additionalOptionalMethods && Array.isArray(additionalOptionalMethods)
110118
? [...additionalOptionalMethods, ...methods]
@@ -113,6 +121,7 @@ function walletConnect(options: WalletConnectOptions): WalletInit {
113121
const connector = await EthereumProvider.init({
114122
projectId,
115123
chains: requiredChainsParsed, // default to mainnet
124+
methods: requiredMethods,
116125
optionalChains: optionalChainsParsed,
117126
optionalMethods,
118127
showQrModal: true,

packages/walletconnect/src/validation.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const wcOptions = Joi.object({
3030
requiredChains: Joi.array().items(Joi.number()).optional(),
3131
optionalChains: Joi.array().items(Joi.number()).optional(),
3232
qrModalOptions: Joi.object().optional(),
33+
additionalRequiredMethods: Joi.array().items(Joi.string()).optional(),
3334
additionalOptionalMethods: Joi.array().items(Joi.string()).optional()
3435
})
3536

0 commit comments

Comments
 (0)