[SHOPTIME-3523] Home > BestSeller List (bestSeller.lge) > 할인 후 금액만 노출되는 현상

[수정파일]
  1. usePriceInfo.js
  2. helperMethods.js

[수정내용]

  1. 국가 마다 숫자 처리하는 문법이 달라서 국가별로 처리 가능한 함수 추가
This commit is contained in:
고동영
2024-08-30 16:34:19 +09:00
parent b286624c3d
commit e7fa331052
2 changed files with 39 additions and 5 deletions

View File

@@ -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("%", ""));

View File

@@ -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);
};