import { useCallback } from "react"; import starkString from "starkstring"; import { useGetCapitalV1PublicCurrencyAll } from "../services"; import { TruncFix } from "../utils"; export const useDisplayDecimalDigits = () => { const { data } = useGetCapitalV1PublicCurrencyAll(); const getDisplayDecimalDigit = useCallback( (targetSymbol: string) => { return ( data?.find(({ symbol }) => symbol === targetSymbol) ?.displayDecimalDigits || 0 ); }, [data], ); /** Usage: truncFix(10.01, 'BTC') or truncFix(10.0100, 2) = 10.01 */ const truncFix = useCallback( (value: number | undefined, symdigit?: string | number): number => { let tmpSymDigit = symdigit ?? 0; if (typeof symdigit === "string") tmpSymDigit = getDisplayDecimalDigit(symdigit || ""); return TruncFix(value || 0, tmpSymDigit as number); }, [getDisplayDecimalDigit], ); /** * Usage: truncFixToCurrency(10.01, 'BTC') or truncFixToCurrency(10.0100, 2) = * 10.01 , using scientificNotationToDecimal */ const truncFixToCurrency = useCallback( (value?: number, symdigit?: string | number) => { let tmpSymDigit = symdigit ?? 0; if (typeof symdigit === "string") tmpSymDigit = getDisplayDecimalDigit(symdigit || ""); return starkString(TruncFix(value || 0, tmpSymDigit as number)) .scientificNotationToDecimal() .toCurrency() .toString(); }, [getDisplayDecimalDigit], ); return { getDisplayDecimalDigit, truncFix, truncFixToCurrency, }; };