diff --git a/packages/profile/src/components/inventory/token/helper.ts b/packages/profile/src/components/inventory/token/helper.ts index ce71e58ce..3f45a9bb6 100644 --- a/packages/profile/src/components/inventory/token/helper.ts +++ b/packages/profile/src/components/inventory/token/helper.ts @@ -1,11 +1,10 @@ -export const formatBalance = (balance: string) => { +export const formatBalance = (balance: string, exludes?: string[]) => { // Catch prefix until number - let prefix = ""; - for (const char of balance) { - if (!isNaN(parseInt(char))) { - break; - } - prefix += char; - } - return `${prefix}${parseFloat(balance.replace(prefix, "")).toLocaleString()}`; + const prefix = balance.slice(0, balance.search(/\d/)); + // Exclude each substring from prefix + const cleaned = + exludes?.reduce((prev, curr) => prev.replace(curr, ""), prefix) ?? prefix; + return `${cleaned}${parseFloat( + balance.replace(prefix, ""), + ).toLocaleString()}`; }; diff --git a/packages/profile/src/components/inventory/token/send.tsx b/packages/profile/src/components/inventory/token/send.tsx index 7b208f05e..bd2a3ecee 100644 --- a/packages/profile/src/components/inventory/token/send.tsx +++ b/packages/profile/src/components/inventory/token/send.tsx @@ -81,6 +81,17 @@ export function SendToken() { }, }); + const handleMax = useCallback( + ( + e: React.MouseEvent | React.MouseEvent, + ) => { + e.preventDefault(); + if (!t) return; + form.setValue("amount", parseFloat(t.balance.formatted)); + }, + [t, form], + ); + const onSubmit = useCallback( async (values: z.infer) => { if (!t) return; @@ -165,14 +176,12 @@ export function SendToken() { Balance:
- form.setValue( - "amount", - parseFloat(t.balance.formatted), - ) + onClick={(e: React.MouseEvent) => + handleMax(e) } > - {formatBalance(t.balance.formatted)} {t.meta.symbol} + {formatBalance(t.balance.formatted, ["~"])}{" "} + {t.meta.symbol}
@@ -186,10 +195,19 @@ export function SendToken() { className="[&::-webkit-inner-spin-button]:appearance-none" /> {countervalue && ( - + {formatBalance(countervalue.formatted)} )} + diff --git a/packages/profile/src/components/inventory/token/token.tsx b/packages/profile/src/components/inventory/token/token.tsx index cd1d2c5ac..8d0802445 100644 --- a/packages/profile/src/components/inventory/token/token.tsx +++ b/packages/profile/src/components/inventory/token/token.tsx @@ -131,7 +131,7 @@ function ERC20() { t.balance === undefined ? ( ) : ( - formatBalance(t.balance.formatted) + formatBalance(t.balance.formatted, ["~"]) ) } ${t.meta.symbol}`} description={ diff --git a/packages/profile/src/components/inventory/token/tokens.tsx b/packages/profile/src/components/inventory/token/tokens.tsx index f4bbe3980..5ad470d3f 100644 --- a/packages/profile/src/components/inventory/token/tokens.tsx +++ b/packages/profile/src/components/inventory/token/tokens.tsx @@ -77,15 +77,17 @@ function TokenCardContent({ onMouseLeave={() => setHover(false)} >
- +
+ +
-

{formatBalance(token.balance.formatted)}

+

{formatBalance(token.balance.formatted, ["~"])}

{token.meta.symbol}