Initial commit with 🏗️ Scaffold-ETH 2 @ 1.0.2
This commit is contained in:
37
packages/nextjs/services/web3/wagmiConfig.tsx
Normal file
37
packages/nextjs/services/web3/wagmiConfig.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import { wagmiConnectors } from "./wagmiConnectors";
|
||||
import { Chain, createClient, fallback, http } from "viem";
|
||||
import { hardhat, mainnet } from "viem/chains";
|
||||
import { createConfig } from "wagmi";
|
||||
import scaffoldConfig, { DEFAULT_ALCHEMY_API_KEY, ScaffoldConfig } from "~~/scaffold.config";
|
||||
import { getAlchemyHttpUrl } from "~~/utils/scaffold-eth";
|
||||
|
||||
const { targetNetworks } = scaffoldConfig;
|
||||
|
||||
// We always want to have mainnet enabled (ENS resolution, ETH price, etc). But only once.
|
||||
export const enabledChains = targetNetworks.find((network: Chain) => network.id === 1)
|
||||
? targetNetworks
|
||||
: ([...targetNetworks, mainnet] as const);
|
||||
|
||||
export const wagmiConfig = createConfig({
|
||||
chains: enabledChains,
|
||||
connectors: wagmiConnectors,
|
||||
ssr: true,
|
||||
client: ({ chain }) => {
|
||||
let rpcFallbacks = [http()];
|
||||
const rpcOverrideUrl = (scaffoldConfig.rpcOverrides as ScaffoldConfig["rpcOverrides"])?.[chain.id];
|
||||
if (rpcOverrideUrl) {
|
||||
rpcFallbacks = [http(rpcOverrideUrl), http()];
|
||||
} else {
|
||||
const alchemyHttpUrl = getAlchemyHttpUrl(chain.id);
|
||||
if (alchemyHttpUrl) {
|
||||
const isUsingDefaultKey = scaffoldConfig.alchemyApiKey === DEFAULT_ALCHEMY_API_KEY;
|
||||
rpcFallbacks = isUsingDefaultKey ? [http(), http(alchemyHttpUrl)] : [http(alchemyHttpUrl), http()];
|
||||
}
|
||||
}
|
||||
return createClient({
|
||||
chain,
|
||||
transport: fallback(rpcFallbacks),
|
||||
...(chain.id !== (hardhat as Chain).id ? { pollingInterval: scaffoldConfig.pollingInterval } : {}),
|
||||
});
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user