Skip to content

Commit e552206

Browse files
committed
improve states and validation
1 parent e61ce97 commit e552206

7 files changed

Lines changed: 47 additions & 44 deletions

File tree

components/home-cards.tsx

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,32 @@ export const HomeCards = () => {
9797
// eslint-disable-next-line react-hooks/exhaustive-deps
9898
}, []);
9999

100+
const getPendingVariant = () => {
101+
if (dialogContentArgs?.tokenTransfer) return transferPending;
102+
if (dialogContentArgs?.multiTokenTransfer) return multiTransferPending;
103+
return pending;
104+
};
105+
106+
const getTxHashVariant = () => {
107+
if (dialogContentArgs?.tokenTransfer)
108+
return transferTransaction?.getHash().toString();
109+
if (dialogContentArgs?.multiTokenTransfer)
110+
return multiTransferTransaction?.getHash().toString();
111+
return transaction?.getHash().toString();
112+
};
113+
114+
const getTxErrorVariant = () => {
115+
if (dialogContentArgs?.tokenTransfer) return transferError;
116+
if (dialogContentArgs?.multiTokenTransfer) return multiTransferError;
117+
return error;
118+
};
119+
120+
const getTxResultVariant = () => {
121+
if (dialogContentArgs?.tokenTransfer) return transferTxResult;
122+
if (dialogContentArgs?.multiTokenTransfer) return multiTransferTxResult;
123+
return txResult;
124+
};
125+
100126
return (
101127
<OperationsStateDialogProvider>
102128
<div className="flex flex-row gap-6 flex-wrap mb-6">
@@ -598,37 +624,16 @@ export const HomeCards = () => {
598624

599625
{/* TODO: refactor, remove state dialog, reuse the operation dialog for states */}
600626
<OperationsStateDialogWrapper
601-
txPending={
602-
dialogContentArgs?.tokenTransfer
603-
? transferPending || multiTransferPending
604-
: pending
605-
}
606-
txHash={
607-
dialogContentArgs?.tokenTransfer
608-
? transferTransaction?.getHash().toString() ||
609-
multiTransferTransaction?.getHash().toString()
610-
: transaction?.getHash().toString()
611-
}
612-
txError={
613-
dialogContentArgs?.tokenTransfer
614-
? transferError || multiTransferError
615-
: error
616-
}
617-
scError={getSmartContractTxError(
618-
dialogContentArgs?.tokenTransfer
619-
? transferTxResult || multiTransferTxResult
620-
: txResult
621-
)}
627+
txPending={getPendingVariant()}
628+
txHash={getTxHashVariant()}
629+
txError={getTxErrorVariant()}
630+
scError={getSmartContractTxError(getTxResultVariant())}
622631
operationsContentsMap={operationsContentsMap}
623632
setDialogContentArgs={setDialogContentArgs}
624633
additionalInfo={dialogContentArgs?.additionalInfo}
625634
tokenId={
626635
dialogContentArgs?.showTokenId &&
627-
getTokenIdAfterIssuingOrCreating(
628-
dialogContentArgs?.tokenTransfer
629-
? transferTxResult || multiTransferTxResult
630-
: txResult
631-
)
636+
getTokenIdAfterIssuingOrCreating(getTxResultVariant())
632637
}
633638
/>
634639
</OperationsStateDialogProvider>

components/operations/general/multi-transfer.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,10 @@ const formSchema = z
3333
'Please provide a number, should be a proper Non-fungible ESDT amount. 1 in case of NFTs.'
3434
),
3535
semiFungibleTokenId: z.string(),
36-
semiFungibleAmount: z
37-
.string()
38-
.refine(
39-
(value) => value === '' || !new BigNumber(value).isNaN(),
40-
'Please provide a number, should be a proper Semi-fungible ESDT amount for that specific token, bigger than 0.'
41-
),
36+
semiFungibleAmount: z.string().refine((value) => {
37+
const num = new BigNumber(value);
38+
return num.isInteger() && num.isGreaterThan(0);
39+
}, 'Please provide an integer number, should be a proper SFT amount for that specific token, bigger than 0.'),
4240
metaTokenId: z.string(),
4341
metaAmount: z
4442
.string()

components/operations/operations-content-map.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type OperationsContentMap = Record<
5151
additionalInfo?: string;
5252
showTokenId?: boolean;
5353
tokenTransfer?: boolean;
54+
multiTokenTransfer?: boolean;
5455
}
5556
>
5657
>;
@@ -509,7 +510,7 @@ export const getOperationsContentsMap = ({
509510
<MultiTransfer multiTransfer={multiTransfer} close={closeDialog} />
510511
),
511512
additionalInfo: 'You have sent multiple ESDTs.',
512-
tokenTransfer: true,
513+
multiTokenTransfer: true,
513514
},
514515
signMessage: {
515516
component: <SignMessage />,

components/operations/operations-status-dialog.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export type DialogStateContentArgs = {
6060
showTokenId?: boolean;
6161
additionalInfo?: string;
6262
tokenTransfer?: boolean;
63+
multiTokenTransfer?: boolean;
6364
};
6465

6566
type OperationsStateDialogWrapperProps = {

components/operations/semi-fungible-tokens/send.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@ import BigNumber from 'bignumber.js';
2020
const formSchema = z.object({
2121
tokenId: z.string().min(1, 'The field is required'),
2222
address: z.string().min(1, 'The field is required'),
23-
amount: z
24-
.string()
25-
.refine(
26-
(value) => !new BigNumber(value).isNaN(),
27-
'Please provide a number, should be a proper SFT amount for that specific token, bigger than 0.'
28-
),
23+
amount: z.string().refine((value) => {
24+
const num = new BigNumber(value);
25+
return num.isInteger() && num.isGreaterThan(0);
26+
}, 'Please provide an integer number, should be a proper SFT amount for that specific token, bigger than 0.'),
2927
});
3028

3129
export const Send = ({ transfer, close }: OperationContentProps) => {

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"class-variance-authority": "0.7.0",
4141
"clsx": "2.1.0",
4242
"keccak": "3.0.4",
43-
"lucide-react": "0.303.0",
43+
"lucide-react": "0.331.0",
4444
"next": "14.1.0",
4545
"next-themes": "0.2.1",
4646
"qrcode": "1.5.3",

0 commit comments

Comments
 (0)