[SHOPTIME-3523] Home > BestSeller List (bestSeller.lge) > 할인 후 금액만 노출되는 현상
[수정파일] 1. usePriceInfo.js 2. helperMethods.js [수정내용] 1. 국가 마다 숫자 처리하는 문법이 달라서 국가별로 처리 가능한 함수 추가
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
import React, { useMemo } from "react";
|
||||
|
||||
import { useSelector } from "react-redux";
|
||||
|
||||
import { parseLocalizedNumber } from "../utils/helperMethods";
|
||||
|
||||
const priceInfoKeys = [
|
||||
"originalPrice",
|
||||
"discountedPrice",
|
||||
@@ -11,6 +15,7 @@ const priceInfoKeys = [
|
||||
];
|
||||
|
||||
export default function usePriceInfo(priceInfo) {
|
||||
const countryCode = useSelector((state) => state.common.httpHeader.cntry_cd);
|
||||
const parsedPriceInfo = useMemo(() => {
|
||||
if (!priceInfo) {
|
||||
return;
|
||||
@@ -33,11 +38,10 @@ export default function usePriceInfo(priceInfo) {
|
||||
promotionDate,
|
||||
} = processedPriceInfo;
|
||||
|
||||
const originalPriceNum = parseFloat(
|
||||
originalPrice.replace(/[^0-9.-]+/g, "")
|
||||
);
|
||||
const discountedPriceNum = parseFloat(
|
||||
discountedPrice.replace(/[^0-9.-]+/g, "")
|
||||
const originalPriceNum = parseLocalizedNumber(originalPrice, countryCode);
|
||||
const discountedPriceNum = parseLocalizedNumber(
|
||||
discountedPrice,
|
||||
countryCode
|
||||
);
|
||||
let discountRateNumeric = parseFloat(discountRate.replace("%", ""));
|
||||
|
||||
|
||||
@@ -465,3 +465,33 @@ export const formatLocalDateTime = (date) => {
|
||||
|
||||
return "";
|
||||
};
|
||||
|
||||
export const parseLocalizedNumber = (numberString, countryCode) => {
|
||||
// 유럽식: 1.499,00 -> 1499.00
|
||||
if (
|
||||
(numberString.includes(".") &&
|
||||
numberString.includes(",") &&
|
||||
countryCode === "DE") ||
|
||||
countryCode === "GB"
|
||||
) {
|
||||
return parseFloat(numberString.replace(/\./g, "").replace(",", "."));
|
||||
}
|
||||
// 미국식: 1,499.00 -> 1499.00
|
||||
if (
|
||||
numberString.includes(",") &&
|
||||
numberString.includes(".") &&
|
||||
countryCode === "US"
|
||||
) {
|
||||
return parseFloat(numberString.replace(/,/g, ""));
|
||||
}
|
||||
// 러시아식: 1 499,00 -> 1499.00
|
||||
if (
|
||||
numberString.includes(" ") &&
|
||||
numberString.includes(",") &&
|
||||
countryCode === "RU"
|
||||
) {
|
||||
return parseFloat(numberString.replace(/\s/g, "").replace(",", "."));
|
||||
}
|
||||
|
||||
return parseFloat(numberString);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user