Skip to content

Commit

Permalink
chore: address reviewcomments
Browse files Browse the repository at this point in the history
  • Loading branch information
blushi committed Oct 9, 2024
1 parent 715096f commit d02db21
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
import { CreditsAmountHeader } from './CreditsAmount.Header';
import { CreditsAmountProps } from './CreditsAmount.types';
import {
formatFullSellOrder,
formatSellOrder,
getCreditsAmount,
getCreditsAvailablePerCurrency,
getCurrencyAmount,
Expand Down Expand Up @@ -50,7 +50,10 @@ export const CreditsAmount = ({
useFormContext<ChooseCreditsFormSchemaType>();
const setErrorBannerTextAtom = useSetAtom(errorBannerTextAtom);

const card = paymentOption === PAYMENT_OPTIONS.CARD;
const card = useMemo(
() => paymentOption === PAYMENT_OPTIONS.CARD,
[paymentOption],
);
const orderedSellOrders = useMemo(
() =>
card
Expand Down Expand Up @@ -126,7 +129,7 @@ export const CreditsAmount = ({
SELL_ORDERS,
orderedSellOrders.map(order => {
const price = getSellOrderPrice({ order, card });
return formatFullSellOrder({ order, card, price });
return formatSellOrder({ order, card, price });
}),
);
const formattedCreditsAvailable = i18n.number(_creditsAvailable);
Expand Down Expand Up @@ -179,7 +182,7 @@ export const CreditsAmount = ({
SELL_ORDERS,
orderedSellOrders.map(order => {
const price = getSellOrderPrice({ order, card });
return formatFullSellOrder({ order, card, price });
return formatSellOrder({ order, card, price });
}),
);
setMaxCreditsSelected(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ export const getCreditsAmount = ({
let currentCreditsAmount = 0;
let currencyAmountLeft = currentCurrencyAmount;
const sellOrders = [];
const creditPrecision = creditTypePrecision || 6;

for (let i = 0; i < orderedSellOrders.length; i++) {
const order = orderedSellOrders[i];
for (const order of orderedSellOrders) {
const price = getSellOrderPrice({ order, card });
const quantity = Number(order.quantity);
const orderTotalAmount = quantity * price;
Expand All @@ -69,26 +69,24 @@ export const getCreditsAmount = ({
(currencyAmountLeft - orderTotalAmount).toFixed(6),
);
currentCreditsAmount += quantity;
sellOrders.push(formatFullSellOrder({ order, card, price }));
sellOrders.push(formatSellOrder({ order, card, price }));
if (currencyAmountLeft === 0) break;
} else {
currentCreditsAmount += currencyAmountLeft / price;
sellOrders.push({
sellOrderId: order.id,
quantity: (currencyAmountLeft / price).toFixed(
creditTypePrecision || 6,
),
bidPrice: !card
? { amount: String(price), denom: order.askDenom }
: undefined,
price: card ? price * 100 : undefined, // stripe amounts should be in the smallest currency unit (e.g., 100 cents to charge $1.00)
});
sellOrders.push(
formatSellOrder({
order,
card,
price,
quantity: (currencyAmountLeft / price).toFixed(creditPrecision),
}),
);
break;
}
}
return {
currentCreditsAmount: parseFloat(
currentCreditsAmount.toFixed(creditTypePrecision || 6),
currentCreditsAmount.toFixed(creditPrecision),
),
sellOrders,
};
Expand All @@ -110,8 +108,7 @@ export const getCurrencyAmount = ({
let creditsAmountLeft = currentCreditsAmount;
const sellOrders = [];

for (let i = 0; i < orderedSellOrders.length; i++) {
const order = orderedSellOrders[i];
for (const order of orderedSellOrders) {
const price = getSellOrderPrice({ order, card });
const quantity = Number(order.quantity);

Expand All @@ -121,20 +118,20 @@ export const getCurrencyAmount = ({
(creditsAmountLeft - quantity).toFixed(creditTypePrecision || 6),
);
currentCurrencyAmount += quantity * price;
sellOrders.push(formatFullSellOrder({ order, card, price }));
sellOrders.push(formatSellOrder({ order, card, price }));

if (creditsAmountLeft === 0) break;
} else {
// Take only remaining credits
currentCurrencyAmount += creditsAmountLeft * price;
sellOrders.push({
sellOrderId: order.id,
quantity: String(creditsAmountLeft),
bidPrice: !card
? { amount: String(price), denom: order.askDenom }
: undefined,
price: card ? price * 100 : undefined, // stripe amounts should be in the smallest currency unit (e.g., 100 cents to charge $1.00)
});
sellOrders.push(
formatSellOrder({
order,
card,
price,
quantity: String(creditsAmountLeft),
}),
);
break;
}
}
Expand All @@ -154,15 +151,19 @@ type GetSellOrderPriceParams = {
export const getSellOrderPrice = ({ order, card }: GetSellOrderPriceParams) =>
card ? (order as CardSellOrder).usdPrice : Number(order.askAmount);

type FormatFullSellOrderParams = { price: number } & GetSellOrderPriceParams;
export const formatFullSellOrder = ({
type FormatSellOrderParams = {
price: number;
quantity?: string;
} & GetSellOrderPriceParams;
export const formatSellOrder = ({
order,
card,
price,
}: FormatFullSellOrderParams) => {
quantity,
}: FormatSellOrderParams) => {
return {
sellOrderId: order.id,
quantity: order.quantity,
quantity: quantity || order.quantity,
bidPrice: !card
? { amount: String(price), denom: order.askDenom }
: undefined,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ export const useGetProject = () => {
(projectsWithOrderData?.[0]?.sellOrders || []).filter(
sellOrder => sellOrder.seller !== wallet?.address,
),
[projectsWithOrderData],
[projectsWithOrderData, wallet?.address],
);

const cardSellOrders = useMemo(
Expand Down

0 comments on commit d02db21

Please sign in to comment.