Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 18 additions & 7 deletions src/ui/pages/BridgeForm/BridgeForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ function FormHint({
style={{ width: 20, height: 20 }}
color="var(--negative-500)"
/>
<UIText kind="body/accent">Bridge Anyway</UIText>
<UIText kind="small/accent">Bridge Anyway</UIText>
</HStack>
);
}
Expand Down Expand Up @@ -724,7 +724,7 @@ function BridgeFormComponent() {

const {
mutate: sendApproveTransaction,
data: approveHash = null,
data: approveData,
reset: resetApproveMutation,
...approveMutation
} = useMutation({
Expand All @@ -741,6 +741,7 @@ function BridgeFormComponent() {
invariant(formState.inputAmount, 'inputAmount must be set');

const evmTx = selectedQuote.transactionApprove.evm;
const quoteId = selectedQuote.contractMetadata?.id || null;
const isPaymasterTx = Boolean(evmTx.customData?.paymasterParams);
const approvalTx =
allowanceBase && !isPaymasterTx
Expand Down Expand Up @@ -785,11 +786,15 @@ function BridgeFormComponent() {
addressAction: interpretationAction ?? fallbackAddressAction,
});
invariant(txResponse.evm?.hash);
return txResponse.evm.hash;
return { hash: txResponse.evm.hash, quoteId };
},
onSuccess: ({ quoteId }) => {
setUserQuoteId(quoteId);
},
});

const approveTxStatus = useTransactionStatus(approveHash);
const approveTxStatus = useTransactionStatus(approveData?.hash ?? null);

useEffect(() => {
if (approveTxStatus === 'confirmed') {
refetchQuotes();
Expand All @@ -800,7 +805,7 @@ function BridgeFormComponent() {

const isApproveMode =
approveMutation.isLoading ||
selectedQuote?.transactionApprove ||
Boolean(selectedQuote?.transactionApprove) ||
approveTxStatus === 'pending';
const showApproveHintLine =
Boolean(selectedQuote?.transactionApprove) || !approveMutation.isIdle;
Expand Down Expand Up @@ -1385,11 +1390,17 @@ function BridgeFormComponent() {
form={formId}
wallet={wallet}
disabled={
approveMutation.isLoading || approveTxStatus === 'pending'
quotesData.isLoading ||
approveMutation.isLoading ||
approveTxStatus === 'pending'
}
holdToSign={false}
>
Approve {inputPosition?.asset.symbol ?? null}
{approveMutation.isLoading || approveTxStatus === 'pending'
? 'Approving...'
: quotesData.isLoading
? 'Fetching offers'
: `Approve ${inputPosition?.asset.symbol ?? null}`}
</SignTransactionButton>
) : null}
</VStack>
Expand Down
25 changes: 18 additions & 7 deletions src/ui/pages/SwapForm/SwapForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ function FormHint({
style={{ width: 20, height: 20 }}
color="var(--negative-500)"
/>
<UIText kind="body/accent">Swap Anyway</UIText>
<UIText kind="small/accent">Swap Anyway</UIText>
</HStack>
);
}
Expand Down Expand Up @@ -525,7 +525,7 @@ function SwapFormComponent() {

const {
mutate: sendApproveTransaction,
data: approveHash = null,
data: approveData,
reset: resetApproveMutation,
...approveMutation
} = useMutation({
Expand All @@ -542,6 +542,7 @@ function SwapFormComponent() {
invariant(formState.inputAmount, 'inputAmount must be set');

const evmTx = selectedQuote.transactionApprove.evm;
const quoteId = selectedQuote.contractMetadata?.id || null;
const isPaymasterTx = Boolean(evmTx.customData?.paymasterParams);
const approvalTx =
allowanceBase && !isPaymasterTx
Expand Down Expand Up @@ -586,11 +587,15 @@ function SwapFormComponent() {
addressAction: interpretationAction ?? fallbackAddressAction,
});
invariant(txResponse.evm?.hash);
return txResponse.evm.hash;
return { hash: txResponse.evm.hash, quoteId };
},
onSuccess: ({ quoteId }) => {
setUserQuoteId(quoteId);
},
});

const approveTxStatus = useTransactionStatus(approveHash);
const approveTxStatus = useTransactionStatus(approveData?.hash ?? null);

useEffect(() => {
if (approveTxStatus === 'confirmed') {
refetchQuotes();
Expand All @@ -601,7 +606,7 @@ function SwapFormComponent() {

const isApproveMode =
approveMutation.isLoading ||
selectedQuote?.transactionApprove ||
Boolean(selectedQuote?.transactionApprove) ||
approveTxStatus === 'pending';
const showApproveHintLine =
Boolean(selectedQuote?.transactionApprove) || !approveMutation.isIdle;
Expand Down Expand Up @@ -1198,11 +1203,17 @@ function SwapFormComponent() {
form={formId}
wallet={wallet}
disabled={
approveMutation.isLoading || approveTxStatus === 'pending'
quotesData.isLoading ||
approveMutation.isLoading ||
approveTxStatus === 'pending'
}
holdToSign={false}
>
Approve {inputPosition?.asset.symbol ?? null}
{approveMutation.isLoading || approveTxStatus === 'pending'
? 'Approving...'
: quotesData.isLoading
? 'Fetching offers'
: `Approve ${inputPosition?.asset.symbol ?? null}`}
</SignTransactionButton>
) : null}
</VStack>
Expand Down