import { useContext, useEffect, useState } from "react"; import { useDispatch } from "react-redux"; import { ActiveRouteResponse } from "@socket.tech/socket-v2-sdk"; import { CustomizeContext } from "../providers/CustomizeProvider"; // components import { Modal } from "./common/Modal"; // actions import { setActiveRoute, setIsTxModalOpen } from "../state/modals"; import { usePendingRoutes } from "../hooks/apis"; import { useTransition } from "@react-spring/web"; import { TokenDetailsRow } from "./common/TokenDetailsRow"; // Pending Transactions are basically routes that have not been completed yet. User can continue from the previous step whenever he opens the modal again. export const PendingTransactions = () => { const dispatch = useDispatch(); const [isModalOpen, setIsModalOpen] = useState(false); const [activeRoutes, setActiveRoutes] = useState(null); const [totalRoutes, setTotalRoutes] = useState(0); const customSettings = useContext(CustomizeContext); const { borderRadius } = customSettings.customization; const transitions = useTransition(isModalOpen, { from: { y: "100%" }, enter: { y: "0" }, leave: { y: "100%" }, config: { duration: 200 }, onReset: () => setIsModalOpen(false), }); // Hook that fetches the routes that are active (routes that have started but have not been completed yet.) const { data: activeRoutesData } = usePendingRoutes(); useEffect(() => { if (activeRoutesData) { setTotalRoutes(activeRoutesData?.result?.pagination?.totalRecords); setActiveRoutes(activeRoutesData?.result?.activeRoutes); } }, [activeRoutesData]); function openTxModal(route) { dispatch(setActiveRoute(route)); dispatch(setIsTxModalOpen(true)); setIsModalOpen(false); } if (totalRoutes > 0) return ( <> {transitions( (style, item) => item && ( setIsModalOpen(false)} style={style} >

Transaction status is updated every 30 seconds

{activeRoutes?.map((route: any) => { const refuelSourceToken = { amount: route?.refuel?.fromAmount, asset: route?.refuel?.fromAsset, }; const refuelDestToken = { amount: route?.refuel?.toAmount, asset: route?.refuel?.toAsset, }; return ( openTxModal(route)} srcDetails={{ token: route?.fromAsset, amount: route?.fromAmount, }} destDetails={{ token: route?.toAsset, amount: route?.toAmount, }} srcRefuel={refuelSourceToken} destRefuel={refuelDestToken} /> ); })}

Showing {activeRoutes?.length}/{totalRoutes} active routes

) )} ); else return null; };