Skip to content

Commit

Permalink
create util getAlchemyHttpUrl and remove TODOs corresponding to it
Browse files Browse the repository at this point in the history
  • Loading branch information
technophile-04 committed Mar 27, 2024
1 parent c722605 commit 07e91f5
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 8 deletions.
6 changes: 2 additions & 4 deletions packages/nextjs/services/web3/wagmiConfig.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,16 @@ import { Chain, createClient, http } from "viem";
import { hardhat } from "viem/chains";
import { createConfig } from "wagmi";
import scaffoldConfig from "~~/scaffold.config";
import { getAlchemyHttpUrl } from "~~/utils/scaffold-eth";

export const wagmiConfig = createConfig({
// TODO: Maybe we should get literal value here currently TS has widened the types because of ensabledChains logic
chains: enabledChains,
connectors: wagmiConnectors,
ssr: true,
client({ chain }) {
return createClient({
chain,
// TODO: Create a file for alchmey links mapping and use fallback transport array so if alchmey fails fallbakc to default chain rpc
transport: http(),
// TODO: Casting to Chain type to avoid TS literal compersion, we could in future use getTargetNetworks function
transport: http(getAlchemyHttpUrl(chain.id)),
...(chain.id === (hardhat as Chain).id
? {
pollingInterval: scaffoldConfig.pollingInterval,
Expand Down
6 changes: 2 additions & 4 deletions packages/nextjs/utils/scaffold-eth/fetchPriceFromUniswap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ import { CurrencyAmount, Token } from "@uniswap/sdk-core";
import { Pair, Route } from "@uniswap/v2-sdk";
import { Address, createPublicClient, http, parseAbi } from "viem";
import { mainnet } from "viem/chains";
import scaffoldConfig from "~~/scaffold.config";
import { ChainWithAttributes } from "~~/utils/scaffold-eth";
import { ChainWithAttributes, getAlchemyHttpUrl } from "~~/utils/scaffold-eth";

const publicClient = createPublicClient({
chain: mainnet,
// TODO: Since viem/chains removed alchemy links find a better way to handle this
transport: http(`https://eth-mainnet.g.alchemy.com/v2/${scaffoldConfig.alchemyApiKey}`),
transport: http(getAlchemyHttpUrl(mainnet.id)),
});

const ABI = parseAbi([
Expand Down
28 changes: 28 additions & 0 deletions packages/nextjs/utils/scaffold-eth/networks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,34 @@ type ChainAttributes = {

export type ChainWithAttributes = chains.Chain & Partial<ChainAttributes>;

// Mapping of chainId to RPC chain name an format followed by alchemy and infura
export const RPC_CHAIN_NAMES: Record<number, string> = {
[chains.mainnet.id]: "eth-mainnet",
[chains.goerli.id]: "eth-goerli",
[chains.sepolia.id]: "eth-sepolia",
[chains.optimism.id]: "opt-mainnet",
[chains.optimismGoerli.id]: "opt-goerli",
[chains.optimismSepolia.id]: "opt-sepolia",
[chains.arbitrum.id]: "arb-mainnet",
[chains.arbitrumGoerli.id]: "arb-goerli",
[chains.arbitrumSepolia.id]: "arb-sepolia",
[chains.polygon.id]: "polygon-mainnet",
[chains.polygonMumbai.id]: "polygon-mumbai",
[chains.polygonAmoy.id]: "polygon-amoy",
[chains.astar.id]: "astar-mainnet",
[chains.polygonZkEvm.id]: "polygonzkevm-mainnet",
[chains.polygonZkEvmTestnet.id]: "polygonzkevm-testnet",
[chains.base.id]: "base-mainnet",
[chains.baseGoerli.id]: "base-goerli",
[chains.baseSepolia.id]: "base-sepolia",
};

export const getAlchemyHttpUrl = (chainId: number) => {
return RPC_CHAIN_NAMES[chainId]
? `https://${RPC_CHAIN_NAMES[chainId]}.g.alchemy.com/v2/${scaffoldConfig.alchemyApiKey}`
: undefined;
};

export const NETWORKS_EXTRA_DATA: Record<string, ChainAttributes> = {
[chains.hardhat.id]: {
color: "#b8af0c",
Expand Down

0 comments on commit 07e91f5

Please sign in to comment.