Skip to content

Commit f41711a

Browse files
authored
fix: storage deposit error message (#768)
1 parent 33a9ad9 commit f41711a

File tree

3 files changed

+44
-14
lines changed

3 files changed

+44
-14
lines changed

packages/adena-extension/src/components/molecules/approve-transaction/index.tsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export interface ApproveTransactionProps {
4141
processing: boolean;
4242
done: boolean;
4343
transactionMessages: ContractMessage[];
44+
maxDepositAmount?: number;
4445
changeTransactionMessages: (messages: ContractMessage[]) => void;
4546
changeMemo: (memo: string) => void;
4647
openScannerLink: (path: string, parameters?: { [key in string]: string }) => void;
@@ -69,6 +70,7 @@ export const ApproveTransaction: React.FC<ApproveTransactionProps> = ({
6970
done,
7071
useNetworkFeeReturn,
7172
argumentInfos,
73+
maxDepositAmount,
7274
changeTransactionMessages,
7375
changeMemo,
7476
onToggleTransactionData,
@@ -96,6 +98,22 @@ export const ApproveTransaction: React.FC<ApproveTransactionProps> = ({
9698
networkFee,
9799
]);
98100

101+
const isMaxDepositError = useMemo(() => {
102+
if (!maxDepositAmount || currentBalance === undefined) {
103+
return false;
104+
}
105+
106+
return currentBalance < maxDepositAmount;
107+
}, [currentBalance, maxDepositAmount]);
108+
109+
const maxDepositErrorMessage = useMemo(() => {
110+
if (isMaxDepositError) {
111+
return 'Insufficient balance';
112+
}
113+
114+
return '';
115+
}, [currentBalance, maxDepositAmount]);
116+
99117
const networkFeeErrorMessage = useMemo(() => {
100118
if (useNetworkFeeReturn.isSimulateError) {
101119
if (currentBalance !== 0) {
@@ -214,8 +232,8 @@ export const ApproveTransaction: React.FC<ApproveTransactionProps> = ({
214232
unlockDeposit: useNetworkFeeReturn.currentStorageDeposits?.unlockDeposit || 0,
215233
}}
216234
isLoading={useNetworkFeeReturn.isLoading}
217-
isError={useNetworkFeeReturn.isSimulateError || isErrorNetworkFee}
218-
errorMessage={networkFeeErrorMessage}
235+
isError={useNetworkFeeReturn.isSimulateError || isMaxDepositError}
236+
errorMessage={maxDepositErrorMessage}
219237
/>
220238

221239
<NetworkFee

packages/adena-extension/src/components/molecules/storage-deposit/storage-deposit.tsx

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,8 @@ const StorageDeposit: React.FC<StorageDepositProps> = ({
4040
return false;
4141
}
4242

43-
return isError || !!errorMessage;
44-
}, [isLoading, isError, errorMessage]);
45-
46-
const displayErrorMessage = useMemo(() => {
47-
if (!hasError || isEmptyValue) {
48-
return '';
49-
}
50-
51-
return errorMessage;
52-
}, [hasError, isEmptyValue, errorMessage]);
43+
return isError;
44+
}, [isLoading, isError]);
5345

5446
const depositAmount = useMemo(() => {
5547
if (isEmptyValue) {
@@ -69,7 +61,7 @@ const StorageDeposit: React.FC<StorageDepositProps> = ({
6961

7062
return (
7163
<StorageDepositContainer>
72-
<StorageDepositWrapper error={hasError && !isEmptyValue ? 1 : 0}>
64+
<StorageDepositWrapper error={hasError ? 1 : 0}>
7365
<span className='key'>
7466
{'Storage Deposit'}
7567

@@ -85,7 +77,7 @@ const StorageDeposit: React.FC<StorageDepositProps> = ({
8577
</div>
8678
</StorageDepositWrapper>
8779

88-
{displayErrorMessage && <span className='error-message'>{displayErrorMessage}</span>}
80+
{errorMessage && <span className='error-message'>{errorMessage}</span>}
8981
</StorageDepositContainer>
9082
);
9183
};

packages/adena-extension/src/pages/popup/wallet/approve-transaction-main/index.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,25 @@ const ApproveTransactionContainer: React.FC = () => {
153153
};
154154
}, [networkFee]);
155155

156+
const maxDepositAmount = useMemo(() => {
157+
const accumulatedAmount = document?.msgs.reduce((acc, msg): number => {
158+
const messageValue = msg.value;
159+
const amountStr = messageValue?.max_deposit;
160+
if (!amountStr) {
161+
return acc;
162+
}
163+
164+
try {
165+
const amount = parseTokenAmount(amountStr);
166+
return BigNumber(acc).plus(amount).toNumber();
167+
} catch {
168+
return acc;
169+
}
170+
}, 0);
171+
172+
return accumulatedAmount;
173+
}, [document]);
174+
156175
const consumedTokenAmount = useMemo(() => {
157176
const accumulatedAmount = document?.msgs.reduce((acc, msg) => {
158177
const messageValue = msg.value;
@@ -506,6 +525,7 @@ const ApproveTransactionContainer: React.FC = () => {
506525
done={done}
507526
logo={favicon}
508527
currentBalance={currentBalance}
528+
maxDepositAmount={maxDepositAmount}
509529
isErrorNetworkFee={isErrorNetworkFee || !networkFee}
510530
networkFee={displayNetworkFee}
511531
useNetworkFeeReturn={useNetworkFeeReturn}

0 commit comments

Comments
 (0)