diff --git a/apps/maestro/src/features/RecentTransactions/RecentTransactionsTable.tsx b/apps/maestro/src/features/RecentTransactions/RecentTransactionsTable.tsx index fcf7874be..d777a5a89 100644 --- a/apps/maestro/src/features/RecentTransactions/RecentTransactionsTable.tsx +++ b/apps/maestro/src/features/RecentTransactions/RecentTransactionsTable.tsx @@ -30,19 +30,29 @@ export const RecentTransactionsTable: FC = ({ setPage(0); }, [contractMethod]); - const { data: txns, isLoading } = trpc.gmp.getRecentTransactions.useQuery({ - contractMethod, - senderAddress, - pageSize: maxTransactions, - page, - }); + const { data: txns, isLoading } = trpc.gmp.getRecentTransactions.useQuery( + { + contractMethod, + senderAddress, + pageSize: maxTransactions, + page, + }, + { + suspense: true, + } + ); - const { data: prevPageTxns } = trpc.gmp.getRecentTransactions.useQuery({ - contractMethod, - senderAddress, - pageSize: maxTransactions, - page: page > 0 ? page - 1 : 0, - }); + const { data: prevPageTxns } = trpc.gmp.getRecentTransactions.useQuery( + { + contractMethod, + senderAddress, + pageSize: maxTransactions, + page: page > 0 ? page - 1 : 0, + }, + { + suspense: true, + } + ); const { data: nextPageTxns } = trpc.gmp.getRecentTransactions.useQuery({ contractMethod, diff --git a/apps/maestro/src/pages/recent-transactions/index.tsx b/apps/maestro/src/pages/recent-transactions/index.tsx index 0f04be34f..3401b3b41 100644 --- a/apps/maestro/src/pages/recent-transactions/index.tsx +++ b/apps/maestro/src/pages/recent-transactions/index.tsx @@ -1,5 +1,6 @@ import { Tabs } from "@axelarjs/ui"; import { invert } from "@axelarjs/utils"; +import { Suspense } from "react"; import { useAccount } from "wagmi"; @@ -36,25 +37,31 @@ const RecentTransactionsPage = () => { > My Recent Transactions
- - {CONTRACT_METHODS.map((method) => ( - { - e.preventDefault(); - setTab(REVERSE_TAB_MAP[method]); - }} - active={contractMethod === method} - > - {CONTRACT_METHODS_LABELS[method]} - - ))} - - + + } + > + + {CONTRACT_METHODS.map((method) => ( + { + e.preventDefault(); + setTab(REVERSE_TAB_MAP[method]); + }} + active={contractMethod === method} + > + {CONTRACT_METHODS_LABELS[method]} + + ))} + + +
); diff --git a/apps/maestro/src/services/db/kv/MaestroKVClient.ts b/apps/maestro/src/services/db/kv/MaestroKVClient.ts index e2f465a90..071f621bf 100644 --- a/apps/maestro/src/services/db/kv/MaestroKVClient.ts +++ b/apps/maestro/src/services/db/kv/MaestroKVClient.ts @@ -65,11 +65,28 @@ export default class MaestroKVClient extends BaseMaestroKVClient { return await this.kv.get(key); } + async getAccounStatuses() { + const match = COLLECTION_KEYS.accountStatus("*" as `0x${string}`); + const [, keys] = await this.kv.scan(0, { match }); + const values = await this.kv.mget(keys); + + return keys.map((key, i) => ({ + // extract account address from key (e.g. "accounts:0x1234:status" -> "0x1234") + accountAddress: key.split(":")[1] as `0x${string}`, + status: values[i], + })); + } + async getGlobalMessage() { const key = COLLECTION_KEYS.globalMessage; return await this.kv.hgetall(key); } + async setGlobalMessage(message: Message) { + const key = COLLECTION_KEYS.globalMessage; + return await this.kv.hset(key, message); + } + async getAccountMessage(accountAddresss: `0x${string}`) { const key = COLLECTION_KEYS.accountMessage(accountAddresss); return await this.kv.hgetall(key); diff --git a/apps/maestro/src/ui/layouts/Page.tsx b/apps/maestro/src/ui/layouts/Page.tsx index 2267a069c..62aafc613 100644 --- a/apps/maestro/src/ui/layouts/Page.tsx +++ b/apps/maestro/src/ui/layouts/Page.tsx @@ -218,21 +218,25 @@ const Page = ({ > {pageContent} - {isLoading && ( -
-
- - {loadingMessage || "loading page data..."} -
-
- )} + {isLoading && } ); }; +export const FullScreenLoading = ({ loadingMessage = "" }) => ( +
+
+ + {loadingMessage || "loading page data..."} +
+
+); + export default Object.assign(Page, { Title: tw.h1`text-2xl font-bold`, + Content: tw.div`flex-1 grid`, + FullScreenLoading, }); diff --git a/apps/maestro/src/ui/pages/InterchainTokensPage/index.tsx b/apps/maestro/src/ui/pages/InterchainTokensPage/index.tsx index 5589d906c..da31967c9 100644 --- a/apps/maestro/src/ui/pages/InterchainTokensPage/index.tsx +++ b/apps/maestro/src/ui/pages/InterchainTokensPage/index.tsx @@ -10,7 +10,11 @@ const InterchainTokensPage = () => { return (
- Loading...
}> + + } + >