import { useQueryClient } from "@tanstack/react-query" import { useCallback } from "react" import { useAccount, useBalance } from "wagmi" import { QUERY_KEYS } from "./constants" import { useInvalidateBorrowData } from "./useBorrowData" import { useInvalidateTokensBalances } from "./useTokensBalances" /** * Hook to refresh the passport using query invalidation mechanism. * By calling the refresh function, the latest data will be refetched as soon as possible. * * @example * const { refreshCurrentAccount, refreshUsdConversion } = useRefreshPassport() * * // Call this function to refresh the current account * const handlerefreshCurrentAccount = async () => { * await refreshCurrentAccount() * } */ export function useRefreshPassport() { const { address } = useAccount() const queryClient = useQueryClient() const { invalidateBorrowData } = useInvalidateBorrowData() const { invalidateTokensBalances } = useInvalidateTokensBalances() const { refetch: refetchNativeBalance } = useBalance({ address }) const refreshCurrentAccount = useCallback( () => queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.ACCOUNT, QUERY_KEYS.CURRENT], }), [queryClient], ) const refreshUsdConversion = useCallback( () => queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.ASSETS_USD_CONVERSION], }), [queryClient], ) const refreshTokensBalances = useCallback(async () => { await refetchNativeBalance() await invalidateTokensBalances() }, [refetchNativeBalance, invalidateTokensBalances]) return { refreshCurrentAccount, refreshUsdConversion, refreshBorrowData: invalidateBorrowData, refreshTokensBalances, } }