From ef71ce012531abcc055a165699801a3dd80fabd9 Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Wed, 2 Jul 2025 10:44:19 +1200 Subject: [PATCH] [Dashboard] Add status filter to transactions table --- .../analytics/tx-table/tx-table-ui.tsx | 13 ++++++------ .../analytics/tx-table/tx-table.tsx | 20 +++++++++++-------- .../transactions/analytics/tx-table/types.ts | 7 +------ 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx index a373463c99d..2f7c7aba132 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table-ui.tsx @@ -46,7 +46,10 @@ import type { // TODO - add Status selector dropdown here export function TransactionsTableUI(props: { - getData: (params: { page: number }) => Promise; + getData: (params: { + page: number; + status: TransactionStatus | undefined; + }) => Promise; project: Project; teamSlug: string; wallets?: Wallet[]; @@ -63,8 +66,8 @@ export function TransactionsTableUI(props: { const transactionsQuery = useQuery({ enabled: !!props.wallets && props.wallets.length > 0, placeholderData: keepPreviousData, - queryFn: () => props.getData({ page }), - queryKey: ["transactions", props.project.id, page], + queryFn: () => props.getData({ page, status }), + queryKey: ["transactions", props.project.id, page, status], refetchInterval: autoUpdate ? 4_000 : false, }); @@ -222,10 +225,6 @@ export const statusDetails = { name: "Queued", type: "warning", }, - REVERTED: { - name: "Reverted", - type: "destructive", - }, SUBMITTED: { name: "Submitted", type: "warning", diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table.tsx b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table.tsx index 3f4dfc3e0b6..4d212e44aa9 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table.tsx +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/tx-table.tsx @@ -5,7 +5,7 @@ import { engineCloudProxy } from "@/actions/proxies"; import type { Project } from "@/api/projects"; import type { Wallet } from "../../server-wallets/wallet-table/types"; import { TransactionsTableUI } from "./tx-table-ui"; -import type { TransactionsResponse } from "./types"; +import type { TransactionStatus, TransactionsResponse } from "./types"; export function TransactionsTable(props: { project: Project; @@ -16,10 +16,11 @@ export function TransactionsTable(props: { return ( { + getData={async ({ page, status }) => { return await getTransactions({ page, project: props.project, + status, }); }} project={props.project} @@ -32,23 +33,26 @@ export function TransactionsTable(props: { async function getTransactions({ project, page, + status, }: { project: Project; page: number; + status: TransactionStatus | undefined; }) { const transactions = await engineCloudProxy<{ result: TransactionsResponse }>( { - body: JSON.stringify({ - limit: 20, - page, - }), headers: { "Content-Type": "application/json", "x-client-id": project.publishableKey, "x-team-id": project.teamId, }, - method: "POST", - pathname: "/v1/transactions/search", + method: "GET", + pathname: `/v1/transactions`, + searchParams: { + limit: "20", + page: page.toString(), + status: status ?? undefined, + }, }, ); diff --git a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/types.ts b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/types.ts index f176f30c35b..7ea643a251f 100644 --- a/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/types.ts +++ b/apps/dashboard/src/app/(app)/team/[team_slug]/[project_slug]/(sidebar)/transactions/analytics/tx-table/types.ts @@ -85,12 +85,7 @@ export type Transaction = { cancelledAt: Date | null; }; -export type TransactionStatus = - | "QUEUED" - | "SUBMITTED" - | "CONFIRMED" - | "REVERTED" - | "FAILED"; +export type TransactionStatus = "QUEUED" | "SUBMITTED" | "CONFIRMED" | "FAILED"; type Pagination = { totalCount: number;