Skip to content

Commit 45d61ce

Browse files
committed
fix: no balance error in hooks
1 parent 9f353a8 commit 45d61ce

File tree

1 file changed

+74
-36
lines changed

1 file changed

+74
-36
lines changed

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

Lines changed: 74 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,17 @@ const RaiseDisputeButton: React.FC<IRaiseDisputeButton> = ({ toggleModal, button
2626
const isBuyer = useMemo(() => address?.toLowerCase() === buyer?.toLowerCase(), [address, buyer]);
2727
const refetchQuery = useQueryRefetch();
2828

29-
const { data: payArbitrationFeeByBuyerConfig } = useSimulateEscrowUniversalPayArbitrationFeeByBuyer({
30-
args: [BigInt(id)],
31-
value: arbitrationCost,
32-
});
29+
const { data: payArbitrationFeeByBuyerConfig, error: simulateBuyerError } =
30+
useSimulateEscrowUniversalPayArbitrationFeeByBuyer({
31+
args: [BigInt(id)],
32+
value: arbitrationCost,
33+
});
3334

34-
const { data: payArbitrationFeeBySellerConfig } = useSimulateEscrowUniversalPayArbitrationFeeBySeller({
35-
args: [BigInt(id)],
36-
value: arbitrationCost,
37-
});
35+
const { data: payArbitrationFeeBySellerConfig, error: simulateSellerError } =
36+
useSimulateEscrowUniversalPayArbitrationFeeBySeller({
37+
args: [BigInt(id)],
38+
value: arbitrationCost,
39+
});
3840

3941
const { writeContractAsync: payArbitrationFeeByBuyer } =
4042
useWriteEscrowUniversalPayArbitrationFeeByBuyer(payArbitrationFeeByBuyerConfig);
@@ -43,36 +45,72 @@ const RaiseDisputeButton: React.FC<IRaiseDisputeButton> = ({ toggleModal, button
4345
);
4446

4547
const handleRaiseDispute = () => {
46-
if (isBuyer && !isUndefined(payArbitrationFeeByBuyer)) {
47-
setIsSending(true);
48-
wrapWithToast(async () => await payArbitrationFeeByBuyer(payArbitrationFeeByBuyerConfig.request), publicClient)
49-
.then((wrapResult) => {
50-
if (wrapResult.status) {
51-
toggleModal && toggleModal();
52-
refetchQuery([["refetchOnBlock", "useTransactionDetailsQuery"]]);
53-
} else {
48+
if (isBuyer) {
49+
if (simulateBuyerError) {
50+
console.log({simulateBuyerError});
51+
let errorMessage = "An error occurred during simulation.";
52+
if (simulateBuyerError.message.includes("insufficient funds")) {
53+
errorMessage = "You don't have enough balance to raise a dispute.";
54+
}
55+
// Use wrapWithToast to display the error
56+
wrapWithToast(() => Promise.reject(new Error(errorMessage)), publicClient);
57+
return;
58+
}
59+
60+
if (isUndefined(payArbitrationFeeByBuyerConfig)) {
61+
console.log({ payArbitrationFeeByBuyerConfig });
62+
console.log({ simulateBuyerError });
63+
wrapWithToast(() => Promise.reject(new Error("Unable to prepare transaction.")), publicClient);
64+
return;
65+
}
66+
67+
if (!isUndefined(payArbitrationFeeByBuyer)) {
68+
setIsSending(true);
69+
wrapWithToast(() => payArbitrationFeeByBuyer(payArbitrationFeeByBuyerConfig.request), publicClient)
70+
.then((wrapResult) => {
71+
setIsSending(false);
72+
if (wrapResult.status) {
73+
toggleModal && toggleModal();
74+
refetchQuery([["refetchOnBlock", "useTransactionDetailsQuery"]]);
75+
}
76+
})
77+
.catch((error) => {
78+
console.error("Error raising dispute as buyer:", error);
79+
setIsSending(false);
80+
});
81+
}
82+
} else {
83+
if (simulateSellerError) {
84+
let errorMessage = "An error occurred during simulation.";
85+
if (simulateSellerError.message.includes("insufficient funds")) {
86+
errorMessage = "You don't have enough balance to raise a dispute.";
87+
}
88+
wrapWithToast(() => Promise.reject(new Error(errorMessage)), publicClient);
89+
return;
90+
}
91+
92+
if (isUndefined(payArbitrationFeeBySellerConfig)) {
93+
console.log({ payArbitrationFeeBySellerConfig });
94+
console.log({ simulateSellerError });
95+
wrapWithToast(() => Promise.reject(new Error("Unable to prepare transaction.")), publicClient);
96+
return;
97+
}
98+
99+
if (!isUndefined(payArbitrationFeeBySeller)) {
100+
setIsSending(true);
101+
wrapWithToast(() => payArbitrationFeeBySeller(payArbitrationFeeBySellerConfig.request), publicClient)
102+
.then((wrapResult) => {
54103
setIsSending(false);
55-
}
56-
})
57-
.catch((error) => {
58-
console.error("Error raising dispute as buyer:", error);
59-
setIsSending(false);
60-
});
61-
} else if (!isBuyer && !isUndefined(payArbitrationFeeBySeller)) {
62-
setIsSending(true);
63-
wrapWithToast(async () => await payArbitrationFeeBySeller(payArbitrationFeeBySellerConfig.request), publicClient)
64-
.then((wrapResult) => {
65-
if (wrapResult.status) {
66-
toggleModal && toggleModal();
67-
refetchQuery([["refetchOnBlock", "useTransactionDetailsQuery"]]);
68-
} else {
104+
if (wrapResult.status) {
105+
toggleModal && toggleModal();
106+
refetchQuery([["refetchOnBlock", "useTransactionDetailsQuery"]]);
107+
}
108+
})
109+
.catch((error) => {
110+
console.error("Error raising dispute as seller:", error);
69111
setIsSending(false);
70-
}
71-
})
72-
.catch((error) => {
73-
console.error("Error raising dispute as seller:", error);
74-
setIsSending(false);
75-
});
112+
});
113+
}
76114
}
77115
};
78116

0 commit comments

Comments
 (0)