Skip to content

Commit

Permalink
fix: APP-571 disable credit card option when available fiat credits a…
Browse files Browse the repository at this point in the history
…re below $0.5 (#2592)
  • Loading branch information
blushi authored Feb 10, 2025
1 parent 6cccc6e commit 5d5d78d
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
CREDITS_AMOUNT,
CURRENCY,
CURRENCY_AMOUNT,
MIN_USD_CURRENCY_AMOUNT,
SELL_ORDERS,
} from 'web-marketplace/src/components/molecules/CreditsAmount/CreditsAmount.constants';
import { z } from 'zod';
Expand Down Expand Up @@ -49,9 +50,13 @@ export const createChooseCreditsFormSchema = ({
},
)
.refine(
value => paymentOption === PAYMENT_OPTIONS.CRYPTO || value >= 0.5,
value =>
paymentOption === PAYMENT_OPTIONS.CRYPTO ||
value >= MIN_USD_CURRENCY_AMOUNT,
{
message: `${i18n._(MIN_USD_AMOUNT)} 0.5`,
message: `${i18n._(
MIN_USD_AMOUNT,
)} ${MIN_USD_CURRENCY_AMOUNT.toLocaleString()}`,
},
),
[CREDITS_AMOUNT]: z.coerce
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import {
UISellOrderInfo,
} from 'pages/Projects/AllProjects/AllProjects.types';
import { getPriceToDisplay } from 'pages/Projects/hooks/useProjectsSellOrders.utils';
import { MIN_USD_CURRENCY_AMOUNT } from 'components/molecules/CreditsAmount/CreditsAmount.constants';
import { CardSellOrder } from 'components/organisms/ChooseCreditsForm/ChooseCreditsForm.types';
import { getDisplayAccount } from 'components/templates/ProjectDetails/ProjectDetails.utils';

Expand Down Expand Up @@ -242,18 +243,33 @@ export const normalizeProjectWithMetadata = ({
export const getCardSellOrders = (
sanityFiatSellOrders: SanityProject['fiatSellOrders'],
sellOrders: UISellOrderInfo[],
) =>
(sanityFiatSellOrders
?.map(fiatOrder => {
const sellOrder = sellOrders.find(
cryptoOrder => cryptoOrder.id.toString() === fiatOrder?.sellOrderId,
);
if (sellOrder) {
return {
...fiatOrder,
...sellOrder,
};
}
return null;
})
.filter(Boolean) || []) as CardSellOrder[];
) => {
const cardSellOrders = (
sanityFiatSellOrders
? sanityFiatSellOrders.reduce((acc: CardSellOrder[], fiatOrder) => {
const sellOrder = sellOrders.find(
cryptoOrder => cryptoOrder.id.toString() === fiatOrder?.sellOrderId,
);
if (sellOrder) {
acc.push({ ...fiatOrder, ...sellOrder } as CardSellOrder);
}
return acc;
}, [])
: []
).sort((a, b) => a.usdPrice - b.usdPrice);

let hasMinUsdAmount = false;
let currentSum = 0;

for (const order of cardSellOrders) {
currentSum = Number(
(currentSum + order.usdPrice * Number(order.quantity)).toFixed(2),
);
if (currentSum >= MIN_USD_CURRENCY_AMOUNT) {
hasMinUsdAmount = true;
break;
}
}

return hasMinUsdAmount ? cardSellOrders : [];
};
2 changes: 1 addition & 1 deletion web-marketplace/src/pages/BuyCredits/BuyCredits.utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const getOrderedSellOrders = (
filteredCryptoSellOrders: UISellOrderInfo[],
): UISellOrderInfo[] => {
return isCard
? cardSellOrders.sort((a, b) => a.usdPrice - b.usdPrice)
? cardSellOrders // already sorted in getCardSellOrders
: filteredCryptoSellOrders?.sort(
(a, b) => Number(a.askAmount) - Number(b.askAmount),
) || [];
Expand Down

0 comments on commit 5d5d78d

Please sign in to comment.