Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

changed decimals of stakingAmount in comparisons in StakingModal #110

Merged
merged 9 commits into from
Oct 6, 2023
28 changes: 15 additions & 13 deletions src/features/staking/StakingModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,49 +22,51 @@ export const StakingModal = () => {

const formReturn = useForm();
const { getValues } = formReturn;
const stakingAmount = getValues().stakingAmount * 10 ** 4;
const stakingAmountFormatted = getValues().stakingAmount;

const isSupportedChain = useIsSupportedChain();
const { switchNetwork } = useSwitchNetwork();

// This state tracks whether the last transaction was an approval.
const [isApproval, setIsApproval] = useState<boolean>(false);

const { astAllowanceFormatted: astAllowance } = useAstAllowance();
const { astAllowance } = useAstAllowance();

const {
unstakableSastBalanceRaw: unstakableSastBalance,
astBalanceRaw: astBalance,
} = useTokenBalances();

// stakingAmount default is NaN. Wagmi hooks need to validate that stakingAmount exists
const validNumberInput = !!stakingAmount && Number(stakingAmount) > 0;
const validNumberInput =
!!stakingAmountFormatted && Number(stakingAmountFormatted) * 10 ** 4 > 0;

const needsApproval =
txType === TxType.STAKE &&
Number(astAllowance) < Number(stakingAmount) &&
Number(astAllowance) < Number(stakingAmountFormatted) * 10 ** 4 &&
validNumberInput;

const canStake =
txType === TxType.STAKE && !needsApproval && validNumberInput;

const canUnstake =
Number(stakingAmount) <= Number(unstakableSastBalance) &&
Number(stakingAmountFormatted) * 10 ** 4 <= Number(unstakableSastBalance) &&
txType === TxType.UNSTAKE &&
validNumberInput;

const isInsufficientBalance =
txType === TxType.STAKE && stakingAmount
? Number(stakingAmount) > Number(astBalance)
: Number(stakingAmount) > Number(unstakableSastBalance);
txType === TxType.STAKE && stakingAmountFormatted
? Number(stakingAmountFormatted) * 10 ** 4 > Number(astBalance)
: Number(stakingAmountFormatted) * 10 ** 4 >
Number(unstakableSastBalance);

const {
writeAsync: approveAst,
data: dataApproveAst,
reset: resetApproveAst,
isLoading: approvalAwaitingSignature,
} = useApproveAst({
stakingAmount: Number(stakingAmount) || 0,
stakingAmountFormatted: Number(stakingAmountFormatted) || 0,
enabled: needsApproval,
});

Expand All @@ -74,7 +76,7 @@ export const StakingModal = () => {
data: dataStakeAst,
isLoading: stakeAwaitingSignature,
} = useStakeAst({
stakingAmount: Number(stakingAmount) || 0,
stakingAmountFormatted: Number(stakingAmountFormatted) || 0,
enabled: canStake,
});

Expand All @@ -84,7 +86,7 @@ export const StakingModal = () => {
data: dataUnstakeSast,
isLoading: unstakeAwaitingSignature,
} = useUnstakeSast({
unstakingAmount: Number(stakingAmount) || 0,
unstakingAmountFormatted: Number(stakingAmountFormatted) || 0,
canUnstake: canUnstake,
});

Expand Down Expand Up @@ -123,7 +125,7 @@ export const StakingModal = () => {
insufficientBalance: isInsufficientBalance,
});

const isAmountInvalid = Number(stakingAmount) <= 0;
const isAmountInvalid = Number(stakingAmountFormatted) * 10 ** 4 <= 0;

const isStakeButtonDisabled = isAmountInvalid || isInsufficientBalance;

Expand Down Expand Up @@ -185,7 +187,7 @@ export const StakingModal = () => {
successContent={
<span>
You successfully {verb}{" "}
<span className="text-white">{stakingAmount} AST</span>
<span className="text-white">{stakingAmountFormatted} AST</span>
</span>
}
failureContent={"Your transaction has failed"}
Expand Down
6 changes: 3 additions & 3 deletions src/features/staking/hooks/useApproveAst.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import { useContractAddresses } from "../../../config/hooks/useContractAddress";
import { astAbi } from "../../../contracts/astAbi";

export const useApproveAst = ({
stakingAmount,
stakingAmountFormatted,
enabled = true,
}: {
stakingAmount: number;
stakingAmountFormatted: number;
enabled?: boolean;
}) => {
const [airSwapToken] = useContractAddresses([ContractTypes.AirSwapToken], {
Expand All @@ -24,7 +24,7 @@ export const useApproveAst = ({
},
);

const stakingAmountConversion = new BigNumber(stakingAmount)
const stakingAmountConversion = new BigNumber(stakingAmountFormatted)
.multipliedBy(10 ** 4)
.integerValue()
.toString();
Expand Down
6 changes: 3 additions & 3 deletions src/features/staking/hooks/useStakeAst.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import { useContractAddresses } from "../../../config/hooks/useContractAddress";
import { stakingAbi } from "../../../contracts/stakingAbi";

export const useStakeAst = ({
stakingAmount,
stakingAmountFormatted,
enabled = true,
}: {
stakingAmount: number;
stakingAmountFormatted: number;
enabled?: boolean;
}) => {
const [airSwapStaking] = useContractAddresses(
Expand All @@ -19,7 +19,7 @@ export const useStakeAst = ({
},
);

const stakingAmountConversion = new BigNumber(stakingAmount)
const stakingAmountConversion = new BigNumber(stakingAmountFormatted)
.multipliedBy(10 ** 4)
.integerValue()
.toString();
Expand Down
6 changes: 3 additions & 3 deletions src/features/staking/hooks/useUnstakeSast.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ import { stakingAbi } from "../../../contracts/stakingAbi";
* @param canUnstake - boolean value, true if unstakingAmount (stakingAmount) > 0 and if unstakigAmount (stakingAmount) <= sAST balance
*/
export const useUnstakeSast = ({
unstakingAmount,
unstakingAmountFormatted,
canUnstake,
}: {
unstakingAmount: number;
unstakingAmountFormatted: number;
canUnstake: boolean;
}) => {
const [airSwapStaking] = useContractAddresses(
Expand All @@ -24,7 +24,7 @@ export const useUnstakeSast = ({
},
);

const unstakingAmountConversion = new BigNumber(unstakingAmount)
const unstakingAmountConversion = new BigNumber(unstakingAmountFormatted)
.multipliedBy(10 ** 4)
.integerValue()
.toString();
Expand Down
Loading