UNPKG

doloresqui

Version:
87 lines (82 loc) 1.9 kB
import { time } from "../../consts/time"; import { SortOptions, Token } from "@socket.tech/socket-v2-sdk"; import { useSelector } from "react-redux"; import useSWR from "swr"; import { socket } from "../apis"; // Main hook that takes in params and fetches the quotes. export const useRoutes = ( sourceToken, destToken, amount, sort: SortOptions, userAddress, refuelEnabled, includeBridges, excludeBridges, singleTxOnly, swapSlippage ) => { const isTxModalOpen = useSelector((state: any) => state.modals.isTxModalOpen); const shouldFetch = !!sourceToken && !!destToken && !!amount && amount !== "0" && !!userAddress && !isTxModalOpen; async function fetchQuotes( sourceToken: Token, destToken: Token, amount: string, userAddress: string, sort: SortOptions, bridgeWithGas, includeBridges, excludeBridges, singleTxOnly, swapSlippage ) { const quotes = await socket.getAllQuotes( { path: { fromToken: sourceToken, toToken: destToken }, amount, address: userAddress, }, { sort, bridgeWithGas, includeBridges, excludeBridges, singleTxOnly, defaultSwapSlippage: swapSlippage } ); return quotes; } const { data, error, isValidating } = useSWR( shouldFetch ? [ sourceToken, destToken, amount, userAddress, sort, refuelEnabled, includeBridges, excludeBridges, singleTxOnly, swapSlippage, "quotes", ] : null, fetchQuotes, { refreshInterval: time.QUOTES_REFRESH * 1000, //refresh quotes every 60 seconds revalidateOnFocus: false, } ); return { data: data, isQuotesLoading: userAddress && ((!data && !error) || isValidating), }; };