File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ import {
2+ JsonRpcProvider ,
3+ BrowserProvider ,
4+ AbstractProvider ,
5+ AbstractSigner ,
6+ Eip1193Provider
7+ } from 'ethers' ;
8+ import { DEFAULT_CHAIN_ID } from '../config/config.js' ;
9+
10+ type EthersCompatibleProvider =
11+ | string
12+ | AbstractProvider
13+ | AbstractSigner
14+ | Eip1193Provider ;
15+
16+ export async function getChainIdFromProvider ( ethProvider : EthersCompatibleProvider ) : Promise < number > {
17+ try {
18+ if ( typeof ethProvider === 'string' ) {
19+ const provider = new JsonRpcProvider ( ethProvider ) ;
20+ const network = await provider . getNetwork ( ) ;
21+ return Number ( network . chainId ) ;
22+ } else if ( 'request' in ethProvider ) {
23+ const provider = new BrowserProvider ( ethProvider as Eip1193Provider ) ;
24+ const network = await provider . getNetwork ( ) ;
25+ return Number ( network . chainId ) ;
26+ } else if ( 'getNetwork' in ethProvider ) {
27+ const network = await ( ethProvider as AbstractProvider ) . getNetwork ( ) ;
28+ return Number ( network . chainId ) ;
29+ }
30+ } catch ( e ) {
31+ console . warn ( 'Failed to detect chainId:' , e ) ;
32+ }
33+ return DEFAULT_CHAIN_ID ;
34+ }
You can’t perform that action at this time.
0 commit comments