Skip to content

Commit

Permalink
feat: update decimals handling
Browse files Browse the repository at this point in the history
  • Loading branch information
icfor committed Apr 17, 2024
1 parent 787ae69 commit eb773e6
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 26 deletions.
19 changes: 13 additions & 6 deletions src/features/staking/components/modals/staking.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@ import { setModalOpened } from "../../context/reducer";
import { getTokensAvailableBG } from "../../context/selectors";
import { getXionCoin } from "../../lib/core/coins";
import type { StakeAddresses } from "../../lib/core/tx";
import { formatToSmallDisplay } from "../../lib/formatters";
import {
formatCoin,
formatToSmallDisplay,
formatXionToUSD,
} from "../../lib/formatters";

type Step = "completed" | "input" | "review";

Expand Down Expand Up @@ -215,15 +219,18 @@ const StakingModal = () => {
</div>
{availableTokens &&
(() => {
const availableUSD = availableTokens.times(xionToUSD);
const availableTokensCoin = {
amount: availableTokens.toString(),
denom: "XION",
};

return (
<div className="mt-[40px] flex w-full flex-col items-center justify-center gap-[12px] uppercase">
<Heading8>Available for delegation (XION)</Heading8>
<Heading2>
{formatToSmallDisplay(availableTokens)}
</Heading2>
<Heading8>${formatToSmallDisplay(availableUSD)}</Heading8>
<Heading2>{formatCoin(availableTokensCoin)}</Heading2>
<Heading8>
{formatXionToUSD(availableTokensCoin)}
</Heading8>
</div>
);
})()}
Expand Down
31 changes: 12 additions & 19 deletions src/features/staking/components/modals/unstaking.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@ import { setModalOpened } from "../../context/reducer";
import { getTotalDelegation } from "../../context/selectors";
import { getXionCoin } from "../../lib/core/coins";
import type { StakeAddresses } from "../../lib/core/tx";
import { formatToSmallDisplay, formatXionToUSD } from "../../lib/formatters";
import {
formatCoin,
formatToSmallDisplay,
formatXionToUSD,
} from "../../lib/formatters";

type Step = "completed" | "input" | "review";

Expand Down Expand Up @@ -217,24 +221,13 @@ const UnstakingModal = () => {
Unstake From {validator.description.moniker}
</HeroText>
</div>
{delegatedTokens &&
(() => {
const availableUSD = new BigNumber(
delegatedTokens.amount,
).times(xionToUSD);

return (
<div className="mt-[40px] flex w-full flex-col items-center justify-center gap-[12px] uppercase">
<Heading8>Available amount (XION)</Heading8>
<Heading2>
{formatToSmallDisplay(
new BigNumber(delegatedTokens.amount),
)}
</Heading2>
<Heading8>${formatToSmallDisplay(availableUSD)}</Heading8>
</div>
);
})()}
{delegatedTokens && (
<div className="mt-[40px] flex w-full flex-col items-center justify-center gap-[12px] uppercase">
<Heading8>Available amount (XION)</Heading8>
<Heading2>{formatCoin(delegatedTokens)}</Heading2>
<Heading8>{formatXionToUSD(delegatedTokens)}</Heading8>
</div>
)}
<div className="mt-[40px] flex w-full flex-row justify-between">
<div>Amount</div>
{!!amountUSD && (
Expand Down
2 changes: 1 addition & 1 deletion src/features/staking/lib/formatters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export const formatCoin = (coin: Coin, compact?: boolean) => {
return `${formatter.format(amount.toNumber())} ${resolved.denom}`;
}

return `${amount.toFormat(minDisplayedXionDecs)} ${resolved.denom}`;
return `${amount.toFormat(Math.min(minDisplayedXionDecs, amount.decimalPlaces() || Infinity))} ${resolved.denom}`;
};

export const formatVotingPowerPerc = (perc: null | number) => {
Expand Down

0 comments on commit eb773e6

Please sign in to comment.