Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export const PUB_ALCHEMY_API_KEY = process.env.NEXT_PUBLIC_ALCHEMY_API_KEY ?? ""

export const PUB_WEB3_ENDPOINT = (process.env.NEXT_PUBLIC_WEB3_URL_PREFIX ?? "") + PUB_ALCHEMY_API_KEY;
export const PUB_WEB3_ENDPOINT_L2 = process.env.NEXT_PUBLIC_WEB3_URL_PREFIX_L2 ?? "";
export const PUB_WEB3_ENDPOINT_L2_OP = process.env.NEXT_PUBLIC_WEB3_URL_PREFIX_L2_OP ?? "";

export const PUB_ETHERSCAN_API_KEY = process.env.NEXT_PUBLIC_ETHERSCAN_API_KEY ?? "";

Expand All @@ -60,4 +61,16 @@ export const PUB_DISCORD_URL = "https://discord.com/";
export const PUB_MINTABLE_TOKEN_ADDRESS = (process.env.NEXT_PUBLIC_MINTABLE_TOKEN_ADDRESS ?? "") as Address;
export const PUB_PAYMASTER_ADDRESS = (process.env.NEXT_PUBLIC_PAYMASTER_ADDRESS ?? "") as Address;

export const PUB_BLOCKSCOUT_URL = process.env.NEXT_PUBLIC_BLOCKSCOUT_URL ?? "";
export const PUB_BLOCKSCOUT_URL = process.env.NEXT_PUBLIC_BLOCKSCOUT_URL ?? "";

// L2 Optimism (OP)
export const PUB_L2_CHAIN_NAME_OP = (process.env.NEXT_PUBLIC_L2_CHAIN_NAME_OP ?? "optimismSepolia") as ChainName;
export const PUB_TOKEN_L2_ADDRESS_OP = (process.env.NEXT_PUBLIC_TOKEN_L2_ADDRESS_OP ?? "") as Address;
export const PUB_L2_CHAIN_OP = getChain(PUB_L2_CHAIN_NAME_OP);

export function getTokenAddressByChainId(chainId: number): Address {
if (chainId === PUB_CHAIN.id) return PUB_TOKEN_L1_ADDRESS;
if (chainId === PUB_L2_CHAIN.id) return PUB_TOKEN_L2_ADDRESS;
if (chainId === PUB_L2_CHAIN_OP.id) return PUB_TOKEN_L2_ADDRESS_OP;
return PUB_TOKEN_ADDRESS as Address;
}
5 changes: 4 additions & 1 deletion context/Web3Modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ import {
PUB_APP_NAME,
PUB_CHAIN,
PUB_L2_CHAIN,
PUB_L2_CHAIN_OP,
PUB_PROJECT_URL,
PUB_WALLET_CONNECT_PROJECT_ID,
PUB_WALLET_ICON,
PUB_WEB3_ENDPOINT,
PUB_WEB3_ENDPOINT_L2,
PUB_WEB3_ENDPOINT_L2_OP,
} from "@/constants";
import { mainnet } from "viem/chains";

Expand All @@ -22,12 +24,13 @@ const metadata = {
};

export const config = createConfig({
chains: [PUB_CHAIN, mainnet, PUB_L2_CHAIN],
chains: [PUB_CHAIN, mainnet, PUB_L2_CHAIN, PUB_L2_CHAIN_OP],
syncConnectedChain: true,
ssr: true,
transports: {
[PUB_CHAIN.id]: http(PUB_WEB3_ENDPOINT, { batch: true }),
[PUB_L2_CHAIN.id]: http(PUB_WEB3_ENDPOINT_L2, { batch: true }),
[PUB_L2_CHAIN_OP.id]: http(PUB_WEB3_ENDPOINT_L2_OP, { batch: true }),
[mainnet.id]: http(PUB_WEB3_ENDPOINT, { batch: true }),
},
connectors: [
Expand Down
14 changes: 12 additions & 2 deletions plugins/delegateAnnouncer/components/DelegateCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { mainnet } from "wagmi/chains";
import { useReadContract, useWriteContract } from "wagmi";
import { iVotesAbi } from "../artifacts/iVotes.sol";
import { formatHexString } from "@/utils/evm";
import * as DOMPurify from "dompurify";
import DOMPurify from "dompurify";

type DelegateCardProps = {
delegate: Address;
Expand All @@ -22,21 +22,31 @@ export const DelegateCard = ({ delegate, message, tokenAddress }: DelegateCardPr
const result = useEnsName({
chainId: mainnet.id,
address: delegate,
query: {
enabled: !!delegate && delegate !== "0x",
},
});
const avatarResult = useEnsAvatar({
name: normalize(result.data!),
name: result.data ? normalize(result.data) : undefined,
chainId: mainnet.id,
gatewayUrls: ["https://cloudflare-ipfs.com"],
query: {
enabled: !!result.data,
},
});
const { data: votingPower } = useReadContract({
abi: iVotesAbi,
address: tokenAddress,
functionName: "getVotes",
args: [delegate],
query: {
enabled: !!tokenAddress && tokenAddress !== "0x" && !!delegate && delegate !== "0x",
},
});
const { writeContract: delegateWrite } = useWriteContract();

const delegateTo = () => {
if (!tokenAddress || tokenAddress === "0x" || !delegate || delegate === "0x") return;
delegateWrite({
abi: iVotesAbi,
address: tokenAddress,
Expand Down
Loading