🚧 withdrwal-safety client calls
This commit is contained in:
parent
453d7c545e
commit
c4b42a77df
@ -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,
|
||||
};
|
||||
|
||||
@ -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,
|
||||
};
|
||||
};
|
||||
|
||||
37
src/hooks/useWithdrawalInfo.ts
Normal file
37
src/hooks/useWithdrawalInfo.ts
Normal 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,
|
||||
};
|
||||
};
|
||||
@ -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 =
|
||||
|
||||
Loading…
Reference in New Issue
Block a user