Skip to content

Commit 2159c83

Browse files
committed
fix: extra insufficient balance condition so the buttons gives feedback faster
1 parent 54c1899 commit 2159c83

File tree

2 files changed

+29
-15
lines changed

2 files changed

+29
-15
lines changed

web/src/pages/MyTransactions/TransactionDetails/PreviewCardButtons/RaiseDisputeButton.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,32 @@ const RaiseDisputeButton: React.FC<IRaiseDisputeButton> = ({ toggleModal, button
2727
const { buyer, id } = useTransactionDetailsContext();
2828
const isBuyer = useMemo(() => address?.toLowerCase() === buyer?.toLowerCase(), [address, buyer]);
2929
const refetchQuery = useQueryRefetch();
30-
30+
3131
const { data: balanceData } = useBalance({
3232
address: address as `0x${string}` | undefined,
3333
});
3434

3535
const insufficientBalance = useMemo(() => {
36-
return balanceData && BigInt(arbitrationCost.toString()) > BigInt(balanceData.value.toString());
37-
},[arbitrationCost, balanceData]);
36+
return balanceData && BigInt(arbitrationCost.toString()) > BigInt(balanceData.value.toString());
37+
}, [arbitrationCost, balanceData]);
3838

39-
const { data: payArbitrationFeeByBuyerConfig, isLoading: isLoadingBuyerConfig, isError: isErrorBuyerConfig } = useSimulateEscrowUniversalPayArbitrationFeeByBuyer({
39+
const {
40+
data: payArbitrationFeeByBuyerConfig,
41+
isLoading: isLoadingBuyerConfig,
42+
isError: isErrorBuyerConfig,
43+
} = useSimulateEscrowUniversalPayArbitrationFeeByBuyer({
4044
query: {
4145
enabled: isBuyer && !insufficientBalance,
4246
},
4347
args: [BigInt(id)],
4448
value: arbitrationCost,
4549
});
4650

47-
const { data: payArbitrationFeeBySellerConfig, isLoading: isLoadingSellerConfig, isError: isErrorSellerConfig } = useSimulateEscrowUniversalPayArbitrationFeeBySeller({
51+
const {
52+
data: payArbitrationFeeBySellerConfig,
53+
isLoading: isLoadingSellerConfig,
54+
isError: isErrorSellerConfig,
55+
} = useSimulateEscrowUniversalPayArbitrationFeeBySeller({
4856
query: {
4957
enabled: !isBuyer && !insufficientBalance,
5058
},
@@ -95,7 +103,7 @@ const RaiseDisputeButton: React.FC<IRaiseDisputeButton> = ({ toggleModal, button
95103
return (
96104
<div>
97105
<Button
98-
isLoading={isSending || isLoadingBuyerConfig || isLoadingSellerConfig}
106+
isLoading={!insufficientBalance && (isSending || isLoadingBuyerConfig || isLoadingSellerConfig)}
99107
disabled={
100108
isSending ||
101109
insufficientBalance ||

web/src/pages/NewTransaction/NavigationButtons/DepositPaymentButton.tsx

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
useBalance,
2121
} from "wagmi";
2222
import { parseEther, parseUnits } from "viem";
23-
import { normalize } from 'viem/ens'
23+
import { normalize } from "viem/ens";
2424
import { isUndefined } from "utils/index";
2525
import { wrapWithToast } from "utils/wrapWithToast";
2626
import { ethAddressPattern } from "utils/validateAddress";
@@ -70,23 +70,23 @@ const DepositPaymentButton: React.FC = () => {
7070
const finalRecipientAddress = ensResult.data || sellerAddress;
7171

7272
const { data: nativeBalance } = useBalance({
73-
address: isNativeTransaction ? address as `0x${string}` : undefined,
73+
address: isNativeTransaction ? (address as `0x${string}`) : undefined,
7474
});
7575

7676
const { data: tokenBalance } = useReadContract({
77-
address: !isNativeTransaction ? sendingToken?.address as `0x${string}` : undefined,
77+
address: !isNativeTransaction ? (sendingToken?.address as `0x${string}`) : undefined,
7878
abi: erc20Abi,
79-
functionName: 'balanceOf',
79+
functionName: "balanceOf",
8080
args: [address as `0x${string}`],
8181
});
82-
82+
8383
const insufficientBalance = useMemo(() => {
8484
if (isUndefined(sendingQuantity)) return true;
85-
85+
8686
if (isNativeTransaction) {
8787
return nativeBalance ? parseFloat(sendingQuantity) > parseFloat(nativeBalance.value.toString()) : true;
8888
}
89-
89+
9090
return isUndefined(tokenBalance) ? true : parseFloat(sendingQuantity) > parseFloat(tokenBalance.toString());
9191
}, [sendingQuantity, tokenBalance, nativeBalance, isNativeTransaction]);
9292

@@ -129,7 +129,13 @@ const DepositPaymentButton: React.FC = () => {
129129
ethAddressPattern.test(finalRecipientAddress) &&
130130
!insufficientBalance,
131131
},
132-
args: [transactionValue, sendingToken?.address as `0x${string}`, deadlineTimestamp, transactionUri, finalRecipientAddress as `0x${string}`],
132+
args: [
133+
transactionValue,
134+
sendingToken?.address as `0x${string}`,
135+
deadlineTimestamp,
136+
transactionUri,
137+
finalRecipientAddress as `0x${string}`,
138+
],
133139
});
134140

135141
const { writeContractAsync: createNativeTransaction } =
@@ -191,7 +197,7 @@ const DepositPaymentButton: React.FC = () => {
191197
return (
192198
<div>
193199
<StyledButton
194-
isLoading={isSending || isLoadingNativeConfig || isLoadingERC20Config}
200+
isLoading={!insufficientBalance && (isSending || isLoadingNativeConfig || isLoadingERC20Config)}
195201
disabled={
196202
isSending ||
197203
insufficientBalance ||

0 commit comments

Comments
 (0)