From 67616c22b490afb71e4b736b1a7c4a1486d5a3a1 Mon Sep 17 00:00:00 2001 From: MananTank Date: Thu, 28 Aug 2025 21:37:31 +0000 Subject: [PATCH] [MNY-127] Dashboard: Remove unnecessary server action for fetching token list (#7940) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ## PR-Codex overview This PR focuses on refactoring the token management in the universal bridge API, including the introduction of a new `TokenMetadata` type and the relocation of the `getUniversalBridgeTokens` function to a new file. It also updates import paths for consistency. ### Detailed summary - Added `TokenMetadata` type in `apps/dashboard/src/@/api/universal-bridge/types.ts`. - Updated import path for `getUniversalBridgeTokens` in `apps/dashboard/src/@/hooks/tokens.ts` and `apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/links/components/CreatePaymentLinkButton.client.tsx`. - Created `getUniversalBridgeTokens` function in `apps/dashboard/src/@/api/universal-bridge/token-list.ts`. - Removed old `getUniversalBridgeTokens` function and `TokenMetadata` type from `apps/dashboard/src/@/api/universal-bridge/tokens.ts`. > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- .../src/@/api/universal-bridge/token-list.ts | 35 ++++++++++++++++ .../src/@/api/universal-bridge/tokens.ts | 42 +------------------ .../src/@/api/universal-bridge/types.ts | 8 ++++ .../src/@/components/blocks/TokenSelector.tsx | 2 +- apps/dashboard/src/@/hooks/tokens.ts | 2 +- .../CreatePaymentLinkButton.client.tsx | 2 +- 6 files changed, 47 insertions(+), 44 deletions(-) create mode 100644 apps/dashboard/src/@/api/universal-bridge/token-list.ts create mode 100644 apps/dashboard/src/@/api/universal-bridge/types.ts diff --git a/apps/dashboard/src/@/api/universal-bridge/token-list.ts b/apps/dashboard/src/@/api/universal-bridge/token-list.ts new file mode 100644 index 00000000000..e1106c3e33f --- /dev/null +++ b/apps/dashboard/src/@/api/universal-bridge/token-list.ts @@ -0,0 +1,35 @@ +import { NEXT_PUBLIC_DASHBOARD_CLIENT_ID } from "@/constants/public-envs"; +import { UB_BASE_URL } from "./constants"; +import type { TokenMetadata } from "./types"; + +export async function getUniversalBridgeTokens(props: { + chainId?: number; + address?: string; +}) { + const url = new URL(`${UB_BASE_URL}/v1/tokens`); + + if (props.chainId) { + url.searchParams.append("chainId", String(props.chainId)); + } + if (props.address) { + url.searchParams.append("tokenAddress", props.address); + } + url.searchParams.append("limit", "1000"); + url.searchParams.append("includePrices", "false"); + + const res = await fetch(url.toString(), { + headers: { + "Content-Type": "application/json", + "x-client-id": NEXT_PUBLIC_DASHBOARD_CLIENT_ID, + } as Record, + method: "GET", + }); + + if (!res.ok) { + const text = await res.text(); + throw new Error(text); + } + + const json = await res.json(); + return json.data as Array; +} diff --git a/apps/dashboard/src/@/api/universal-bridge/tokens.ts b/apps/dashboard/src/@/api/universal-bridge/tokens.ts index 989afb7f03f..f56f9bd5de7 100644 --- a/apps/dashboard/src/@/api/universal-bridge/tokens.ts +++ b/apps/dashboard/src/@/api/universal-bridge/tokens.ts @@ -1,48 +1,8 @@ "use server"; import type { ProjectResponse } from "@thirdweb-dev/service-utils"; import { getAuthToken } from "@/api/auth-token"; -import { DASHBOARD_THIRDWEB_SECRET_KEY } from "@/constants/server-envs"; import { UB_BASE_URL } from "./constants"; - -export type TokenMetadata = { - name: string; - symbol: string; - address: string; - decimals: number; - chainId: number; - iconUri?: string; -}; - -export async function getUniversalBridgeTokens(props: { - chainId?: number; - address?: string; -}) { - const url = new URL(`${UB_BASE_URL}/v1/tokens`); - - if (props.chainId) { - url.searchParams.append("chainId", String(props.chainId)); - } - if (props.address) { - url.searchParams.append("tokenAddress", props.address); - } - url.searchParams.append("limit", "1000"); - - const res = await fetch(url.toString(), { - headers: { - "Content-Type": "application/json", - "x-secret-key": DASHBOARD_THIRDWEB_SECRET_KEY, - } as Record, - method: "GET", - }); - - if (!res.ok) { - const text = await res.text(); - throw new Error(text); - } - - const json = await res.json(); - return json.data as Array; -} +import type { TokenMetadata } from "./types"; export async function addUniversalBridgeTokenRoute(props: { chainId: number; diff --git a/apps/dashboard/src/@/api/universal-bridge/types.ts b/apps/dashboard/src/@/api/universal-bridge/types.ts new file mode 100644 index 00000000000..608f81ce14d --- /dev/null +++ b/apps/dashboard/src/@/api/universal-bridge/types.ts @@ -0,0 +1,8 @@ +export type TokenMetadata = { + name: string; + symbol: string; + address: string; + decimals: number; + chainId: number; + iconUri?: string; +}; diff --git a/apps/dashboard/src/@/components/blocks/TokenSelector.tsx b/apps/dashboard/src/@/components/blocks/TokenSelector.tsx index f782c82b39d..00f66951625 100644 --- a/apps/dashboard/src/@/components/blocks/TokenSelector.tsx +++ b/apps/dashboard/src/@/components/blocks/TokenSelector.tsx @@ -5,7 +5,7 @@ import { type ThirdwebClient, } from "thirdweb"; import { shortenAddress } from "thirdweb/utils"; -import type { TokenMetadata } from "@/api/universal-bridge/tokens"; +import type { TokenMetadata } from "@/api/universal-bridge/types"; import { Img } from "@/components/blocks/Img"; import { SelectWithSearch } from "@/components/blocks/select-with-search"; import { Badge } from "@/components/ui/badge"; diff --git a/apps/dashboard/src/@/hooks/tokens.ts b/apps/dashboard/src/@/hooks/tokens.ts index 8e1165433aa..8f40a11f3ce 100644 --- a/apps/dashboard/src/@/hooks/tokens.ts +++ b/apps/dashboard/src/@/hooks/tokens.ts @@ -1,5 +1,5 @@ import { useQuery } from "@tanstack/react-query"; -import { getUniversalBridgeTokens } from "@/api/universal-bridge/tokens"; +import { getUniversalBridgeTokens } from "@/api/universal-bridge/token-list"; export function useTokensData({ chainId, diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/links/components/CreatePaymentLinkButton.client.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/links/components/CreatePaymentLinkButton.client.tsx index 8cce80e27c2..57950293eb3 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/links/components/CreatePaymentLinkButton.client.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/payments/links/components/CreatePaymentLinkButton.client.tsx @@ -11,7 +11,7 @@ import { checksumAddress } from "thirdweb/utils"; import z from "zod"; import { reportPaymentLinkCreated } from "@/analytics/report"; import { createPaymentLink } from "@/api/universal-bridge/developer"; -import { getUniversalBridgeTokens } from "@/api/universal-bridge/tokens"; +import { getUniversalBridgeTokens } from "@/api/universal-bridge/token-list"; import { SingleNetworkSelector } from "@/components/blocks/NetworkSelectors"; import { TokenSelector } from "@/components/blocks/TokenSelector"; import { Button } from "@/components/ui/button";