diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/client/FaucetButton.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/client/FaucetButton.tsx index ade4e25e8a0..aa2326fa505 100644 --- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/client/FaucetButton.tsx +++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/client/FaucetButton.tsx @@ -47,7 +47,7 @@ export function FaucetButton({ amount, }: { chain: ChainMetadata; - amount: string; + amount: number; }) { const client = useThirdwebClient(); const address = useActiveAccount()?.address; diff --git a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/server/FaucetSection.tsx b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/server/FaucetSection.tsx index c1d13d44281..c120254be2b 100644 --- a/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/server/FaucetSection.tsx +++ b/apps/dashboard/src/app/(dashboard)/(chain)/[chain_id]/(chainPage)/components/server/FaucetSection.tsx @@ -1,16 +1,16 @@ import type { ChainMetadata } from "thirdweb/chains"; +import { getFaucetClaimAmount } from "../../../../../../api/testnet-faucet/claim/claim-amount"; import { ChainIcon } from "../../../../components/server/chain-icon"; import { FaucetButton } from "../client/FaucetButton"; import { GiftIcon } from "../icons/GiftIcon"; import { SectionTitle } from "./SectionTitle"; -const amountToGive = "0.01"; - export async function FaucetSection(props: { chain: ChainMetadata }) { const { chain } = props; // Check eligibilty. const sanitizedChainName = chain.name.replace("Mainnet", "").trim(); + const amountToGive = getFaucetClaimAmount(props.chain.chainId); return (
diff --git a/apps/dashboard/src/app/api/testnet-faucet/claim/claim-amount.ts b/apps/dashboard/src/app/api/testnet-faucet/claim/claim-amount.ts new file mode 100644 index 00000000000..63c0420dcd0 --- /dev/null +++ b/apps/dashboard/src/app/api/testnet-faucet/claim/claim-amount.ts @@ -0,0 +1,12 @@ +const customClaimAmounts: Record = { + // Aavegotchi Polter + 631571: 0.1, + // Aleph Zero + 2039: 0.1, +}; + +const defaultClaimAmount = 0.01; + +export function getFaucetClaimAmount(chainId: number) { + return customClaimAmounts[chainId] || defaultClaimAmount; +} diff --git a/apps/dashboard/src/app/api/testnet-faucet/claim/route.ts b/apps/dashboard/src/app/api/testnet-faucet/claim/route.ts index 9f3e84099d1..076b549d7e3 100644 --- a/apps/dashboard/src/app/api/testnet-faucet/claim/route.ts +++ b/apps/dashboard/src/app/api/testnet-faucet/claim/route.ts @@ -2,6 +2,7 @@ import { startOfToday } from "date-fns"; import { cacheGet, cacheSet } from "lib/redis"; import { type NextRequest, NextResponse } from "next/server"; import { ZERO_ADDRESS } from "thirdweb"; +import { getFaucetClaimAmount } from "./claim-amount"; const THIRDWEB_ENGINE_URL = process.env.THIRDWEB_ENGINE_URL; const NEXT_PUBLIC_THIRDWEB_ENGINE_FAUCET_WALLET = @@ -109,6 +110,7 @@ export const POST = async (req: NextRequest) => { ); const todayUTCSeconds = Math.floor(todayUTC.getTime() / 1000); const idempotencyKey = `${ipCacheKey}:${todayUTCSeconds}`; + const amountToClaim = getFaucetClaimAmount(chainId).toString(); try { // Store the claim request for 24 hours. @@ -129,7 +131,7 @@ export const POST = async (req: NextRequest) => { body: JSON.stringify({ to: toAddress, currencyAddress: ZERO_ADDRESS, - amount: "0.01", + amount: amountToClaim, }), }); @@ -144,5 +146,5 @@ export const POST = async (req: NextRequest) => { ); } - return NextResponse.json({ amount: "0.01" }, { status: 200 }); + return NextResponse.json({ amount: amountToClaim }, { status: 200 }); }; diff --git a/apps/dashboard/src/components/buttons/MismatchButton.tsx b/apps/dashboard/src/components/buttons/MismatchButton.tsx index 9ec64f19bc3..9bee2a96410 100644 --- a/apps/dashboard/src/components/buttons/MismatchButton.tsx +++ b/apps/dashboard/src/components/buttons/MismatchButton.tsx @@ -51,6 +51,7 @@ import { } from "thirdweb/react"; import { privateKeyToAccount } from "thirdweb/wallets"; import { Button, type ButtonProps, Card, Heading, Text } from "tw-components"; +import { getFaucetClaimAmount } from "../../app/api/testnet-faucet/claim/claim-amount"; import { THIRDWEB_API_HOST } from "../../constants/urls"; import { useAllChainsData } from "../../hooks/chains/allChains"; import { useV5DashboardChain } from "../../lib/v5-adapter"; @@ -354,8 +355,7 @@ function NoFundsDialogContent(props: { function GetFundsFromFaucet(props: { chain: ChainMetadata; }) { - // TODO - improvement for later -> estimate gas required for transaction, and use that as the amount to give - const amountToGive = "0.01"; + const amountToGive = getFaucetClaimAmount(props.chain.chainId); return (