Skip to content

Commit f62a9eb

Browse files
committed
fix: style font size smaller, optimize variable calculations
1 parent 3898aeb commit f62a9eb

File tree

2 files changed

+50
-53
lines changed

2 files changed

+50
-53
lines changed

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

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useMemo, useState } from "react";
22
import { Button } from "@kleros/ui-components-library";
3-
import { useAccount, usePublicClient } from "wagmi";
3+
import { useAccount, useBalance, usePublicClient } from "wagmi";
44
import {
55
useWriteEscrowUniversalPayArbitrationFeeByBuyer,
66
useWriteEscrowUniversalPayArbitrationFeeBySeller,
@@ -11,6 +11,8 @@ import { isUndefined } from "utils/index";
1111
import { wrapWithToast } from "utils/wrapWithToast";
1212
import { useTransactionDetailsContext } from "context/TransactionDetailsContext";
1313
import { useQueryRefetch } from "hooks/useQueryRefetch";
14+
import ClosedCircleIcon from "components/StyledIcons/ClosedCircleIcon";
15+
import { ErrorButtonMessage } from "pages/NewTransaction/NavigationButtons/DepositPaymentButton";
1416

1517
interface IRaiseDisputeButton {
1618
toggleModal?: () => void;
@@ -25,29 +27,33 @@ const RaiseDisputeButton: React.FC<IRaiseDisputeButton> = ({ toggleModal, button
2527
const { buyer, id } = useTransactionDetailsContext();
2628
const isBuyer = useMemo(() => address?.toLowerCase() === buyer?.toLowerCase(), [address, buyer]);
2729
const refetchQuery = useQueryRefetch();
30+
const { data: balanceData } = useBalance({
31+
address: address as `0x${string}` | undefined,
32+
});
2833

29-
const { data: payArbitrationFeeByBuyerConfig, isLoading: isPreparingBuyerConfig } =
30-
useSimulateEscrowUniversalPayArbitrationFeeByBuyer({
31-
query: {
32-
enabled: isBuyer,
33-
},
34-
args: [BigInt(id)],
35-
value: arbitrationCost,
36-
});
34+
const insufficientBalance = parseFloat(arbitrationCost.toString()) > parseFloat(balanceData?.value.toString() || "0");
3735

38-
const { data: payArbitrationFeeBySellerConfig, isLoading: isPreparingSellerConfig } =
39-
useSimulateEscrowUniversalPayArbitrationFeeBySeller({
40-
query: {
41-
enabled: !isBuyer,
42-
},
43-
args: [BigInt(id)],
44-
value: arbitrationCost,
45-
});
36+
const { data: payArbitrationFeeByBuyerConfig } = useSimulateEscrowUniversalPayArbitrationFeeByBuyer({
37+
query: {
38+
enabled: isBuyer,
39+
},
40+
args: [BigInt(id)],
41+
value: arbitrationCost,
42+
});
43+
44+
const { data: payArbitrationFeeBySellerConfig } = useSimulateEscrowUniversalPayArbitrationFeeBySeller({
45+
query: {
46+
enabled: !isBuyer,
47+
},
48+
args: [BigInt(id)],
49+
value: arbitrationCost,
50+
});
4651

4752
const { writeContractAsync: payArbitrationFeeByBuyer } =
4853
useWriteEscrowUniversalPayArbitrationFeeByBuyer(payArbitrationFeeByBuyerConfig);
49-
const { writeContractAsync: payArbitrationFeeBySeller } =
50-
useWriteEscrowUniversalPayArbitrationFeeBySeller(payArbitrationFeeBySellerConfig);
54+
const { writeContractAsync: payArbitrationFeeBySeller } = useWriteEscrowUniversalPayArbitrationFeeBySeller(
55+
payArbitrationFeeBySellerConfig
56+
);
5157

5258
const handleRaiseDispute = () => {
5359
if (isBuyer && !isUndefined(payArbitrationFeeByBuyer)) {
@@ -84,12 +90,19 @@ const RaiseDisputeButton: React.FC<IRaiseDisputeButton> = ({ toggleModal, button
8490
};
8591

8692
return (
87-
<Button
88-
isLoading={isSending || isPreparingBuyerConfig || isPreparingSellerConfig}
89-
disabled={isSending || isPreparingBuyerConfig || isPreparingSellerConfig}
90-
text={buttonText}
91-
onClick={handleRaiseDispute}
92-
/>
93+
<div>
94+
<Button
95+
isLoading={isSending}
96+
disabled={isSending || insufficientBalance}
97+
text={buttonText}
98+
onClick={handleRaiseDispute}
99+
/>
100+
{insufficientBalance && (
101+
<ErrorButtonMessage>
102+
<ClosedCircleIcon /> Insufficient balance
103+
</ErrorButtonMessage>
104+
)}
105+
</div>
93106
);
94107
};
95108

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

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ import ClosedCircleIcon from "components/StyledIcons/ClosedCircleIcon";
2929

3030
const StyledButton = styled(Button)``;
3131

32-
const ErrorMessage = styled.div`
32+
export const ErrorButtonMessage = styled.div`
3333
display: flex;
3434
align-items: center;
3535
gap: 4px;
3636
justify-content: center;
3737
margin: 12px;
3838
color: ${({ theme }) => theme.error};
39+
font-size: 14px;
3940
`;
4041

4142
const DepositPaymentButton: React.FC = () => {
@@ -49,10 +50,8 @@ const DepositPaymentButton: React.FC = () => {
4950
deadline,
5051
sendingToken,
5152
resetContext,
52-
setHasSufficientNativeBalance,
5353
} = useNewTransactionContext();
5454

55-
const [finalRecipientAddress, setFinalRecipientAddress] = useState(sellerAddress);
5655
const publicClient = usePublicClient();
5756
const navigateAndScrollTop = useNavigateAndScrollTop();
5857
const refetchQuery = useQueryRefetch();
@@ -67,32 +66,14 @@ const DepositPaymentButton: React.FC = () => {
6766
[isNativeTransaction, sendingQuantity]
6867
);
6968

69+
const finalRecipientAddress = ensResult.data || sellerAddress;
70+
7071
const { data: balanceData } = useBalance({
7172
address: address as `0x${string}` | undefined,
72-
token: isNativeTransaction ? undefined : sendingToken?.address as `0x${string}` | undefined,
73+
token: isNativeTransaction ? undefined : (sendingToken?.address as `0x${string}` | undefined),
7374
});
7475

75-
const [error, setError] = useState<string | null>(null);
76-
77-
useEffect(() => {
78-
setFinalRecipientAddress(ensResult.data || sellerAddress);
79-
}, [sellerAddress, ensResult.data]);
80-
81-
useEffect(() => {
82-
const balance = parseFloat(balanceData?.formatted || "0");
83-
const quantity = parseFloat(sendingQuantity);
84-
85-
if (quantity > balance) {
86-
setError("Insufficient balance");
87-
setHasSufficientNativeBalance(false);
88-
} else if (quantity === 0) {
89-
setError("Amount cannot be zero");
90-
setHasSufficientNativeBalance(false);
91-
} else {
92-
setError(null);
93-
setHasSufficientNativeBalance(true);
94-
}
95-
}, [balanceData, sendingQuantity, setHasSufficientNativeBalance]);
76+
const insufficientBalance = parseFloat(sendingQuantity) > parseFloat(balanceData?.value.toString() || "0");
9677

9778
const { data: allowance, refetch: refetchAllowance } = useReadContract({
9879
query: { enabled: !isNativeTransaction && chain?.id },
@@ -187,12 +168,15 @@ const DepositPaymentButton: React.FC = () => {
187168
<div>
188169
<StyledButton
189170
isLoading={isSending}
190-
disabled={isSending || !!error}
191-
tooltip={error}
171+
disabled={isSending || insufficientBalance}
192172
text={isNativeTransaction || isApproved ? "Deposit the Payment" : "Approve Token"}
193173
onClick={isNativeTransaction || isApproved ? handleCreateTransaction : handleApproveToken}
194174
/>
195-
{error ? <ErrorMessage><ClosedCircleIcon /> {error}</ErrorMessage> : null}
175+
{insufficientBalance && (
176+
<ErrorButtonMessage>
177+
<ClosedCircleIcon /> Insufficient balance
178+
</ErrorButtonMessage>
179+
)}
196180
</div>
197181
);
198182
};

0 commit comments

Comments
 (0)