Skip to content

Commit 5d5d78d

Browse files
authored
fix: APP-571 disable credit card option when available fiat credits are below $0.5 (#2592)
1 parent 6cccc6e commit 5d5d78d

File tree

3 files changed

+39
-18
lines changed

3 files changed

+39
-18
lines changed

web-marketplace/src/components/organisms/ChooseCreditsForm/ChooseCreditsForm.schema.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
CREDITS_AMOUNT,
55
CURRENCY,
66
CURRENCY_AMOUNT,
7+
MIN_USD_CURRENCY_AMOUNT,
78
SELL_ORDERS,
89
} from 'web-marketplace/src/components/molecules/CreditsAmount/CreditsAmount.constants';
910
import { z } from 'zod';
@@ -49,9 +50,13 @@ export const createChooseCreditsFormSchema = ({
4950
},
5051
)
5152
.refine(
52-
value => paymentOption === PAYMENT_OPTIONS.CRYPTO || value >= 0.5,
53+
value =>
54+
paymentOption === PAYMENT_OPTIONS.CRYPTO ||
55+
value >= MIN_USD_CURRENCY_AMOUNT,
5356
{
54-
message: `${i18n._(MIN_USD_AMOUNT)} 0.5`,
57+
message: `${i18n._(
58+
MIN_USD_AMOUNT,
59+
)} ${MIN_USD_CURRENCY_AMOUNT.toLocaleString()}`,
5560
},
5661
),
5762
[CREDITS_AMOUNT]: z.coerce

web-marketplace/src/lib/normalizers/projects/normalizeProjectsWithMetadata.ts

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
UISellOrderInfo,
3232
} from 'pages/Projects/AllProjects/AllProjects.types';
3333
import { getPriceToDisplay } from 'pages/Projects/hooks/useProjectsSellOrders.utils';
34+
import { MIN_USD_CURRENCY_AMOUNT } from 'components/molecules/CreditsAmount/CreditsAmount.constants';
3435
import { CardSellOrder } from 'components/organisms/ChooseCreditsForm/ChooseCreditsForm.types';
3536
import { getDisplayAccount } from 'components/templates/ProjectDetails/ProjectDetails.utils';
3637

@@ -242,18 +243,33 @@ export const normalizeProjectWithMetadata = ({
242243
export const getCardSellOrders = (
243244
sanityFiatSellOrders: SanityProject['fiatSellOrders'],
244245
sellOrders: UISellOrderInfo[],
245-
) =>
246-
(sanityFiatSellOrders
247-
?.map(fiatOrder => {
248-
const sellOrder = sellOrders.find(
249-
cryptoOrder => cryptoOrder.id.toString() === fiatOrder?.sellOrderId,
250-
);
251-
if (sellOrder) {
252-
return {
253-
...fiatOrder,
254-
...sellOrder,
255-
};
256-
}
257-
return null;
258-
})
259-
.filter(Boolean) || []) as CardSellOrder[];
246+
) => {
247+
const cardSellOrders = (
248+
sanityFiatSellOrders
249+
? sanityFiatSellOrders.reduce((acc: CardSellOrder[], fiatOrder) => {
250+
const sellOrder = sellOrders.find(
251+
cryptoOrder => cryptoOrder.id.toString() === fiatOrder?.sellOrderId,
252+
);
253+
if (sellOrder) {
254+
acc.push({ ...fiatOrder, ...sellOrder } as CardSellOrder);
255+
}
256+
return acc;
257+
}, [])
258+
: []
259+
).sort((a, b) => a.usdPrice - b.usdPrice);
260+
261+
let hasMinUsdAmount = false;
262+
let currentSum = 0;
263+
264+
for (const order of cardSellOrders) {
265+
currentSum = Number(
266+
(currentSum + order.usdPrice * Number(order.quantity)).toFixed(2),
267+
);
268+
if (currentSum >= MIN_USD_CURRENCY_AMOUNT) {
269+
hasMinUsdAmount = true;
270+
break;
271+
}
272+
}
273+
274+
return hasMinUsdAmount ? cardSellOrders : [];
275+
};

web-marketplace/src/pages/BuyCredits/BuyCredits.utils.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export const getOrderedSellOrders = (
6262
filteredCryptoSellOrders: UISellOrderInfo[],
6363
): UISellOrderInfo[] => {
6464
return isCard
65-
? cardSellOrders.sort((a, b) => a.usdPrice - b.usdPrice)
65+
? cardSellOrders // already sorted in getCardSellOrders
6666
: filteredCryptoSellOrders?.sort(
6767
(a, b) => Number(a.askAmount) - Number(b.askAmount),
6868
) || [];

0 commit comments

Comments
 (0)