🚧 withdrwal-safety client calls

This commit is contained in:
jaredvu 2024-02-05 11:32:24 -08:00
parent 453d7c545e
commit c4b42a77df
No known key found for this signature in database
GPG Key ID: B9FE2F3F0A5D523C
4 changed files with 57 additions and 0 deletions

View File

@ -26,6 +26,7 @@ import { useStringGetter } from './useStringGetter';
import { useSubaccount } from './useSubaccount';
import { useTradeFormInputs } from './useTradeFormInputs';
import { useURLConfigs } from './useURLConfigs';
import { useWithdrawalInfo } from './useWithdrawalInfo';
export {
useApiState,
@ -56,4 +57,5 @@ export {
useSubaccount,
useTradeFormInputs,
useURLConfigs,
useWithdrawalInfo,
};

View File

@ -249,6 +249,17 @@ const useDydxClientContext = () => {
[compositeClient]
);
const getWithdrawalAndTransferGatingStatus = useCallback(async () => {
return await compositeClient?.validatorClient.get.GetWithdrawalAndTransferGatingStatus();
}, [compositeClient]);
const getWithdrawalCapacityByDenom = useCallback(
async ({ denom }: { denom: string }) => {
return await compositeClient?.validatorClient.get.getWithdrawalCapacityByDenom(denom);
},
[compositeClient]
);
return {
// Client initialization
connect: setNetworkConfig,
@ -265,5 +276,7 @@ const useDydxClientContext = () => {
requestAllGovernanceProposals,
getCandlesForDatafeed,
screenAddresses,
getWithdrawalAndTransferGatingStatus,
getWithdrawalCapacityByDenom,
};
};

View File

@ -0,0 +1,37 @@
import { useQuery } from 'react-query';
import { useDydxClient } from './useDydxClient';
import { useTokenConfigs } from './useTokenConfigs';
import { encodeJson } from '@dydxprotocol/v4-client-js';
import { ByteArrayEncoding } from '@dydxprotocol/v4-client-js/build/src/lib/helpers';
export const useWithdrawalInfo = () => {
const { getWithdrawalAndTransferGatingStatus, getWithdrawalCapacityByDenom } = useDydxClient();
const { usdcDenom } = useTokenConfigs();
const { data: usdcWithdawalCapacity } = useQuery({
queryKey: 'usdcWithdrawalCapacity',
queryFn: async () => {
try {
const response = await getWithdrawalCapacityByDenom({ denom: usdcDenom });
return JSON.parse(encodeJson(response, ByteArrayEncoding.BIGINT));
} catch (error) {
console.error('error');
}
},
refetchInterval: 60_000,
staleTime: 60_000,
});
const { data: withdrawalAndTransferGatingStatus } = useQuery({
queryKey: 'withdrawalTransferGateStatus',
queryFn: getWithdrawalAndTransferGatingStatus,
refetchInterval: 60_000,
staleTime: 60_000,
});
return {
usdcWithdawalCapacity,
withdrawalAndTransferGatingStatus,
};
};

View File

@ -21,6 +21,7 @@ import {
useSelectedNetwork,
useStringGetter,
useSubaccount,
useWithdrawalInfo,
} from '@/hooks';
import { useLocalNotifications } from '@/hooks/useLocalNotifications';
@ -75,6 +76,8 @@ export const WithdrawForm = () => {
const [withdrawAmount, setWithdrawAmount] = useState('');
const [slippage, setSlippage] = useState(isCctp ? 0 : 0.01); // 0.1% slippage
const debouncedAmount = useDebounce<string>(withdrawAmount, 500);
const { usdcWithdawalCapacity, withdrawalAndTransferGatingStatus } = useWithdrawalInfo();
console.log({ usdcWithdawalCapacity, withdrawalAndTransferGatingStatus });
const isValidAddress = toAddress && isAddress(toAddress);
@ -348,6 +351,8 @@ export const WithdrawForm = () => {
sanctionedAddresses,
stringGetter,
summary,
withdrawalCapacity,
withdrawalTransferGateStatus,
]);
const isDisabled =