From d75bb7b312ab2d65c7cc6a4e792d5a5cbd9584c0 Mon Sep 17 00:00:00 2001 From: antoncoding Date: Sun, 18 May 2025 21:30:26 +0800 Subject: [PATCH] fix: refetch function --- src/hooks/useUserPositions.ts | 11 +++++------ src/hooks/useUserPositionsSummaryData.ts | 17 +++++++++++++---- src/hooks/useUserTransactions.ts | 2 -- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/hooks/useUserPositions.ts b/src/hooks/useUserPositions.ts index 74aac617..c5cee30e 100644 --- a/src/hooks/useUserPositions.ts +++ b/src/hooks/useUserPositions.ts @@ -122,7 +122,6 @@ const useUserPositions = (user: string | undefined, showEmpty = false) => { isLoading: isLoadingInitialData, // Primary loading state isRefetching: isRefetchingInitialData, error: initialError, - refetch: refetchInitialData, } = useQuery({ // Note: Removed MarketsContextType type assertion queryKey: positionKeys.initialData(user ?? ''), @@ -148,8 +147,7 @@ const useUserPositions = (user: string | undefined, showEmpty = false) => { return { finalMarketKeys }; }, enabled: !!user && markets.length > 0, - staleTime: 30000, - gcTime: 5 * 60 * 1000, + staleTime: 0, }); // 2. Query for enhanced position data (snapshots), dependent on initialData @@ -251,17 +249,18 @@ const useUserPositions = (user: string | undefined, showEmpty = false) => { gcTime: 5 * 60 * 1000, }); // <-- End options object here - // Refetch function targets the initial data query + // Refetch function targets both the initial data and enhanced queries const refetch = useCallback( async (onSuccess?: () => void) => { try { - await refetchInitialData(); + await queryClient.invalidateQueries({ queryKey: positionKeys.initialData(user ?? '') }); + await queryClient.invalidateQueries({ queryKey: ['enhanced-positions', user] }); onSuccess?.(); } catch (error) { console.error('[Positions] Error during manual refetch:', error); } }, - [refetchInitialData], + [queryClient, user], ); // Combine refetching states diff --git a/src/hooks/useUserPositionsSummaryData.ts b/src/hooks/useUserPositionsSummaryData.ts index b48c8223..5b8359e2 100644 --- a/src/hooks/useUserPositionsSummaryData.ts +++ b/src/hooks/useUserPositionsSummaryData.ts @@ -1,4 +1,4 @@ -import { useQuery } from '@tanstack/react-query'; +import { useQuery, useQueryClient } from '@tanstack/react-query'; import { Address } from 'viem'; import { SupportedNetworks } from '@/utils/networks'; import { @@ -7,7 +7,7 @@ import { } from '@/utils/positions'; import { estimatedBlockNumber } from '@/utils/rpc'; import { MarketPositionWithEarnings } from '@/utils/types'; -import useUserPositions from './useUserPositions'; +import useUserPositions, { positionKeys } from './useUserPositions'; import useUserTransactions from './useUserTransactions'; type BlockNumbers = { @@ -79,11 +79,12 @@ const useUserPositionsSummaryData = (user: string | undefined) => { loading: positionsLoading, isRefetching, positionsError, - refetch: refetchPositions, } = useUserPositions(user, true); const { fetchTransactions } = useUserTransactions(); + const queryClient = useQueryClient(); + // Query for block numbers - this runs once and is cached const { data: blockNums, isLoading: isLoadingBlockNums } = useQuery({ queryKey: blockKeys.all, @@ -174,7 +175,15 @@ const useUserPositionsSummaryData = (user: string | undefined) => { const refetch = async (onSuccess?: () => void) => { try { - await refetchPositions(); + // Do not invalidate block numbers: keep the old block numbers + // await queryClient.invalidateQueries({ queryKey: blockKeys.all }); + + // Invalidate positions initial data + await queryClient.invalidateQueries({ queryKey: positionKeys.initialData(user ?? '') }); + // Invalidate positions enhanced data (invalidate all for this user) + await queryClient.invalidateQueries({ queryKey: ['enhanced-positions', user] }); + // Invalidate earnings query + await queryClient.invalidateQueries({ queryKey: ['positions-earnings', user] }); if (onSuccess) { onSuccess(); } diff --git a/src/hooks/useUserTransactions.ts b/src/hooks/useUserTransactions.ts index 74689167..8d141ebf 100644 --- a/src/hooks/useUserTransactions.ts +++ b/src/hooks/useUserTransactions.ts @@ -88,8 +88,6 @@ const useUserTransactions = () => { // 3. Create fetch promises const fetchPromises: Promise[] = []; - console.log('morphoNetworks', morphoNetworks); - // Morpho API Fetch if (morphoNetworks.length > 0) { // morphoNetworks directly contains the numeric chain IDs (e.g., [1, ...])