Files
shoptime/com.twin.app.shoptime/src/hooks/usePriceInfo.js
2024-10-23 15:26:05 +09:00

69 lines
1.6 KiB
JavaScript

import React, { useMemo } from "react";
import { useSelector } from "react-redux";
import { parseLocalizedNumber } from "../utils/helperMethods";
const priceInfoKeys = [
"originalPrice",
"discountedPrice",
"rewardFlag",
"discountAmount",
"discountRate",
"promotionCode",
"promotionDate",
];
export default function usePriceInfo(priceInfo) {
const countryCode = useSelector((state) => state.common.httpHeader.cntry_cd);
const parsedPriceInfo = useMemo(() => {
if (!priceInfo) {
return;
}
const splittedPriceInfo = priceInfo.split("|").map((item) => item.trim());
const processedPriceInfo = priceInfoKeys.reduce((objcet, key, index) => {
objcet[key] = splittedPriceInfo[index];
return objcet;
}, {});
let {
originalPrice,
discountedPrice,
rewardFlag,
discountAmount,
discountRate,
promotionCode,
promotionDate,
} = processedPriceInfo;
const originalPriceNum = parseLocalizedNumber(originalPrice, countryCode);
const discountedPriceNum = parseLocalizedNumber(
discountedPrice,
countryCode
);
let discountRateNumeric = parseFloat(discountRate.replace("%", ""));
if (discountedPriceNum >= originalPriceNum) {
originalPrice = discountedPrice;
discountRateNumeric = null;
discountRate = null;
}
return {
originalPrice,
discountedPrice,
rewardFlag,
discountAmount,
discountRate,
discountRateNumeric,
promotionCode,
promotionDate,
};
}, [priceInfo]);
return parsedPriceInfo;
}