diff --git a/src/components/ProjectCard.tsx b/src/components/ProjectCard.tsx
index 98aa77b..384e72d 100644
--- a/src/components/ProjectCard.tsx
+++ b/src/components/ProjectCard.tsx
@@ -357,7 +357,7 @@ const ProjectCard = (props: ProjectCardProps) => {
: null}
{
// Update the stored scroll position
scrollPositionRef.current = (e.target as HTMLElement).scrollTop;
diff --git a/src/modals/ManageStaking.tsx b/src/modals/ManageStaking.tsx
index 0073dcb..c3710ed 100644
--- a/src/modals/ManageStaking.tsx
+++ b/src/modals/ManageStaking.tsx
@@ -269,14 +269,20 @@ const ManageStaking = (props: { isOpen: boolean; }) => {
if (!metadata) throw new Error(NO_METADATA_ERROR);
const availableBalance = new BigNumber(metadata.availableBalance as string)
- .dividedBy(new BigNumber(10).pow(12))
- .toString();
+ .dividedBy(new BigNumber(10).pow(12));
- const balance = altBalance ? coreStakedBalance : availableBalance;
+ let balance = altBalance ? coreStakedBalance : availableBalance.toString();
+ // Remove commas before performing the subtraction
+ balance = balance.replace(/,/g, '');
+
+ // Subtract 1 TNKR to cover fees if balance is greater than 1
+ const balanceToStake = new BigNumber(balance).gte(new BigNumber(1))
+ ? new BigNumber(balance).minus(new BigNumber(1)).toString()
+ : balance;
stakeForm.setValue(
"amount",
- balance
+ balanceToStake
);
stakeForm.trigger("amount", {
@@ -287,11 +293,21 @@ const ManageStaking = (props: { isOpen: boolean; }) => {
const handleUnstakeMax = () => {
if (!metadata) throw new Error(NO_METADATA_ERROR);
+ const totalUserStaked = new BigNumber(metadata.totalUserStaked as string)
+ .dividedBy(new BigNumber(10).pow(12));
+
+ let balance = totalUserStaked.toString();
+ // Remove commas before performing the subtraction
+ balance = balance.replace(/,/g, '');
+
+ // Subtract 1 TNKR to cover fees if balance is greater than 1
+ const balanceToUnstake = new BigNumber(balance).gt(1)
+ ? new BigNumber(balance).minus(1).toString()
+ : balance;
+
unstakeForm.setValue(
"amount",
- new BigNumber(metadata.totalUserStaked as string)
- .dividedBy(new BigNumber(10).pow(12))
- .toString()
+ balanceToUnstake
);
unstakeForm.trigger("amount", {
@@ -367,11 +383,27 @@ const ManageStaking = (props: { isOpen: boolean; }) => {
const currentAmount = parseFloat(stakeForm.getValues('amount'));
const maxBalance = parseFloat(coreStakedBalance);
if (currentAmount > maxBalance) {
- stakeForm.setValue('amount', maxBalance.toString());
+ stakeForm.setValue('amount', maxBalance.toString().replace(/,/g, ''));
}
}
}, [altBalance, coreStakedBalance, stakeForm]);
+ // Watch for changes in stakeForm.amount
+ useEffect(() => {
+ const value = stakeForm.getValues('amount');
+ if (value && !/^[0-9]*\.?[0-9]*$/.test(value)) {
+ stakeForm.setValue('amount', value.replace(/[^0-9.]/g, ''));
+ }
+ }, [stakeForm, watchedStakeAmount]);
+
+ // Watch for changes in unstakeForm.amount
+ useEffect(() => {
+ const value = unstakeForm.getValues('amount');
+ if (value && !/^[0-9]*\.?[0-9]*$/.test(value)) {
+ unstakeForm.setValue('amount', value.replace(/[^0-9.]/g, ''));
+ }
+ }, [unstakeForm, watchedUnstakeAmount]);
+
const RestakingDropdown = memo(() => {
const list = stakingCores.map(core => ({ id: core.key, userStaked: totalUserStakedData[core.key], name: core.metadata.name }) as SelectedCoreInfo);
if (!list || list.length === 0) return null;
@@ -491,8 +523,7 @@ const ManageStaking = (props: { isOpen: boolean; }) => {
+ })} type="text" id="stakeAmount" />
{
+ })} type="text" id="unstakeAmount" />
{
return (
- <>
-
-
Page not found
+
+
+
+ Page not found
+
-
+
I think you're lost. Let's get you back on track.{" "}
Go to Home
- >
+
);
};