From c02e4f619c6d4e305b9360597f6631b6636d9077 Mon Sep 17 00:00:00 2001 From: poomthiti Date: Tue, 2 May 2023 15:14:46 +0700 Subject: [PATCH] refactor: tx expression, query key, and change file name --- .../{common.tsx => ErrorFetching.tsx} | 0 .../components/tables/AdminContractsTable.tsx | 2 +- .../tables/InstantiatedContractsTable.tsx | 2 +- .../tables/OpenedProposalsTable.tsx | 2 +- .../components/tables/StoredCodesTable.tsx | 2 +- .../components/tables/TxsTable.tsx | 2 +- src/lib/query-utils/index.ts | 2 +- src/lib/query/index.ts | 1 + src/lib/services/accountService.ts | 13 ++++++----- src/lib/services/expression/txExpression.ts | 23 +++++++++++++------ src/lib/services/txService.ts | 1 + 11 files changed, 31 insertions(+), 19 deletions(-) rename src/lib/pages/account-details/components/{common.tsx => ErrorFetching.tsx} (100%) diff --git a/src/lib/pages/account-details/components/common.tsx b/src/lib/pages/account-details/components/ErrorFetching.tsx similarity index 100% rename from src/lib/pages/account-details/components/common.tsx rename to src/lib/pages/account-details/components/ErrorFetching.tsx diff --git a/src/lib/pages/account-details/components/tables/AdminContractsTable.tsx b/src/lib/pages/account-details/components/tables/AdminContractsTable.tsx index 854576e81..46f082ea3 100644 --- a/src/lib/pages/account-details/components/tables/AdminContractsTable.tsx +++ b/src/lib/pages/account-details/components/tables/AdminContractsTable.tsx @@ -1,7 +1,7 @@ import { Box } from "@chakra-ui/react"; import type { ChangeEvent } from "react"; -import { ErrorFetching } from "../common"; +import { ErrorFetching } from "../ErrorFetching"; import { useInternalNavigate } from "lib/app-provider"; import { Pagination } from "lib/components/pagination"; import { usePaginator } from "lib/components/pagination/usePaginator"; diff --git a/src/lib/pages/account-details/components/tables/InstantiatedContractsTable.tsx b/src/lib/pages/account-details/components/tables/InstantiatedContractsTable.tsx index 7db41da3d..9dba512b0 100644 --- a/src/lib/pages/account-details/components/tables/InstantiatedContractsTable.tsx +++ b/src/lib/pages/account-details/components/tables/InstantiatedContractsTable.tsx @@ -1,7 +1,7 @@ import { Box } from "@chakra-ui/react"; import type { ChangeEvent } from "react"; -import { ErrorFetching } from "../common"; +import { ErrorFetching } from "../ErrorFetching"; import { useInternalNavigate } from "lib/app-provider"; import { Pagination } from "lib/components/pagination"; import { usePaginator } from "lib/components/pagination/usePaginator"; diff --git a/src/lib/pages/account-details/components/tables/OpenedProposalsTable.tsx b/src/lib/pages/account-details/components/tables/OpenedProposalsTable.tsx index d75c45126..af7aeb2bf 100644 --- a/src/lib/pages/account-details/components/tables/OpenedProposalsTable.tsx +++ b/src/lib/pages/account-details/components/tables/OpenedProposalsTable.tsx @@ -1,7 +1,7 @@ import { Box } from "@chakra-ui/react"; import type { ChangeEvent } from "react"; -import { ErrorFetching } from "../common"; +import { ErrorFetching } from "../ErrorFetching"; import { Pagination } from "lib/components/pagination"; import { usePaginator } from "lib/components/pagination/usePaginator"; import { EmptyState } from "lib/components/state"; diff --git a/src/lib/pages/account-details/components/tables/StoredCodesTable.tsx b/src/lib/pages/account-details/components/tables/StoredCodesTable.tsx index 1dc257fc3..6d60648df 100644 --- a/src/lib/pages/account-details/components/tables/StoredCodesTable.tsx +++ b/src/lib/pages/account-details/components/tables/StoredCodesTable.tsx @@ -1,7 +1,7 @@ import { Box } from "@chakra-ui/react"; import type { ChangeEvent } from "react"; -import { ErrorFetching } from "../common"; +import { ErrorFetching } from "../ErrorFetching"; import { useInternalNavigate } from "lib/app-provider"; import { Pagination } from "lib/components/pagination"; import { usePaginator } from "lib/components/pagination/usePaginator"; diff --git a/src/lib/pages/account-details/components/tables/TxsTable.tsx b/src/lib/pages/account-details/components/tables/TxsTable.tsx index 26f59c3fd..321ada54d 100644 --- a/src/lib/pages/account-details/components/tables/TxsTable.tsx +++ b/src/lib/pages/account-details/components/tables/TxsTable.tsx @@ -2,7 +2,7 @@ import { Alert, AlertDescription, Box, Flex } from "@chakra-ui/react"; import type { ChangeEvent } from "react"; import { useEffect, useState } from "react"; -import { ErrorFetching } from "../common"; +import { ErrorFetching } from "../ErrorFetching"; import { CustomIcon } from "lib/components/icon"; import { Pagination } from "lib/components/pagination"; import { usePaginator } from "lib/components/pagination/usePaginator"; diff --git a/src/lib/query-utils/index.ts b/src/lib/query-utils/index.ts index 778ed830a..76e4e39d1 100644 --- a/src/lib/query-utils/index.ts +++ b/src/lib/query-utils/index.ts @@ -1,5 +1,5 @@ export const createQueryFnWithTimeout = - (queryFn: () => Promise, ms: number = 6 * 60 * 1000) => + (queryFn: () => Promise, ms: number = 6 * 1000) => () => Promise.race([ queryFn(), diff --git a/src/lib/query/index.ts b/src/lib/query/index.ts index d921e83a3..826e05e42 100644 --- a/src/lib/query/index.ts +++ b/src/lib/query/index.ts @@ -3,3 +3,4 @@ export * from "./code"; export * from "./contract"; export * from "./proposal"; export * from "./tx"; +export * from "./account"; diff --git a/src/lib/services/accountService.ts b/src/lib/services/accountService.ts index deb59eead..11790446e 100644 --- a/src/lib/services/accountService.ts +++ b/src/lib/services/accountService.ts @@ -2,8 +2,8 @@ import { useWallet } from "@cosmos-kit/react"; import type { UseQueryResult } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query"; -import { useCelatoneApp, useChainId } from "lib/app-provider"; -import { getAccountIdByAddressQueryDocument } from "lib/query/account"; +import { useCelatoneApp } from "lib/app-provider"; +import { getAccountIdByAddressQueryDocument } from "lib/query"; import type { Addr, Balance, Option } from "lib/types"; import { getAccountBalanceInfo } from "./account"; @@ -34,17 +34,18 @@ export const useAccountBalances = ( ); }; -export const useAccountId = (walletAddress: Option) => { +export const useAccountId = ( + walletAddress: Option +): UseQueryResult> => { const { indexerGraphClient } = useCelatoneApp(); - const chainId = useChainId(); const queryFn = () => { if (!walletAddress) throw new Error("Error fetching account id: failed to retrieve address."); return indexerGraphClient .request(getAccountIdByAddressQueryDocument, { address: walletAddress }) - .then(({ accounts_by_pk }) => accounts_by_pk?.id); + .then>(({ accounts_by_pk }) => accounts_by_pk?.id); }; - return useQuery(["account_id", chainId, walletAddress], queryFn, { + return useQuery(["account_id", indexerGraphClient, walletAddress], queryFn, { enabled: Boolean(walletAddress), retry: 1, refetchOnWindowFocus: false, diff --git a/src/lib/services/expression/txExpression.ts b/src/lib/services/expression/txExpression.ts index a9aea3696..908b38b88 100644 --- a/src/lib/services/expression/txExpression.ts +++ b/src/lib/services/expression/txExpression.ts @@ -49,12 +49,17 @@ export const useTxExpression = ({ }) => useMemo(() => { const hasFilter = Object.values(filters).some((filter: boolean) => filter); - return { - ...(accountId - ? { account_id: { _eq: accountId } } - : { ...(address ? { account: { address: { _eq: address } } } : {}) }), - ...(isSigner === undefined ? {} : { is_signer: { _eq: isSigner } }), - ...(hasFilter || search + const accountIdExp = accountId ? { account_id: { _eq: accountId } } : {}; + const addressExp = address + ? { account: { address: { _eq: address } } } + : {}; + const applyAccountExp = Object.keys(accountIdExp).length + ? accountIdExp + : addressExp; + const isSignerExp = + isSigner === undefined ? {} : { is_signer: { _eq: isSigner } }; + const filterExp = + hasFilter || search ? { transaction: { ...(hasFilter ? generateActionsFilter(filters) : {}), @@ -63,6 +68,10 @@ export const useTxExpression = ({ : {}), }, } - : {}), + : {}; + return { + ...applyAccountExp, + ...isSignerExp, + ...filterExp, }; }, [address, accountId, filters, isSigner, search]); diff --git a/src/lib/services/txService.ts b/src/lib/services/txService.ts index c109cf4a0..a15fb40d0 100644 --- a/src/lib/services/txService.ts +++ b/src/lib/services/txService.ts @@ -138,6 +138,7 @@ export const useTxsByAddressPagination = ( [ "transactions_by_address_pagination", address, + accountId, search, filters, isSigner,