import { useContext, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { TransactionResponse } from 'ethers'; import { ViewActions, ViewContext, } from '../../../context/view-context/ViewContext'; import { PrefilledSwapForm, SwapWidgetViews, } from '../../../context/view-context/SwapViewContextTypes'; import { LoadingView } from '../../../views/loading/LoadingView'; interface SwapInProgressProps { transactionResponse: TransactionResponse; swapForm: PrefilledSwapForm; } export function SwapInProgress({ transactionResponse, swapForm, }: SwapInProgressProps) { const { t } = useTranslation(); const { viewDispatch } = useContext(ViewContext); useEffect(() => { (async () => { try { const receipt = await transactionResponse.wait(); if (receipt?.status === 1) { viewDispatch({ payload: { type: ViewActions.UPDATE_VIEW, view: { type: SwapWidgetViews.SUCCESS, data: { fromTokenAddress: swapForm.fromTokenAddress, fromAmount: swapForm.fromAmount, toTokenAddress: swapForm.toTokenAddress, toAmount: swapForm.toAmount || '', transactionHash: receipt?.hash, }, }, }, }); return; } viewDispatch({ payload: { type: ViewActions.UPDATE_VIEW, view: { type: SwapWidgetViews.FAIL, data: swapForm, reason: 'Transaction failed', }, }, }); } catch { viewDispatch({ payload: { type: ViewActions.UPDATE_VIEW, view: { type: SwapWidgetViews.FAIL, data: swapForm, reason: 'Transaction failed', }, }, }); } })(); }, [transactionResponse]); return ( ); }