import React from "react"; import { Box, CheckIcon, CloseIcon, Flex, HStack, IconButton, InfoOutlineIcon, Popover, Stack, Spinner, Text, VStack } from "native-base"; import { useG$Amount } from "@gooddollar/web3sdk-v2"; import { ethers } from "ethers"; import { CurrencyValue, TransactionStatus } from "@usedapp/core"; import { GoodButton } from "../../core/buttons"; import { ExplorerLink } from "../../core"; import { GdAmount, Title } from "../../core/layout"; import { MicroBridgeProps } from "./types"; import { useWizard } from "react-use-wizard"; import { BridgeSuccessModal } from "../../core/web3/modals/BridgeSuccessModal"; const Status = ({ result, ...props }: { result?: string }) => { switch (result) { case undefined: case "Mining": case "PendingSignature": default: return ; case "Success": return ; case "Fail": case "Exception": return ; } }; const TriggerButton = (props: any) => } />; const StatusBox = ({ txStatus, text, infoText }: { txStatus?: Partial; text: string; infoText?: string; sourceChain: "fuse" | "celo"; }) => ( {text} {infoText && ( {infoText} )} {txStatus && } ); const StatusHeader = ({ sendAmount, sourceChain, targetChain, expectedToReceive, fee, relayStatus, withRelay }: { sendAmount: CurrencyValue; sourceChain: string; targetChain: string; expectedToReceive: CurrencyValue; fee: CurrencyValue; relayStatus: MicroBridgeProps["relayStatus"]; withRelay: MicroBridgeProps["withRelay"]; }) => { const [sendCopy, receiveCopy] = relayStatus?.status === "Success" ? ["You Bridged", "You've Received"] : ["You Have Bridged", "You Will Receive"]; return ( <> {sendCopy} {receiveCopy} {"Fees"} {relayStatus?.status === "Success" ? ( {"Fees"} ) : null} {relayStatus?.status !== "Success" ? ( You're paying {fee.format({ suffix: "G$" })} to use the bridge (See FAQ's for more no Fees) The transaction may take a few minutes to complete.{" "} {withRelay ? ( You can choose Self Relay to speed up the process and save 50% on fees! ) : null} ) : null} ); }; export const SingleTxStatus = ({ bridgeStatus, sourceChain, selfRelayStatus, relayStatus, handleFinish }: { bridgeStatus: any; sourceChain: any; selfRelayStatus: any; relayStatus: any; handleFinish: any; }) => ( {bridgeStatus && bridgeStatus?.status != "None" && ( {bridgeStatus?.status === "Success" && selfRelayStatus && ( )} {bridgeStatus?.status === "Success" && ( )} )} {relayStatus?.status === "Success" ? ( <> Done ) : null} ); export const MicroBridgeStatus = ({ originChain, pendingTransaction, relayStatus, withRelay }: { bridgeStatus: MicroBridgeProps["bridgeStatus"]; originChain: MicroBridgeProps["originChain"]; pendingTransaction: MicroBridgeProps["pendingTransaction"]; relayStatus: MicroBridgeProps["relayStatus"]; withRelay: MicroBridgeProps["withRelay"]; }) => { const [pendingTx] = pendingTransaction; const [sourceChain] = originChain; const { bridgeWeiAmount, expectedToReceive } = pendingTx; const { goToStep } = useWizard(); const sendAmount = useG$Amount(ethers.BigNumber.from(bridgeWeiAmount), "G$", sourceChain === "celo" ? 42220 : 122); const fee = sendAmount.sub(expectedToReceive); const targetChain = sourceChain === "celo" ? "fuse" : "celo"; const handleFinish = () => { goToStep(0); }; return ( {relayStatus?.status === "Success" ? ( {`Congratulations! Your bridging \n transaction has been successfully \n completed.`} ) : ( {`Congratulations! Your bridging \n transaction is being processed.`} )} Done ); };