File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
Expand file tree Collapse file tree 1 file changed +46
-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 (
17+ ethProvider : EthersCompatibleProvider
18+ ) : Promise < number > {
19+ try {
20+ if ( typeof ethProvider === 'string' ) {
21+ // Handle network string
22+ if ( ethProvider === 'bellecour' ) return 134 ;
23+ // TODO add arbitrum & avalanche
24+ const provider = new JsonRpcProvider ( ethProvider ) ;
25+ const network = await provider . getNetwork ( ) ;
26+ return Number ( network . chainId ) ;
27+ } else if ( ethProvider instanceof AbstractProvider ) {
28+ const network = await ethProvider . getNetwork ( ) ;
29+ return Number ( network . chainId ) ;
30+ } else if ( ethProvider instanceof AbstractSigner ) {
31+ const { provider } = ethProvider ;
32+ if ( ! provider ) {
33+ throw Error ( 'Signer is not connected to a provider' ) ;
34+ }
35+ const network = await provider . getNetwork ( ) ;
36+ return Number ( network . chainId ) ;
37+ } else if ( 'request' in ethProvider ) {
38+ const provider = new BrowserProvider ( ethProvider as Eip1193Provider ) ;
39+ const network = await provider . getNetwork ( ) ;
40+ return Number ( network . chainId ) ;
41+ }
42+ } catch ( e ) {
43+ console . warn ( 'Failed to detect chainId:' , e ) ;
44+ }
45+ return DEFAULT_CHAIN_ID ;
46+ }
You can’t perform that action at this time.
0 commit comments