From 34209bee2994a609cbacbe23c10455402c376581 Mon Sep 17 00:00:00 2001 From: Trevor Scandalios <5877597+scandycuz@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:01:43 -0700 Subject: [PATCH] resolves incorrect newm purchase fee (#757) --- .../modals/PurchaseStreamTokensModal.tsx | 18 ++++++---- .../library/MarketplaceTab/CreateSale.tsx | 2 +- .../library/MarketplaceTab/StartSaleModal.tsx | 15 +++----- .../home/wallet/EarningsSummaryModal.tsx | 8 +++-- .../lib/buttons/DisconnectWalletButton.tsx | 4 +-- packages/utils/src/lib/crypto.ts | 35 +++++++++++++++---- 6 files changed, 54 insertions(+), 28 deletions(-) diff --git a/apps/marketplace/src/components/modals/PurchaseStreamTokensModal.tsx b/apps/marketplace/src/components/modals/PurchaseStreamTokensModal.tsx index fae4c94c..d7d2214b 100644 --- a/apps/marketplace/src/components/modals/PurchaseStreamTokensModal.tsx +++ b/apps/marketplace/src/components/modals/PurchaseStreamTokensModal.tsx @@ -7,7 +7,10 @@ import { formatNewmAmount, formatUsdAmount, } from "@newm-web/utils"; -import { useGetAdaUsdConversionRateQuery } from "../../modules/wallet/api"; +import { + useGetAdaUsdConversionRateQuery, + useGetNewmUsdConversionRateQuery, +} from "../../modules/wallet/api"; interface PurchaseStreamTokensModalProps { readonly isLoading: boolean; @@ -41,13 +44,13 @@ const PurchaseStreamTokensModal: FunctionComponent< const { data: { usdPrice: adaUsdConversionRate = 0 } = {} } = useGetAdaUsdConversionRateQuery(); const { data: { usdPrice: newmUsdConversionRate = 0 } = {} } = - useGetAdaUsdConversionRateQuery(); + useGetNewmUsdConversionRateQuery(); const newmTransactionFeeUsd = 0.5; const newmTransactionFeeNewm = - (newmTransactionFeeUsd * newmUsdConversionRate) / LOVELACE_CONVERSION; + newmTransactionFeeUsd / (newmUsdConversionRate / LOVELACE_CONVERSION); const adaTransactionFeeUsd = - (TRANSACTION_FEE_IN_ADA * adaUsdConversionRate) / LOVELACE_CONVERSION; + TRANSACTION_FEE_IN_ADA * (adaUsdConversionRate / LOVELACE_CONVERSION); return ( - (≈ { formatUsdAmount(totalPurchaseValueUsd, 2) }){ " " } + (≈{ " " } + { formatUsdAmount(totalPurchaseValueUsd, { precision: 2 }) }){ " " } { formatNewmAmount(totalPurchaseValueNewm) } @@ -156,7 +160,7 @@ const PurchaseStreamTokensModal: FunctionComponent< NEWM fee - { formatUsdAmount(newmTransactionFeeUsd, 2) } + { formatUsdAmount(newmTransactionFeeUsd, { precision: 2 }) } { formatNewmAmount(newmTransactionFeeNewm) } @@ -169,7 +173,7 @@ const PurchaseStreamTokensModal: FunctionComponent< Transaction fee - { formatUsdAmount(adaTransactionFeeUsd, 2) }{ " " } + { formatUsdAmount(adaTransactionFeeUsd, { precision: 2 }) }{ " " } ₳ { TRANSACTION_FEE_IN_ADA } diff --git a/apps/studio/src/pages/home/library/MarketplaceTab/CreateSale.tsx b/apps/studio/src/pages/home/library/MarketplaceTab/CreateSale.tsx index a94ed628..b776e7e0 100644 --- a/apps/studio/src/pages/home/library/MarketplaceTab/CreateSale.tsx +++ b/apps/studio/src/pages/home/library/MarketplaceTab/CreateSale.tsx @@ -140,7 +140,7 @@ export const CreateSale = () => { const formattedPerTokenPrice = saleCurrency === Currency.USD.name ? formatUsdAmount(perTokenPrice) - : formatNewmAmount(perTokenPrice, true); + : formatNewmAmount(perTokenPrice); return (
= ({ { isNEWMPriceUnavailable ? "(≈ $ N/A)" - : `(≈ ${currency(totalSaleValueInUSD, { - precision: 3, - symbol: "$", - }).format()})` } + : `(≈ ${formatUsdAmount(totalSaleValueInUSD)})` } - { formatNewmAmount(totalSaleValueInNEWM, true) } + { formatNewmAmount(totalSaleValueInNEWM) } = ({ { isNEWMPriceUnavailable ? "(≈ $ N/A)" - : `(≈ ${currency(pricePerStreamTokenInUSD, { - precision: 3, - symbol: "$", - }).format()})` } + : `(≈ ${formatUsdAmount(pricePerStreamTokenInUSD)})` } - { formatNewmAmount(totalSaleValueInNEWM / tokensToSell, true) } + { formatNewmAmount(totalSaleValueInNEWM / tokensToSell) } diff --git a/apps/studio/src/pages/home/wallet/EarningsSummaryModal.tsx b/apps/studio/src/pages/home/wallet/EarningsSummaryModal.tsx index 9592e162..893cdca8 100644 --- a/apps/studio/src/pages/home/wallet/EarningsSummaryModal.tsx +++ b/apps/studio/src/pages/home/wallet/EarningsSummaryModal.tsx @@ -77,7 +77,8 @@ const EarningsSummaryModal: FunctionComponent< Earnings - (≈ { formatUsdAmount(unclaimedEarningsInUSD, 2) }){ " " } + (≈{ " " } + { formatUsdAmount(unclaimedEarningsInUSD, { precision: 2 }) }){ " " } { formatNewmAmount(unclaimedEarningsInNEWM) } @@ -93,7 +94,10 @@ const EarningsSummaryModal: FunctionComponent< (≈ { formatUsdAmount(transactionFeeInUSD) }){ " " } - { formatAdaAmount(transactionFeeInADA, false) } ₳ + { formatAdaAmount(transactionFeeInADA, { + includeSymbol: false, + }) }{ " " } + ₳ diff --git a/packages/components/src/lib/buttons/DisconnectWalletButton.tsx b/packages/components/src/lib/buttons/DisconnectWalletButton.tsx index 23ee346a..04911f82 100644 --- a/packages/components/src/lib/buttons/DisconnectWalletButton.tsx +++ b/packages/components/src/lib/buttons/DisconnectWalletButton.tsx @@ -246,7 +246,7 @@ const DisconnectWalletButton: FunctionComponent< fontWeight={ 400 } variant="h5" > - (≈{ formatUsdAmount(newmUsdBalance, 2) }) + (≈{ formatUsdAmount(newmUsdBalance, { precision: 2 }) }) @@ -263,7 +263,7 @@ const DisconnectWalletButton: FunctionComponent< fontWeight={ 400 } variant="h5" > - (≈{ formatUsdAmount(adaUsdBalance, 2) }) + (≈{ formatUsdAmount(adaUsdBalance, { precision: 2 }) }) diff --git a/packages/utils/src/lib/crypto.ts b/packages/utils/src/lib/crypto.ts index ec4cbdb7..bbbb5f06 100644 --- a/packages/utils/src/lib/crypto.ts +++ b/packages/utils/src/lib/crypto.ts @@ -8,16 +8,26 @@ export const NEWM_POLICY_ID = isProd : "769c4c6e9bc3ba5406b9b89fb7beb6819e638ff2e2de63f008d5bcff"; export const NEWM_ASSET_NAME = isProd ? "4e45574d" : "744e45574d"; +interface FormatCurrencyOptions { + readonly includeSymbol?: boolean; + readonly precision?: number; +} + /** * Formats a numerical NEWM amount with the correct decimal * places and symbol. */ -export const formatNewmAmount = (amount?: number, includeSymbol = true) => { +export const formatNewmAmount = ( + amount?: number, + options: FormatCurrencyOptions = { includeSymbol: true, precision: 2 } +) => { if (!amount) return "0 Ɲ"; + const { includeSymbol = true, precision = 2 } = options; + return currency(amount, { pattern: "# !", - precision: 2, + precision, symbol: includeSymbol ? "Ɲ" : "", }).format(); }; @@ -26,12 +36,17 @@ export const formatNewmAmount = (amount?: number, includeSymbol = true) => { * Formats a numerical ADA amount with the correct decimal * places and symbol. */ -export const formatAdaAmount = (amount?: number, includeSymbol = true) => { +export const formatAdaAmount = ( + amount?: number, + options: FormatCurrencyOptions = { includeSymbol: true, precision: 2 } +) => { if (!amount) return "₳ 0"; + const { includeSymbol = true, precision = 2 } = options; + return currency(amount, { pattern: "! #", - precision: 2, + precision, symbol: includeSymbol ? "₳" : "", }).format(); }; @@ -41,10 +56,18 @@ export const formatAdaAmount = (amount?: number, includeSymbol = true) => { * rather than the standard two, based on the exchange rate * for NEWM to USD. */ -export const formatUsdAmount = (amount?: number, precision = 3) => { +export const formatUsdAmount = ( + amount?: number, + options: FormatCurrencyOptions = { includeSymbol: true, precision: 4 } +) => { if (!amount) return "$0"; - return currency(amount, { precision }).format(); + const { includeSymbol = true, precision = 4 } = options; + + return currency(amount, { + precision, + symbol: includeSymbol ? "$" : "", + }).format(); }; export const Currency = {