Files
2026-01-21 11:18:02 +07:00

41 lines
1.7 KiB
TypeScript

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 }) => {
const mainnetFallbackWithDefaultRPC = [http("https://mainnet.rpc.buidlguidl.com")];
let rpcFallbacks = [...(chain.id === mainnet.id ? mainnetFallbackWithDefaultRPC : []), http()];
const rpcOverrideUrl = (scaffoldConfig.rpcOverrides as ScaffoldConfig["rpcOverrides"])?.[chain.id];
if (rpcOverrideUrl) {
rpcFallbacks = [http(rpcOverrideUrl), ...rpcFallbacks];
} else {
const alchemyHttpUrl = getAlchemyHttpUrl(chain.id);
if (alchemyHttpUrl) {
const isUsingDefaultKey = scaffoldConfig.alchemyApiKey === DEFAULT_ALCHEMY_API_KEY;
rpcFallbacks = isUsingDefaultKey
? [...rpcFallbacks, http(alchemyHttpUrl)]
: [http(alchemyHttpUrl), ...rpcFallbacks];
}
}
return createClient({
chain,
transport: fallback(rpcFallbacks),
...(chain.id !== (hardhat as Chain).id ? { pollingInterval: scaffoldConfig.pollingInterval } : {}),
});
},
});