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
);
};