Skip to content

Commit

Permalink
changed decimals of stakingAmount in comparisons in StakingModal (#110)
Browse files Browse the repository at this point in the history
* changed decimals of stakingAmount in comparisons in StakingModal

* remove console log

* Use bignumber amount for approval check

* removed conversion 10**4

* fixed PieBar length on firefox

* undo piebar fix

* remove comments, fix conversions

* change variable names in useStakeAst and useUnstakeAst

* fix var names in useApproveAst

---------

Co-authored-by: greypixel <greypixel@gpxl.tech>
  • Loading branch information
mikestarrdev and gpxl-dev committed Oct 6, 2023
1 parent a616302 commit 827eb41
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 22 deletions.
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

0 comments on commit 827eb41

Please sign in to comment.