From 4f58a63cb604c34beb8855367e102bf725d13079 Mon Sep 17 00:00:00 2001 From: Yana Date: Wed, 8 Nov 2023 16:51:38 +0000 Subject: [PATCH] WIP --- .../Delegations/components/DelegateModal.tsx | 53 ++++++------------- .../components/Delegations/utils/common.ts | 39 ++++++-------- explorer/src/components/TableToolbar.tsx | 3 +- 3 files changed, 34 insertions(+), 61 deletions(-) diff --git a/explorer/src/components/Delegations/components/DelegateModal.tsx b/explorer/src/components/Delegations/components/DelegateModal.tsx index daf8481296..70b8893643 100644 --- a/explorer/src/components/Delegations/components/DelegateModal.tsx +++ b/explorer/src/components/Delegations/components/DelegateModal.tsx @@ -36,7 +36,7 @@ export const DelegateModal: FCWithChildren<{ header?: string; buttonText?: string; rewardInterval: string; - accountBalance?: string; + // accountBalance?: string; estimatedReward?: number; profitMarginPercentage?: string | null; nodeUptimePercentage?: number | null; @@ -55,7 +55,7 @@ export const DelegateModal: FCWithChildren<{ buttonText, identityKey: initialIdentityKey, rewardInterval, - accountBalance, + // accountBalance, estimatedReward, denom, profitMarginPercentage, @@ -99,39 +99,15 @@ export const DelegateModal: FCWithChildren<{ } }, [address, getCosmWasmClient]); - const handleCheckStakeSaturation = async (newMixId: number) => { - try { - const newSaturation = decimalToFloatApproximation( - (await getMixnodeStakeSaturation(newMixId)).uncapped_saturation, - ); - if (newSaturation && newSaturation > 1) { - const saturationPercentage = Math.round(newSaturation * 100); - return { isOverSaturated: true, saturationPercentage }; - } - return { isOverSaturated: false, saturationPercentage: undefined }; - } catch (e) { - Console.error('Error fetching the saturation, error:', e); - return { isOverSaturated: false, saturationPercentage: undefined }; - } - }; - const validate = async () => { let newValidatedValue = true; let errorAmountMessage; let errorIdentityKeyMessage; + const tokenPool = 'balance'; - if (!identityKey || !validateKey(identityKey, 32)) { + if (!identityKey) { newValidatedValue = false; - errorIdentityKeyMessage = undefined; - console.log('!identityKey :>> ', identityKey); - } - - if (identityKey && mixId && validateKey(identityKey, 32)) { - const { isOverSaturated, saturationPercentage } = await handleCheckStakeSaturation(mixId); - if (isOverSaturated) { - newValidatedValue = false; - errorIdentityKeyMessage = `This node is over saturated (${saturationPercentage}%), please select another node`; - } + errorIdentityKeyMessage = 'Please enter a valid identity key'; } if (amount && !(await validateAmount(amount, '0'))) { @@ -148,10 +124,19 @@ export const DelegateModal: FCWithChildren<{ newValidatedValue = false; } - if (!mixId) { - newValidatedValue = false; + if (amount) { + const hasEnoughTokens = checkTokenBalance(tokenPool, amount, balance.data || '0'); + + if (!hasEnoughTokens) { + errorAmountMessage = 'Not enough funds'; + newValidatedValue = false; + } } + // if (!mixId) { + // newValidatedValue = false; + // } + setErrorIdentityKey(errorIdentityKeyMessage); if (mixIdError && !errorIdentityKeyMessage) { setErrorIdentityKey(mixIdError); @@ -168,12 +153,6 @@ export const DelegateModal: FCWithChildren<{ const handleConfirm = async ({ mixId: id, value }: { mixId: number; value: DecCoin }) => { const tokenPool = 'balance'; - const hasEnoughTokens = await checkTokenBalance(tokenPool, value.amount, balance.data || '0'); - - if (!hasEnoughTokens) { - setErrorAmount('Not enough funds'); - return; - } if (tokenPool === 'balance') { getFee(simulateDelegateToMixnode, { mixId: id, amount: value }); diff --git a/explorer/src/components/Delegations/utils/common.ts b/explorer/src/components/Delegations/utils/common.ts index ff44265e99..c738df4d2a 100644 --- a/explorer/src/components/Delegations/utils/common.ts +++ b/explorer/src/components/Delegations/utils/common.ts @@ -4,13 +4,7 @@ import Big from 'big.js'; import { valid } from 'semver'; import { add, format, fromUnixTime } from 'date-fns'; import { DecCoin, isValidRawCoin, MixNodeCostParams } from '@nymproject/types'; -import { - getCurrentInterval, - getDefaultMixnodeCostParams, - getLockedCoins, - getSpendableCoins, - userBalance, -} from '../requests'; +import { getCurrentInterval, getDefaultMixnodeCostParams, getLockedCoins, getSpendableCoins } from '../requests'; import { Console } from './console'; export type TPoolOption = 'balance' | 'locked'; @@ -24,17 +18,17 @@ export const uNYMtoNYM = (unym: string, rounding = 6) => { }; }; -export const checkHasEnoughFunds = async (balance: string, allocationValue: string): Promise => { - try { - // const walletValue = await userBalance(); +// export const checkHasEnoughFunds = async (balance: string, allocationValue: string): Promise => { +// try { +// // const walletValue = await userBalance(); - const remainingBalance = +balance - +allocationValue; - return remainingBalance >= 0; - } catch (e) { - Console.log(e as string); - return false; - } -}; +// const remainingBalance = +balance - +allocationValue; +// return remainingBalance >= 0; +// } catch (e) { +// Console.log(e as string); +// return false; +// } +// }; export const checkHasEnoughLockedTokens = async (allocationValue: string) => { try { @@ -48,14 +42,15 @@ export const checkHasEnoughLockedTokens = async (allocationValue: string) => { return false; }; -export const checkTokenBalance = async (tokenPool: TPoolOption, amount: string, balance: string) => { +export const checkTokenBalance = (tokenPool: TPoolOption, amount: string, balance: string) => { let hasEnoughFunds = false; - if (tokenPool === 'locked') { - hasEnoughFunds = await checkHasEnoughLockedTokens(amount); - } + // if (tokenPool === 'locked') { + // hasEnoughFunds = await checkHasEnoughLockedTokens(amount); + // } if (tokenPool === 'balance') { - hasEnoughFunds = await checkHasEnoughFunds(balance, amount); + const remainingBalance = +balance - +amount; + hasEnoughFunds = remainingBalance >= 0; } return hasEnoughFunds; diff --git a/explorer/src/components/TableToolbar.tsx b/explorer/src/components/TableToolbar.tsx index bbb6141844..51ab38e191 100644 --- a/explorer/src/components/TableToolbar.tsx +++ b/explorer/src/components/TableToolbar.tsx @@ -4,7 +4,6 @@ import Select, { SelectChangeEvent } from '@mui/material/Select'; import { Filters } from './Filters/Filters'; import { useIsMobile } from '../hooks/useIsMobile'; import { DelegateModal } from './Delegations/components/DelegateModal'; -import { AppContext } from './Delegations/context/main'; import { ChainProvider } from '@cosmos-kit/react'; import { assets, chains } from 'chain-registry'; import { wallets as keplr } from '@cosmos-kit/keplr'; @@ -148,7 +147,7 @@ export const TableToolbar: FCWithChildren = ({ header="Delegate" buttonText="Delegate stake" denom={'nym'} // clientDetails?.display_mix_denom || 'nym'} - accountBalance={'balance?.printable_balance' || 'error reading balance'} + // accountBalance={'balance?.printable_balance' || 'error reading balance'} rewardInterval="weekly" hasVestingContract={true} // {...storybookStyles(theme, isStorybook)}