Skip to content

Commit b199357

Browse files
committed
fix: fixed metamask evm provider binding for event listeners
1 parent 3725c90 commit b199357

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

packages/no-modal/src/connectors/metamask-connector/metamaskConnector.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,17 @@ class MetaMaskConnector extends BaseConnector<void> {
584584
const engine = JRPCEngineV2.create({ middleware: [switchChainMiddleware, forwardMiddleware] });
585585
const engineProvider = providerFromEngineV2(engine) as IProvider;
586586

587-
return engineProvider;
587+
return {
588+
...engineProvider,
589+
// bind the provider events to the engine provider
590+
// without the binding, the engine provider could not forward events to the original provider
591+
on: provider.on.bind(provider),
592+
once: provider.once.bind(provider),
593+
removeListener: provider.removeListener.bind(provider),
594+
off: typeof provider.off === "function" ? provider.off.bind(provider) : undefined,
595+
emit: typeof provider.emit === "function" ? provider.emit.bind(provider) : undefined,
596+
removeAllListeners: typeof provider.removeAllListeners === "function" ? provider.removeAllListeners.bind(provider) : undefined,
597+
} as IProvider;
588598
}
589599
}
590600

0 commit comments

Comments
 (0)