Skip to content

Commit 467a5e4

Browse files
add getChainId to utils
1 parent f2412b0 commit 467a5e4

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
}

0 commit comments

Comments
 (0)