import { CircleAlertIcon, CircleCheckIcon, CircleXIcon, CopyIcon, } from "lucide-react"; import { useParams } from "react-router"; import AppHeader from "src/components/AppHeader"; import ExternalLink from "src/components/ExternalLink"; import { FormattedBitcoinAmount } from "src/components/FormattedBitcoinAmount"; import FormattedFiatAmount from "src/components/FormattedFiatAmount"; import Loading from "src/components/Loading"; import LottieLoading from "src/components/LottieLoading"; import { Button } from "src/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "src/components/ui/card"; import { useInfo } from "src/hooks/useInfo"; import { useSwap } from "src/hooks/useSwaps"; import { copyToClipboard } from "src/lib/clipboard"; import { SwapOut } from "src/types"; export default function SwapOutStatus() { const { data: info } = useInfo(); const { swapId } = useParams() as { swapId: string }; const { data: swap } = useSwap(swapId, true); if (!swap) { return ; } const copyTxId = () => { copyToClipboard(swap.claimTxId as string); }; const swapStatus = swap.state; const statusText = { SUCCESS: "Swap Successful", FAILED: "Swap Failed", PENDING: swap.lockupTxId ? "Waiting for confirmation" : "Making lightning payment", }; return (
{swapStatus === "PENDING" && } {statusText[swapStatus]} {swap.autoSwap && (

Auto swap{swap.usedXpub && <> to xpub}

)}
Swap ID: {swap.id}{" "} { copyToClipboard(swap.id); }} />
{swapStatus === "SUCCESS" ? ( <>

) : ( <> {swapStatus === "PENDING" ? ( ) : ( )}

~
)}
{swapStatus !== "FAILED" ? ( swap.lockupTxId ? ( <> {swapStatus === "SUCCESS" && (

Confirmed onchain

View
)} {swapStatus === "PENDING" && (

{swap.claimTxId ? "Waiting for on-chain confirmation" : "Broadcasting claim transaction"} ...

View
)}
Lightning invoice paid
) : ( <>
Paying lightning invoice...
) ) : ( <>
Swap failed
{swap.lockupTxId ? ( <>
Failed to claim swap in time
) : ( <>
Failed to pay swap invoice
)} )}
Swap initiated
); } const Divider = ({ color }: { color: string }) => (
);