diff --git a/src/constants/numbers.ts b/src/constants/numbers.ts index e515d83..dc6914d 100644 --- a/src/constants/numbers.ts +++ b/src/constants/numbers.ts @@ -22,4 +22,5 @@ export enum NumberSign { // Deposit/Withdraw export const MAX_CCTP_TRANSFER_AMOUNT = 1_000_000; +export const MIN_CCTP_TRANSFER_AMOUNT = 10; export const MAX_PRICE_IMPACT = 0.02; // 2% diff --git a/src/hooks/tradingView/useChartMarketAndResolution.ts b/src/hooks/tradingView/useChartMarketAndResolution.ts index 9343b2d..a6b5451 100644 --- a/src/hooks/tradingView/useChartMarketAndResolution.ts +++ b/src/hooks/tradingView/useChartMarketAndResolution.ts @@ -27,19 +27,26 @@ export const useChartMarketAndResolution = ({ const dispatch = useDispatch(); const currentMarketId: string = useSelector(getCurrentMarketId) || DEFAULT_MARKETID; + const selectedResolution: string = useSelector(getSelectedResolutionForMarket(currentMarketId)) || DEFAULT_RESOLUTION; const chart = isWidgetReady ? tvWidget?.chart() : undefined; const chartResolution = chart?.resolution?.(); + /** + * @description Hook to handle changing markets - intentionally should avoid triggering on change of resolutions. + */ useEffect(() => { if (currentMarketId && isWidgetReady) { const resolution = savedResolution || selectedResolution; tvWidget?.setSymbol(currentMarketId, resolution as ResolutionString, () => {}); } - }, [currentMarketId, isWidgetReady, savedResolution, selectedResolution]); + }, [currentMarketId, isWidgetReady]); + /** + * @description Hook to handle changing chart resolution + */ useEffect(() => { if (chartResolution) { if (chartResolution !== selectedResolution) { diff --git a/src/views/forms/AccountManagementForms/WithdrawForm.tsx b/src/views/forms/AccountManagementForms/WithdrawForm.tsx index 33f26ef..58ff137 100644 --- a/src/views/forms/AccountManagementForms/WithdrawForm.tsx +++ b/src/views/forms/AccountManagementForms/WithdrawForm.tsx @@ -11,7 +11,12 @@ import { ButtonSize } from '@/constants/buttons'; import { STRING_KEYS } from '@/constants/localization'; import { ENVIRONMENT_CONFIG_MAP, isMainnet } from '@/constants/networks'; import { TransferNotificationTypes } from '@/constants/notifications'; -import { MAX_CCTP_TRANSFER_AMOUNT, MAX_PRICE_IMPACT, NumberSign } from '@/constants/numbers'; +import { + MAX_CCTP_TRANSFER_AMOUNT, + MAX_PRICE_IMPACT, + MIN_CCTP_TRANSFER_AMOUNT, + NumberSign, +} from '@/constants/numbers'; import { useAccounts, @@ -329,6 +334,12 @@ export const WithdrawForm = () => { }, }); } + if ( + !debouncedAmountBN.isZero() && + MustBigNumber(debouncedAmountBN).lte(MIN_CCTP_TRANSFER_AMOUNT) + ) { + return 'Amount must be greater than 10 USDC'; + } } if (isMainnet && MustBigNumber(summary?.aggregatePriceImpact).gte(MAX_PRICE_IMPACT)) {