From e97f247e6e123250c306d0e9374f0713daabbd3b Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Wed, 15 Apr 2026 12:24:03 -0300 Subject: [PATCH 1/2] fix: guard useTransactionHistory against markets without EVM addresses The Aptos market has empty LENDING_POOL address since it redirects to an external site. Calling evmAddress('') throws InvariantError. Guard the hook to skip SDK queries for non-EVM markets. --- src/hooks/useTransactionHistory.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/hooks/useTransactionHistory.tsx b/src/hooks/useTransactionHistory.tsx index 13bac5a23a..59d907206f 100644 --- a/src/hooks/useTransactionHistory.tsx +++ b/src/hooks/useTransactionHistory.tsx @@ -146,13 +146,16 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool const [shouldKeepFetching, setShouldKeepFetching] = useState(false); const isAccountValid = account && account.length > 0; + const isValidEvmMarket = currentMarketData.addresses.LENDING_POOL.length > 0; const { data: sdkData, loading: sdkLoading, error: sdkError, } = useUserTransactionHistory({ - market: evmAddress(currentMarketData.addresses.LENDING_POOL), + market: isValidEvmMarket + ? evmAddress(currentMarketData.addresses.LENDING_POOL) + : evmAddress('0x0000000000000000000000000000000000000000'), user: isAccountValid ? evmAddress(account as string) : evmAddress('0x0000000000000000000000000000000000000000'), @@ -171,6 +174,14 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool }, [account, currentMarketData.addresses.LENDING_POOL, currentMarketData.chainId]); useEffect(() => { + if (!isValidEvmMarket) { + setIsFetchingAllSdkPages(false); + setHasLoadedInitialSdkPage(true); + } + }, [isValidEvmMarket]); + + useEffect(() => { + if (!isValidEvmMarket) return; if (!sdkData?.items?.length) { if (!sdkLoading && !sdkData?.pageInfo?.next) { setIsFetchingAllSdkPages(false); @@ -196,9 +207,10 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool setHasLoadedInitialSdkPage(true); } } - }, [sdkData, sdkLoading, hasLoadedInitialSdkPage]); + }, [sdkData, sdkLoading, hasLoadedInitialSdkPage, isValidEvmMarket]); useEffect(() => { + if (!isValidEvmMarket) return; if (sdkLoading) { setIsFetchingAllSdkPages(true); return; @@ -214,7 +226,7 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool if (!nextCursor) { setIsFetchingAllSdkPages(false); } - }, [sdkData?.pageInfo?.next, sdkLoading, sdkCursor]); + }, [sdkData?.pageInfo?.next, sdkLoading, sdkCursor, isValidEvmMarket]); useEffect(() => { if (sdkError && !hasLoadedInitialSdkPage) { From 95900f87aef478888bfefb7fed16c208e6c7d011 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Wed, 15 Apr 2026 13:51:21 -0300 Subject: [PATCH 2/2] fix: re-run non-EVM loading override on account changes The reset effect runs on account change and sets loading state, but the non-EVM override only depended on isValidEvmMarket. Add account to the dependency array so the override re-fires after account connect/disconnect on non-EVM markets like Aptos. --- src/hooks/useTransactionHistory.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useTransactionHistory.tsx b/src/hooks/useTransactionHistory.tsx index 59d907206f..f9d5ef960f 100644 --- a/src/hooks/useTransactionHistory.tsx +++ b/src/hooks/useTransactionHistory.tsx @@ -178,7 +178,7 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool setIsFetchingAllSdkPages(false); setHasLoadedInitialSdkPage(true); } - }, [isValidEvmMarket]); + }, [isValidEvmMarket, account]); useEffect(() => { if (!isValidEvmMarket) return;